CMU 15-112: Fundamentals of Programming and Computer Science
Class Notes: Term Project Preview

Here's some information so that you can get started on the hardest part -- deciding what you will do! Some things to consider:
Note that these are somewhat subject to change until Wednesday but not by much

  1. Start thinking about your term project now!!!!

  2. Review the Term Project Gallery!!!

  3. You can do most anything you wish so long as it clearly demonstrates your programming skills.

  4. Choose something you enjoy, something you care about, something you can be proud of, something that can help you both academically and professionally.

  5. Think big! It's easier to prune an overly-large project idea than to grow an overly-small project idea.

  6. Focus both on user experience and on algorithmic sophistication, as both factor heavily in your tp grade.

  7. While many of you will likely make some kind of game, and that's fine, it is by no means required. You can make anything, so long as it has a rich interactive user experience and at least one interesting algorithmic aspect to the solution.

  8. In any case, avoid mini-games. Make one big lovely project instead of gluing together a bunch of smaller ones.

  9. Also, avoid generative art or music. While these are somewhat popular projects historically, they rarely result in successful outcomes and so should be avoided. It is very hard for us to grade a generative art or music project precisely, since they are so deeply subjective. Plus, they don't really have much of a user experience in most cases, and we put great value on a rich interactive user experience. Also, as we will discuss, projects involving sound (such as rhythm games or voice changers) are disallowed because of their extreme difficulty and risk of failure.

  10. We do not recommend using external modules/libraries/tech. You can make a lovely term project and earn a very high grade using nothing more than what is in the course notes. By default, you may not use any of these things until you have reached MVP status (i.e. a minimal passing project) and thus you must be able to reach MVP without it. If you desperately wish to ignore our advice and use external tech before MVP, you will need to demo its full extent and receive approval from Mike or Sara no later than this Sunday (keep reading for more details).

  11. Given the realities of working remotely, you cannot use any robots or other hardware in your term projects this semester. The one exception is that you may try to use game controllers as input devices if you are so inclined, so long as all of your code runs entirely on your laptop (and not on an external device) and in Python.

  12. Also, based on hard lessons learned by previous 112 students, some modules are explicitly disallowed until after you reach MVP (Minimum Viable Product/Project):
    • Disallowed until after MVP:
      • All graphics and animations except tkinter-with-cmu-112-graphics including: tkinter-without-cmu-112-graphics, kivy, pygame, blender, opengl, panda3d, vpython,... (note that this includes tk/tkinter widgets that you may find online like text boxes, etc. You will receive more points by creating these yourself, from scratch.)
      • Complex ML and AI modules, including: pytorch, tensorflow, keras, ...
      • Multiple threads, processes, or computers (so no webapps, cloud apps, server-based apps, sockets, ...)
      • pyaudio, aubio, pydub, pygame (strictly for audio)
      • Any language except Python.
    • You may do a tech demo on Sunday and seek approval with Mike or Sara for these before MVP:
      • PIL/Pillow (beyond the course notes)
      • numpy, scipy, matplotlib, pandas, openpyxl, scikitlearn, nltk, biopython
      • opencv, openpose
      • requests, beautifulsoup, selenium
      • sqllite (and other sql and no-sql database modules)
      • cloud API's (twitter, ibm watson, twilio, ...)
    • Other Modules:
      For any module not on either list above, please ask on piazza or at faculty OH if it is allowed before MVP (with tech demo) or disallowed until after MVP.

  13. Have fun! >>(o u o)<<