Skip to content

Commit c1c8f6d

Browse files
committed
Add final project
1 parent dd85655 commit c1c8f6d

File tree

5 files changed

+81
-88
lines changed

5 files changed

+81
-88
lines changed

final-proj/Kali.png

923 KB
Loading

final-proj/README.md

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,27 @@
1-
# Assignment 4: Final Project!
1+
# Assignment 3: Final Project!
22

33
## The Proposal
44

5-
*Due: Tuesday, Week 8 (February 26th) at 11:59:59 PM*
5+
*Due: Wednesday, Week 8 (February 26th) at 11:59:59 PM*
66

7-
![The Proposal](https://raw.githubusercontent.com/stanfordpython/python-assignments/master/assign4/proposal.png)
7+
<p align="center">
8+
<img src="proposal.png" style="max-width: 100%" alt="A person dressed in a unicorn head, proposing to another person wearing a unicorn onesie." />
9+
</p>
810

911
As discussed in class, the purpose of the project proposal is for the course staff to ensure that the project is well-scoped and incorporates Python in some meaningful way. We can also suggest useful packages for your project. The more detailed your proposal, the more we can assist you by pointing you away from common pitfalls and towards feasible solutions.
1012

11-
Submit a project proposal using [this form](https://goo.gl/forms/dYe4tkL6TWxslmkY2). Or, if you prefer to edit more freely, you can use [`template.md`](https://github.com/stanfordpython/python-assignments/blob/master/assign4/template.md) as a starting template for your proposal. You can access the raw markdown [here](https://raw.githubusercontent.com/stanfordpython/python-assignments/master/assign4/template.md) or just copy-paste into a Google Doc to edit. See [`sampleproposal.md`](https://github.com/stanfordpython/python-assignments/blob/master/assign4/sampleproposal.md) for an example of what we're looking for. Additionally, we've added some ideas to [`ideas.md`](https://github.com/stanfordpython/python-assignments/blob/master/assign4/ideas.md) if you're stuck.
13+
Submit a project proposal using [this form](https://forms.gle/nYR7wvhEa6K7m8A79). Or, if you prefer to edit more freely, you can use [`template.md`](template.md) as a starting template for your proposal. See [`sampleproposal.md`](https://github.com/stanfordpython/python-assignments/blob/master/assign4/sampleproposal.md) for an example of what we're looking for. Additionally, we've added some ideas to [`ideas.md`](ideas.md) if you're stuck.
1214

13-
In order to submit the proposal, fill out our [Google Form](https://goo.gl/forms/dYe4tkL6TWxslmkY2) with the appropriate content. When we review your proposals, we'll look at the most recently added proposal.
15+
In order to submit the proposal, fill out our [Google Form](https://forms.gle/nYR7wvhEa6K7m8A79) with the appropriate content. When we review your proposals, we'll look at the most recently added proposal.
1416

1517
*Note: you can use late days on the project proposal, but hopefully you will complete the proposal on time so that we can get feedback to you sooner.*
1618

1719
## The Project
1820

19-
*Due: Tuesday, Week 10 at 4:20:00 PM*
21+
*Due Dates:*
22+
23+
* *Presentation: Monday, Week 10 (March 9th) at 3pm*
24+
* *Code & Writeup: Wednesday, Week 10 (March 11th) at 11:59:59pm*
2025

2126
Implement the project you have proposed, incorporating our feedback. You are free to begin working on the project before you hear from us.
2227

@@ -42,7 +47,7 @@ Other general sections of a README usually include, but are not limited to: know
4247

4348
There is no upper or lower limit to the length of the README. We've had successful README's in the past that are as short as a few hundred words, or some much longer, with the longest being around 2000 words. Regardless, the majority of the writeup should focus on the technical overview. You're free to write fewer or more words as you see fit, but remember that we are reading your README to understand what your project does.
4449

45-
*Video Supplement to README.*
50+
#### Video Supplement to README
4651

4752
If you are comfortable with it, record a video of your final project in action and include it in the final submission. We'll watch this video to get a sense for what your project does. It can be a fun way to immortalize the work you've done and show us a working demo! You should narrate what we're seeing in the video, describing the features and technical overview that would otherwise be in the README.
4853

@@ -54,7 +59,7 @@ Mechanically, you can [record your screen on a Mac with QuickTime Player](https:
5459

5560
For this assignment, we are not explicitly providing any code to you.
5661

57-
You are free to use any builtin modules, publicly available code, or any code you find online, as long as you cite it appropriately. We have a pretty buggy version (`campy`) of the Stanford graphical libraries (e.g. `GOval`, `GRect`) in Python if you would like to contribute or test it out. Google and StackOverflow are your friends! The chances are high that someone has built a library to help with your project, so make sure to ask us or search before reinventing the wheel!
62+
You are free to use any builtin modules, publicly available code, or any code you find online, as long as you cite it appropriately. Google and StackOverflow are your friends! The chances are high that someone has built a library to help with your project, so make sure to ask us or search before reinventing the wheel!
5863

5964
You may *not* use proprietary code, code which requires a paid license, anything which promotes illegal activity, anything which violates Stanford policies, etc.
6065

@@ -64,7 +69,7 @@ The project *proposal* grade will be assessed purely on completion. Did you do i
6469

6570
Your final project grade will be assessed on both functionality and style.
6671

67-
Functionality will be determined holistically using a combination of difficulty of project and success of execution. Unfortunately, that's as detailed as we can get given the breadth of possible topics. In effect, if you put in your fair share of effort, we'll be reasonable. =)
72+
Functionality will be determined holistically using a combination of difficulty of project and success of execution. Unfortunately, that's as detailed as we can get given the breadth of possible topics. In effect, if you put in your fair share of effort, we'll be reasonable. ☺️
6873

6974
Stylistically, as always, you'll be assessed on three main categories:
7075

@@ -76,12 +81,15 @@ We hold the final project to a higher standard of style than the assignments, si
7681

7782
## Submitting
7883

79-
Upload all of the files you want to submit, including a `README` and a short demo video, to [Paperless](paperless.stanford.edu).
84+
Upload all of the files you want to submit, including a `README` and a short demo video, to [Paperless](https://paperless.stanford.edu).
8085

8186
**WARNING: If you use any third-party libraries, ensure that you have generated a `requirements.txt` file listing your project's dependencies before submitting. You can do this by putting the output of `$ pip freeze` into a file. When exercising your code, we guarantee that we will run `$ pip install -r requirements.txt` to install this list of dependencies.**
8287

8388
If your project is sufficiently convoluted, make sure to add the corresponding clarifying information in your README file.
8489

8590
We highly recommend that you check your submission folder on Paperless after submitting to ensure that all necessary files were copied over successfully.
8691

87-
> With <3 by @sredmond
92+
## Credit
93+
This handout is based on a similar handout written by former CS 41 Course Staff.
94+
95+
> With &#129412;s by @psarin and @coopermj

final-proj/ideas.md

Lines changed: 33 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -16,71 +16,50 @@ You can do almost anything you would like to!
1616
## Random Ideas
1717
*Miscellaneous ideas that we thought of over the course of the quarter.*
1818

19-
2-Step Auto-Authenicator - who needs security? automatically 2-step-authenticate all messages from a certain sender.
20-
21-
Pizza Button - a hardware button that when pressed will use my credit card info to deliver Domino's directly to the dorm room.
22-
23-
paperless.py - clone and update Paperless so that it can support CS41 (way out of scope for this class but a person can dream)
24-
25-
canvasdav - a WebDAV client for Canvas (Coursework had one, Canvas doesn't) for local filesystem-like mounting of Canvas materials
26-
27-
astparse - check for similarity between python code by looking at the ASTs
28-
29-
piazzAI - a piazza client that answers common questions by using a hand-selected bank of information about the course or by learning based off of other student/TA answers
30-
31-
stamp - convert spotify playlists to apple music playlists and back
32-
33-
herowid - using the erowid database, a huge set of experiences of people on a variety of illegal drugs, classify a person's substance abuse based on their speech or text patterns
34-
35-
xl2py - an excel spreadsheet to python converter, with reference resolution and everything
36-
37-
facegraph - scrape all facebook chats with a given person and generate visualizations and analytics of your lifetime conversation
38-
39-
quarto AI - AI to play a hyper-tic-tac-toe game
40-
41-
codenames AI - AI using NLP to suggest a clue that is very similar to one set of words but very different from another set of words
42-
43-
wireframe visualizer - build a project that visualizes 3D graphics using raytracing
44-
45-
convex optimizer - generic convex optimizations on sufficiently constrained problems
19+
* 2-Step Auto-Authenicator - who needs security? automatically 2-step-authenticate all messages from a certain sender.
20+
* Pizza Button - a hardware button that when pressed will use my credit card info to deliver Domino's directly to the dorm room.
21+
* paperless.py - clone and update Paperless so that it can support CS41 (way out of scope for this class but a person can dream)
22+
* canvasdav - a WebDAV client for Canvas (Coursework had one, Canvas doesn't) for local filesystem-like mounting of Canvas materials
23+
* astparse - check for similarity between python code by looking at the ASTs
24+
* piazzAI - a piazza client that answers common questions by using a hand-selected bank of information about the course or by learning based off of other student/TA answers
25+
* stamp - convert spotify playlists to apple music playlists and back
26+
* herowid - using the erowid database, a huge set of experiences of people on a variety of illegal drugs, classify a person's substance abuse based on their speech or text patterns
27+
* xl2py - an excel spreadsheet to python converter, with reference resolution and everything
28+
* facegraph - scrape all facebook chats with a given person and generate visualizations and analytics of your lifetime conversation
29+
* quarto AI - AI to play a hyper-tic-tac-toe game
30+
* codenames AI - AI using NLP to suggest a clue that is very similar to one set of words but very different from another set of words
31+
* wireframe visualizer - build a project that visualizes 3D graphics using raytracing
32+
* convex optimizer - generic convex optimizations on sufficiently constrained problems
4633

4734
## Previous Proposals
4835
*List of proposals from last quarter's final projects. This list exists to show you the incredible breadth of projects that are possible!*
4936

50-
Bach - Programming a Python-based piano interface with various musical capabilities.
51-
52-
NoNonsense.py - scrape the genome of a new organism and return all the genes that will need to be changed, as well as all suggested primers to design to convert this to a viable system for nonsense suppression.
53-
54-
TeaWithStrangers - When given a group of people and their survey answers, the program will output clusters of people based on common interests with optimized probability of great conversations and new friendships.
55-
56-
RaspiTrack.py - Implementing a small number of computer vision algorithms in Python using a Raspberry Pi and a RPi Camera module, specifically focused on detecting circular objects, including edge-detection (Canny), k-means, and blob detection.
57-
58-
Tweet Analyzer - scrapes Tweets based on a hashtag and performs sentiment analysis
59-
60-
Hearts - Programming a Python-based interface for the game Hearts.
61-
62-
Kaggle.py - Participate in a Kaggle competition using Python
63-
64-
Juke - desktop jukebox application, allowing a user to create a playlist then people in proximity will be able to queue songs from their laptops onto the playlist
65-
66-
Fantasy Football Trade Generator - propose mutually beneficial trades between teams in any fantasy football league.
67-
68-
Dexcom Data Visualizer - suite that parses Dexcom data to create useful visualizations and metrics using Python.
69-
70-
MashedHeadlines.py - Twitter bot that will mash together two headlines and tweet them every hour
71-
72-
Random Rapper - version of the random writer project from CS106B that scrapes rap lyrics from the lyrics website Genius.com to generate random, rap-like output.
37+
* Bach - Programming a Python-based piano interface with various musical capabilities.
38+
* NoNonsense.py - scrape the genome of a new organism and return all the genes that will need to be changed, as well as all suggested primers to design to convert this to a viable system for nonsense suppression.
39+
* TeaWithStrangers - When given a group of people and their survey answers, the program will output clusters of people based on common interests with optimized probability of great conversations and new friendships.
40+
* RaspiTrack.py - Implementing a small number of computer vision algorithms in Python using a Raspberry Pi and a RPi Camera module, specifically focused on detecting circular objects, including edge-detection (Canny), k-means, and blob detection.
41+
* Tweet Analyzer - scrapes Tweets based on a hashtag and performs sentiment analysis
42+
* Hearts - Programming a Python-based interface for the game Hearts.
43+
* Kaggle.py - Participate in a Kaggle competition using Python
44+
* Juke - desktop jukebox application, allowing a user to create a playlist then people in proximity will be able to queue songs from their laptops onto the playlist
45+
* Fantasy Football Trade Generator - propose mutually beneficial trades between teams in any fantasy football league.
46+
* Dexcom Data Visualizer - suite that parses Dexcom data to create useful visualizations and metrics using Python.
47+
* MashedHeadlines.py - Twitter bot that will mash together two headlines and tweet them every hour
48+
* Random Rapper - version of the random writer project from CS106B that scrapes rap lyrics from the lyrics website Genius.com to generate random, rap-like output.
7349

7450
## Ex-Assignments
7551
*These projects were barely cut from being CS41 assignments. With some modification, they could be good final projects!*
7652

77-
Ghost AI - build an AI for the popular word game Ghost, where players sequentially add a character to a growing prefix, losing if they spell a full word or if the current string is not a valid prefix of any word.
53+
* Ghost AI - build an AI for the popular word game Ghost, where players sequentially add a character to a growing prefix, losing if they spell a full word or if the current string is not a valid prefix of any word.
7854

79-
Image Triangulation - Use Delaunay triangulation to auto-artsify profile pics into low-poly renders of the image
8055

8156
## Stolen Assignments
8257
*Implementations of programming assignments from other classes, this time in Python!*
8358

84-
Karel (CS106A)- build a Karel emulator in Python, including a graphical interface, a lexer and parser for the karel language, and enforce correctness)
59+
* Karel (CS106A)- build a Karel emulator in Python, including a graphical interface, a lexer and parser for the karel language, and enforce correctness)
60+
* RSS Aggregator (CS110) - aggregates news from lots of RSS feeds
61+
62+
## Credit
63+
This handout was used in prior versions of CS 41, where it was unattributed to any individual person. Context suggests that it was a pool of ideas from a bunch of former CS 41 Course Staff. Moving forward, this document will function in that way: as a collection of project ideas from all staff members.
8564

86-
RSS Aggregator (CS110) - aggregates news from lots of RSS feeds
65+
> With &#129412;s by @psarin and @coopermj

final-proj/proposal.png

-385 KB
Loading

0 commit comments

Comments
 (0)