Sample Projects

  1. Do a comparative analysis of two similar specification languages, such as Z and VDM.
  2. Do a specification of a system of significant size in a specification language such as Z, Statecharts, or Larch.
  3. Report on the state-of-the-art of the use of a given style of formal specification language.
  4. Report on the state-of-the-art of requirements elicitation.
  5. Report on the state-of-the-art on execution (animation) of a formal specification language.
  6. Generate initial specifications for a software system using learning techniques.
  7. Find, install, and perform a significant exercise with a public domain specification tool (for instance, a theorem prover or proof assistant for Z-like or algebraic specifications).
  8. Report on the state-of-the-art in handling time as part of a formal specification.
  9. Do a critical analysis of several of the reported success stories in formal specification.
  10. Do a critical analysis of the object-oriented versions of a well-known formal specification language.
  11. Do a comparative analysis of two similar design methodologies, such as Shlaer-Mellor and OMT.
  12. Report on the state-of-the-art in producing designs for (a) concurrent, (b) real-time, or (d) distributed systems.
  13. Do a critical analysis of the role of source code in several recent efforts in software architecture.
  14. Report on the state-of-the-art in symbolic model checking as applied to software.
  15. Extend Murphy, Notkin and Lan's analysis of call graph generators for C by: (a) considering other extractors, in particular commercial ones or (b) considering another language.
  16. Produce a reasonable dynamic call graph extractor for C (that is, one that extracts calls during program execution); if such an extractor is found publicly, then perform experiments to compare the results to the Murphy, Notkin, Lan results.
  17. Design and implement a set of regression tests and a supporting testing harness for the CSE401 compiler.
  18. For a complex abstract data structure, define the formal specification and show that a given implementation satisfies that specification.
  19. Find a publicly available test coverage tool and apply it aggressively to several systems, reporting on the strengths and weaknesses of the tool.
  20. Report on the state-of-the-art of testing object-oriented programs.
  21. Build a version of grep and use it to analyze various usage patterns of different users of grep.
  22. Use reflexion models and a repository of versions to track the evolutionary history of a software system.
  23. Produce a report on the current understanding of the costs of the software lifecycle (percentages for testing, design, etc.); perhaps determine whether or not these are stable across different kinds of software (e.g., real-time, contract, shrinkwrap, etc.)
  24. Produce a report on the state-of-the-art in software walkthroughs, inspections, etc.
  25. Provide an in-depth analysis of the version history of one or more public domain pieces of software. You might focus on issues such as the "shape" of the version history (if a tree-structured history is kept), on an analysis of the kinds of changes applied, etc.
  26. Report on the state-of-the-art in 3D visualization of software.
  27. Report on the state-of-the-art in software configuration management tools.
  28. Read "Microsoft Secrets" by Cusumano and Selby and evaluate some aspects of it in terms of published material in software engineering.
  29. Do a comparative analysis of OLE, OpenDoc, and CORBA. (Or perhaps two of the three.)
  30. Determine the state-of-the-art in technical solutions to the Year 2000 program, as an example of a form of software evolution.
  31. Analyze and report on the definition and use of PCTE, the Portable Common Tool Environment.
  32. Analyze and report on the definition and use of CDIF, a common interface definition for CASE tools.
  33. Clearly characterize several forms of software reuse and report on the state-of-the-art technology for those approaches.
  34. Peform your own analysis of the software-related issues of the Denver Airport problems.
  35. Analyze one or more years of RISKS Digest looking for situations in which the proper application of software engineering principles still led to system failures.