Project¶
The final project for CAPP 30122 is to build software that achieves a clearly stated goal that is of genuine interest to you and your partners. Final projects must be done in teams. A team must have a minimum of 3 and a maximum of 4 people. Teams can be formed with students from any section.
Projects must have a clearly-defined goal and use at least two sources of data. At least one source of data must be acquired using web-scraping or through the use of an API.
What you do with the data you collect is up to you. Possible options include, but are not limited to, generating visualizations, using the data as a basis for a simulation or a prediction algorithm, using the data as the basis for a small database and a simple text-based front end for querying it.
We encourage teams to seek out and exploit relevant open source libraries. You are welcome to use code you find on the web, but please keep in mind that all such code must be clearly labeled with the source. Also, all projects must include some original code. (That is, you cannot just glue together pre-existing code.) See project requirements at the end of this page.
Project Requirements¶
As a recap of the information provided above and with a few additional requirements, the project must include at least the following:
At least two sources of data. One source of data must be acquired using web-scraping or through the use of an API. Other sources of data can be acquired as the group sees fit.
A data analysis component must be part of the project. For example, as stated above, using the data as a basis for a simulation or prediction algorithm. Data visualization with interpretation of the results is also acceptable.
Specific components built by each team member. Every team member is responsible for implementing a component of the project’s software. We expect projects to include roughly 400-600 lines of code. This range should be interpreted as a guideline, rather than as a firm requirement. A project that uses a complex algorithm might have fewer lines of code. A project that mainly integrates data from many different sources or software components might have more.
A visual or textual output. What the program generates (i.e., outputs) is up to you. For example, generating visualizations, a JSON string with the results of performing a query on the database. You can check with the instructors if you are unsure about this requirement.
Each distinct component must be a subpackage. This means the structure of your project must look similar to markovian project from PA #1. It doesn’t need to function fully but we should be able to run your program with a single command. For example,
ipython -m my_project
If you are using Django or some other visualization package then this may look different and thats fine. As long as it’s simple to start the application.
Each project must be able to be ran in a virtual environment and provide a requirements.txt file. Professor Samuels will explain this process in Week 7. Don’t worry too much about this component in th early stages of thr project.
Please include a
README.md
that explains how to quickly install [if necessary] and your project. Include a few examples about how to interact with your project within the README document. This document is separate from your paper that provides more details about the project. The README is used to quickly start running your project.- Each group will submit a report named
proj-paper.pdf
in your project repo with the following information: Name of the group members and CNetIDs
A brief overview of the final project (200 words maximum)
The overall structure of the software (1-page maximum). It would be nice to include a helpful diagram of how the modules are connected with each other but this is not required.
A description on the code responsibilities for each group member (i.e., who was responsible for what module, files, tasks, etc.).
Short description on how to interact with the application and what it produces.
What the project tried to accomplish and what it actually accomplished (200 words)
- Each group will submit a report named
Note: At least 15% of the weight for the project requirements will go towards the complexity of the project. In the past, some groups waited towards the end of the quarter to work on their project and I want to discourage this from happening. We will not answer the following question (or any variation of it): “Is this complex enough?”. We can tell whether a project took a few days to complete versus weeks. You can plead your case about the complexity of your project in your report, if you wish.
Grading Breakdown¶
The project weights will be:
Completion of project requirements: 70%
Design & style of the code: 15%
Program usability*: 15%
Program usability has two main components. First, we should be able to run your software with little effort on the CS remote machines. We will talk about ways this can be achieved later in the quarter. Second, your software should be user friendly. It should be clear in the project report how to interact with the software.
Deliverables¶
The following are the deliverables for the project throughout the quarter:
Deliverables #1: Register project teams¶
The first deliverables provides information about the group and an initial proposal for what you plan on implementing. However, this can change as you work on the project throughout the quarter. For this deliverable, each group must do the following:
Choose a team name. Make it fun and unique!
Each team must create a group repository using the Github Classroom Link posted on ED. Unlike regular assignments, you are welcome to post your projects on Github when you are finished.
Complete this form to register by no later than 4:30pm on Feb 5th. You must be logged into your uchicago account to access the form. The form requires your repository name and so, you must create it before you complete the form. The form requires you to provide basic information about your team along with a description of the goals of your project, etc.
Due: Saturday Feb 5th 4:30pm CDT (Week #4)
Deliverables #2: Project Checkin¶
Please come back here in week 7. We will provide a link to provide additional information about your project progress. We will also require additional information about your data sources and team member responsibilities.
Please submit to your group repository a single document named proj_d2.pdf
that provides an update to your current status of your project. You will answer the same questions from the previous survey but in written form. Make sure to answer the following questions:
Please provide one paragraph description of the goals of your project. You can list the same description from the previous deliverable or provide new details about aspects that have changed since Week 4.
For each source of data that you expect to use, please list the source of data, who will be responsible for collecting data from that source, and a date by which you expect the work of gathering the data from that source to be complete.
Please give a brief sketch of the work that needs to be done to complete your project (other than data collection), include a description of which team member(s) will be responsible for completing this work and the expected timeline for completion
Include any additional information you wish to provide about your project.
If you need additional feedback from me then please make sure to include that in your report.
Due: Saturday Feb 26th 4:30pm CDT (Week #7)
Deliverables #3: Final Completed Software¶
You must perform the following for the final deliverable:
Submit your final project code by Wednesday March 16th 4:30pm CDT: Please submit your final code submissions to your group repository. There are no extensions for the final submission. We will only grade what is submitted in your repository by the deadline. You do not need to submit anything to Gradescope. The grade for the project will be submitted to your repository. Professor Samuels will notify everyone when the grade has been submitted.
Submit your project paper by Wednesday March 16th 4:30pm CDT: In addition to your code please make sure to submit a final paper about the project. Name this file
proj-paper.pdf
. Please only submit a pdf of your paper. Make sure to include this paper in the top-level directory of the project. See step #8 in the Project Requirements section to know what to include in the paper. There are no extensions for the final project submission.
If you have any concerns related to working within your group throughout the quarter then please let me know privately via email.
Due: Everything is due Wednesday March 16th 4:30pm CDT (Week #10)