CS 111 Final Project Instructions
Reading
The material on recursion, loops, and dictionaries should be especially relevant, but you may want to review any part of the class material that is relevant to your chosen project design.
About
This final project works a bit differently than most projects. In addition to turning in code that will be automatically graded, you will be presenting on your code and project design in class. Also, the final project is an individual project: you are NOT allowed to work with a partner.
For your final project, you must produce a program that brings together several core concepts from the course: conditionals, loops and/or recursion, and file input/output, at a minimum. You will present your results and code in class, submit your code on the last day of classes, and submit revisions by the end of finals period.
Project Timeline
- Checkpoint: due 4/27 at 11 p.m.
- Presentation: in class on 5/2; slides due by noon on 5/1
- Initial Submission: due 5/3 at 11 p.m.
- Revisions Due: 5/11 at 4 p.m. (NO extensions without dean approval)
Project Checkpoint (10 points)
You must submit a preliminary version of your project in
Potluck in the
finalProjectCheckpoint
section on 4/27 with core features 1-3 (from
the list in the next section) and docstrings for all function
definitions. See the checkpoint instructions for a detailed
rubric. This means you
must have the basics of your code set up, but you do not have to actually
include the main recursion or loop code yet. For example, if your project
plan is to load and analyze some data using the CSV module, for the
checkpoint you might load the data and just print the number of rows in
the file, without doing the data analysis yet. Or if your project is a
turtle drawing project where you plan to draw a complex pattern with
colors and sizes determined by file input, for the checkpoint you might
read the input file to determine a color and just draw a simple test
shape. Your code for this checkpoint will have to deal with empty input
files as specified above. You will get the usual automatic feedback from
Potluck.
Project Requirements (40 points)
You can design your own project to showcase the skills you have learned. 40% of your final project grade will be based on meeting the following requirements (by the final deadline):
- Your code must run without crashing.
- Core Feature 1: your project must involve reading data from a file.
- The file can be in JSON, text, or CSV format.
- Your datafile must be named
input.txt
,data.json
, ordata.csv
. - Your program must read the file using open within a with-statement.
- Your program should run without error even if the file it reads from doesn't contain data. You can assume that the datafile is properly formatted.
- Core Feature 2: your project must use one of the following (even when
there is no data to read from file):
turtle
graphics, including one call toforward
orbackward
wavesynth
audio, including one call toaddNote
oraddBeat
- the
csv
module, including one call tocsv.DictReader
- the
json
module, including one call tojson.load
- Core Feature 3: your project must use at least one conditional.
- Core Feature 4: your project must use at least one nested loop OR
recursion.
- List comprehensions do not count towards this goal.
- Your nested loop should be appropriate to your project (i.e., not easily rewritten as a single loop). In particular, using a loop to go through the keys of a dictionary and find one that matches some variable you're looking for is unnecessary, and you will lose points if this is your only nested loop.
- If your code uses the input function, it must run to completion (and call your required function) if the user types the digit 1 for every input prompt. This is so that our testing code can run your code without getting stuck in an infinite loop.
- All of your function definitions must include docstrings.
To earn these points, submit your final project on
Potluck under the finalProject
section by 5/3, and if necessary, complete revisions by 4 p.m. on
5/11. The final submission instructions have a detailed
rubric.
Project Presentation (40 points)
You will present your final project in lecture on the last day of class, 5/2. This is worth 40% of your final project grade. Your presentation must:
- Be 2.5 minutes long. We will have a hard cutoff at 3 minutes.
- Use 2 slides.
- The first slide must include an example result from your program (an image, an audio track, a data analysis result, an example of interacting with the program, etc).
- The second slide must Describe how your datafile is used by your program and show an example of part of the data that your program expects.
Your slides must be submitted by noon on 5/1 by uploading them to the final presentations Google Drive folder for your lecture section:
as a PDF or Google Slides. For efficiency, everyone will present on the classroom computer.
You may record a video of your presentation instead of presenting live, and we encourage you to do this if it seems preferable, since this will allow more time per person in class. If time permits, we may play some submitted videos for the class so that others can see your work. If you plan to submit a video, you must fill out this form by 4/28 so that we can plan out the in-class presentations.
To submit your video, upload it (or a text file with a link to it if you want to put it on a hosting service like YouTube) to the shared drive corresponding to your lecture:
- Prof. Anderson's lecture 1 at 8:30 a.m.
- Prof. Anderson's lecture 2 at 9:55 a.m.
- Prof. Lee's lecture 3 at 12:45 p.m.
- Prof. Turbak's lecture 4 at 2:10 p.m.
Your video must be submitted by 12:00 p.m. noon on Monday, May 1st, which is the same deadline for the presentation slides.
You will receive a feedback on your presentation by 5/8. We will indicate if there are major issues with your project then, so that you can submit a revision for your code (via Potluck) to address them if you need to.
Project Ambition (10 points)
The remaining 10% of your final project will be based on our assessment of the ambition and depth of your project. We expect you to put in 6-10 hours of work on your project. We will judge this based on your project presentation, in tandem with reviewing your final code submission.
How to Submit:
The Checkpoint
- Submit the project checkpoint on Potluck by 11 p.m. on April 27.
The Presentation
- Upload slides for your presentation to the shared folder for your lecture section ( Lec 1, Lec 2, Lec 3, Lec 4 ) by 12 p.m. noon on May 1st.
- Present your project in your lecture section on May 2nd.
- OR, if you are submitting a video instead of doing an in-class presentation, fill out this form by 11 p.m. April 28th and submit your video by 12 p.m. noon on May 1st, by uploading it (or a text file with a link to it hosted somewhere) to the shared folder for your section ( Lec 1 Lec 2 Lec 3 Lec 4 ).
- Although you can take an extension on the online submission deadlines for the checkpoint and/or the code submission, your code will need to be ready in time to present it in lecture (or to submit a video), and you cannot take an extension on the in-class presentation except in extraordinary circumstances.
The Final Code
- Turn in your completed code on Potluck by 11 p.m. on May 3rd.
- Turn in any required revisions by 4 p.m. on May 11th.
Dataset Sources
Here are some sites with datasets that you might be interested in using:
Remember that your program will need to work even with an empty data
file, and that the first data file it looks for must be named
inputs.txt
, data.txt, or
data.json`. If you want to analyze a
multi-file dataset, just make sure your program doesn't crash (and still
uses one of the required data reading functions, or a turtle or audio
function) even if the files aren't present.
Examples
The final project code instructions contain examples of what a completed final project might look like, but remember that there is no single correct answer here.