This list contains the subjects that have to be discussed in your final report. The more items are covered, the better.
Note that the nature of some projects may require adjustments to this list (ex: some projects may not have a user interface, no GUI, no CLI, maybe just an API), so feel free to deviate from the list within reasonable bounds.
- Description of the problem
- Why you chose to solve this specific problem, ex:
- references to studies that conclude it is very important to handle it
- you were explicitly asked by customers or friends
- your intuition made you do it, etc
- Overview of existing solutions
- point out what is wrong with them
- make it clear how your solution makes the world better, by not repeating the mistakes of others, or by repeating them better :-)
- Include the formal list of requirements for the new system
- Explain the rationale behind each requirement (by making associations with excerpts from the studies or people interviews from the previous point)
- Describe how you broke the system down into smaller components
- Explain the role of each component
- And how it interacts with other components
- Estimated time for the implementation of the project
- Provide estimates for each component
- Explain how the estimates were computed
- Discuss the interface of your system and the guidelines you've used when devising it (ex: be consistent, be simple, less is more, use native widgets, etc)
- Include preliminary sketches, pointing out the role of each widget (by making associations with your requirements)
- Which GUI toolkit you used, why?
- What is the language of choice? Why?
- Which third-party modules does the system rely on?
- explain how those modules were chosen (ex: licensing conflicts, performance, features, cross-platform compatibility, etc)
- Which storage formats are used? Why?
- Which communication protocols are used? Why?
- Which algorithms are used? Why?
- Discuss the delta between your estimates and the actual time of development
- try to explain why it happened
- describe how similar problems will be avoided in the future
- Discuss the future of the project
- new features
- expected bugs
- how it can be extended to be applied in other fields, etc.
- Explain how this project makes the world a better place
- Explain how working on this project made you a better person
You can rely on these sources if you need additional information about what else to write, which things to pay attention to, etc.
While every person develops a generic set of surviving skills (otherwise they're eaten by lions), some people additionally develop a specific skill, continuously optimizing it. That's how some of us become archers, melee fighters, dark magicians or light magicians.
When it comes to specialization within the PSI course, you can choose one of the following paths:
- Eye candy baker - make a GUI that is very pretty
- Performance wizard - make a project that is designed to run very fast (or use very little memory, or has a very small size, etc; choose whatever metric you are interested in)
- Usability guru - a project optimized to provide the best user experience
- Überplanner - devise the most detailed and the most consistent specs
- Businessman - create a complete solution, with a manual, a logo and a web-presence, ready for the masses
- Scribe - provide comprehensive documentation, employ some unusual methods of representing information in a form that is easy to understand
- Xenomorph - create something so unusual, so paradigm-shifting, that you could be regarded as the founder of a new field
Specialization gives you bonus points and relaxes the requirements for the other parts of the project. For example, if your requirements document is very detailed and well-written (in accordance with the canons we've discussed in class), you can get the maximum grade even if you did not manage to implement most of the requirements.
Meta combo bonuses are a certain way to excel in this assignment. For example, an eye-candy baker who is also a usability guru is automatically promoted to a +45 godlike level.
Other things that give you extra credit
- Provide references to studies, white-papers, articles or forum discussions that you relied on when making decisions in your project
How to fail
There are some things that must not happen, and they are:
- copy/paste text from other sources and submit it as your own
- submit information that is below the level of a UTM student who is about to graduate the university (ex: "la aceasta lucrare de laborator noi am efectuat lucrarea de laborator" :-)
(this list will probably be extended)
p.s. don't forget to use a spelling checker