For your final project, I expect you to use many of the concepts we’ve learned in class. At a minimum, I would expect to see
1) At least one pointer – ideally, also an array or string, in addition to a more obvious pointer.
2) At least two functions (including main())
3) Conditionals (if/else if/else)
4) Repetition structures (loops: for, while)
5) Documentation of some kind; a couple of paragraphs or nicely-formatted bulleted lists in a Word doc is fine. If someone else were picking up this program to run it, what would they need to know? If someone were planning to build on it for a future project, what pieces does it most need, and what can you tell them that would help? (Obviously, there will be comments in your code, so hopefully the documentation can stay fairly short.)
This final project is a bridge between being in class, with all of the constraints that come with class work, and being entirely on your own recognizance as a C programmer. As such, you are allowed to use concepts we haven’t explicitly covered, anything from the C Standard Library, and online documentation other than Stack Overflow. Cite your sources (a link in comments is fine, along with a comment about what you changed). I still expect the vast majority of this work to be your own—this isn’t free license to go see how someone else wrote the program and borrow from them with new variable names—but you are allowed to supplement your own work, with citations.
I don’t expect you to use concepts, tools, or headers we haven’t gone over in class, but you are now allowed to, if you want.
I expect your program to be between 100 and 500 lines of code, just as a guideline–if it’s getting longer than that upper bound, you are probably working too hard and might consider scaling back a bit. (Unless you’re having fun. I’m happy to grade up to a thousand-line program, if you’re up to writing it; I just don’t want you to bog yourself down unnecessarily.) If you do something really intricate/complicated in fewer than 100 lines, I’ll accept it; on the rubric, I refer to that as “sufficient complexity that a shorter program is reasonable.”
Your project should be complete and production-ready by December 10th at 6pm (the end of our assigned exam period): there should be good interaction with the user (helpful prompts), and it should follow the style guide for our class, with readable, well-commented code.
Note: I’d like to be able to share your projects with future students. If you don’t want me to share your project, or you don’t mind my sharing it as long as I remove your name, please let me know.
Possible projects, brainstormed by previous students:
6) War (card game)
7) High-low (card game)
8) A calculator
9) 20 questions (requires teaching yourself file in/out)
10) Text-based adventure/interactive fiction game like Zork (requires an awful lot of motivation, also file i/o; even a fairly simple one will be more than 500 lines)CIT-145
Final Project – Rubric
Final project submission:
Program uses at least one pointer
(Extra points for using several pointers/arrays/strings and doing it well.)
Program is user-friendly (helpful prompts, does reasonable input validation with helpful error messages, exits gracefully)
Code follows course style guide
Program uses repetition structures well
Program uses conditionals well
Program uses multiple functions, no global variables
Program has accompanying documentation
Code is 100-500 lines (no penalty for longer programs) or of sufficient complexity that a shorter program is reasonable