You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
<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>
8
10
9
11
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.
10
12
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.
12
14
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.
14
16
15
17
*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.*
16
18
17
19
## The Project
18
20
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*
20
25
21
26
Implement the project you have proposed, incorporating our feedback. You are free to begin working on the project before you hear from us.
22
27
@@ -42,7 +47,7 @@ Other general sections of a README usually include, but are not limited to: know
42
47
43
48
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.
44
49
45
-
*Video Supplement to README.*
50
+
#### Video Supplement to README
46
51
47
52
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.
48
53
@@ -54,7 +59,7 @@ Mechanically, you can [record your screen on a Mac with QuickTime Player](https:
54
59
55
60
For this assignment, we are not explicitly providing any code to you.
56
61
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!
58
63
59
64
You may *not* use proprietary code, code which requires a paid license, anything which promotes illegal activity, anything which violates Stanford policies, etc.
60
65
@@ -64,7 +69,7 @@ The project *proposal* grade will be assessed purely on completion. Did you do i
64
69
65
70
Your final project grade will be assessed on both functionality and style.
66
71
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. ☺️
68
73
69
74
Stylistically, as always, you'll be assessed on three main categories:
70
75
@@ -76,12 +81,15 @@ We hold the final project to a higher standard of style than the assignments, si
76
81
77
82
## Submitting
78
83
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).
80
85
81
86
**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.**
82
87
83
88
If your project is sufficiently convoluted, make sure to add the corresponding clarifying information in your README file.
84
89
85
90
We highly recommend that you check your submission folder on Paperless after submitting to ensure that all necessary files were copied over successfully.
86
91
87
-
> With <3 by @sredmond
92
+
## Credit
93
+
This handout is based on a similar handout written by former CS 41 Course Staff.
Copy file name to clipboardExpand all lines: final-proj/ideas.md
+33-54Lines changed: 33 additions & 54 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -16,71 +16,50 @@ You can do almost anything you would like to!
16
16
## Random Ideas
17
17
*Miscellaneous ideas that we thought of over the course of the quarter.*
18
18
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
*List of proposals from last quarter's final projects. This list exists to show you the incredible breadth of projects that are possible!*
49
36
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.
73
49
74
50
## Ex-Assignments
75
51
*These projects were barely cut from being CS41 assignments. With some modification, they could be good final projects!*
76
52
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.
78
54
79
-
Image Triangulation - Use Delaunay triangulation to auto-artsify profile pics into low-poly renders of the image
80
55
81
56
## Stolen Assignments
82
57
*Implementations of programming assignments from other classes, this time in Python!*
83
58
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.
85
64
86
-
RSS Aggregator (CS110) - aggregates news from lots of RSS feeds
0 commit comments