PSI course curriculum

From Inforail
Jump to: navigation, search
  • Finding a problem in search of a solution
    • Choose a problem that is relevant in the modern world
    • Choose a problem you have the capacity to solve
    • Avoiding solution in search of a problem cases
  • Devising the requirements for the new system
    • Observing people using existing solutions
    • Defining user classes, their preferences and their agenda
    • Interviewing users
    • Understanding what's wrong with the current solutions
    • Making a list of objectives for the new system
    • Formal description of the requirements
      • Types of representations (graphical, text, etc)
      • Avoiding conflicting requirements
      • Tracking the evolution of requirements
  • Devising the WBS (work-breakdown structure)
    • Split the system into components
    • Estimate the complexity of each component
    • Estimate the time needed to develop each component
    • Define the order in which components are going to be developed
    • Review the estimates at each milestone and verify how accurate they were; update the estimates for the remaining parts of the system
  • Devising the user interface
    • Question-oriented UI design
    • Accessibility for people with disabilities
    • DPI-awareness


  • Performance metrics (feature points, classes, functions, lines of code, etc)
  • Localization
  • Multiple storage back-ends
  • Logging
  • Installers
  • Cross-platform compatibility
    • OS (Windows, Solaris)
    • hardware (ex: x86, x64)
  • Integrating third-party components
    • Taking into account the license of the component (ex: BSD, GPL, etc)
  • Choosing a license for your release
  • Creating a web-presence
    • Logo
    • Slogan
    • Site
    • Social networking
  • Documentation
    • End users
    • Developers (ex: Doxygen)
  • Copy-protection (registration numbers, keygens, etc)
  • Energy efficiency (reasonable use of power sources, ex: on a laptop)
  • Automatic updates
    • Notifications
    • Auto-download and install
  • Selling software
  • Debugging techniques

Other ideas (imported from List of PSI labs)