Term Project Preview
Today in lecture we will discuss the term project, so that you can get
started on the hardest part -- deciding what you will do! Some things to
consider:
- Start thinking about your term project now!!!!
- Review the Term Project Gallery!!!
-
You can do most anything you wish so long as it clearly demonstrates
your programming skills.
-
Choose something you enjoy, something you care about,
something you can be proud of, something that can help
you both academically and professionally.
-
Project option 1: Sudoku This semester, we will be writing
Sudoku as the guided term project. "Guided" is used in a loose sense
here. Essentially, by choosing this option, you will have some general
guideance on how to implement different features, and what features
you should work on. There will also be grade guarantees if you
implement certain features. Additionally, the TAs be more prepared to
help you with Sudoku than a custom project, so you may be able to
recieve more help on Ed and in office hours. Some important notes
about Sudoku:
-
Sudoku and custom projects will be held to the same standards when
grading. However, we hope that having extra supports and giving
you a concrete path for what features you should implement helps
make the project less stressful, especially on the condensed
summer timeline.
-
There are plenty of interesting additional features you can add to
Sudoku. This project has enough room to grow that you can
absolutely achieve an A by adding extra features. However, it is
also a non-risky project, because the base game is not too
challenging to implement, and there are plenty of smaller features
you can choose to attempt should a more complicated plan not work
out.
-
See the lightning video from F22 TP season to get some ideas of what you can do with Sudoku!
-
Project option 2: Custom Project You will also have the option
to choose your own project to pursue. If you choose this option, you
must discuss your project idea with Lauren and get it approved before
the final exam. Some important notes to keep in mind when choosing a
project:
-
Think big! It's easier to prune an overly-large
project idea than to grow an overly-small project idea.
-
Focus both on user experience and on algorithmic
sophistication, as both factor heavily in your tp grade.
-
While many of you will likely make some kind of game, and that's
fine, it is by no means required or even encouraged. You can make
anything, so long as it has a rich interactive user
experience and at least one interesting algorithmic
aspect to the solution.
-
In any case, avoid mini-games. Make one big lovely project
instead of gluing together a bunch of smaller ones.
-
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.
- You can use external modules (with restrictions), but they are
definitely not required. You can make a lovely term project
and earn a very high grade using nothing more than what
is in the course notes.
- Without explicit permission from the instructor (which is
unlikely), you cannot use any robots or other hardware in your term
projects. 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.
- 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,...
- Complex ML and AI modules, including:
pytorch, tensorflow, keras, ...
- Multiple threads, processes, or computers
(so no webapps, cloud apps, server-based apps,
sockets, ...)
- Any language except Python.
- Allowed (with tech demo) 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)
- pyaudio, aubio, pydub, pygame (strictly for audio)
- cloud API's (twitter, ibm watson, twilio, ...)
- Other Modules:
For any module not on either list above, please
ask on Ed or at instructor OH if it is allowed
before MVP or disallowed until after MVP.
- Have fun! Really!!!
Helpful Resources
TP Guide on Features:
While this guide is slightly outdated, it still highlights some important
ideas about variations in complexity based on implementation.