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 beformed 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 group will submit a report named
<CNetID-group-name>.pdf
in your project repo with the following information:
Name of the group members and CNetID
A brief overview of the final project (200 words maximum)
The overall structure of the software (1-page maximum)
What the project tried to accomplish and what it actually accomplished (200 words)
Note: At least 10% 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: 75%
Design & style of the code: 15%
Program usability*: 10%
* 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.
Due Dates¶
Each team must create a group repository using chisubmit. We are using chisubmit/gitlab to make it easier to handle the repositories. Unlike regular assignments, you are welcome to post your projects on Github when you are finished.
- Register project teams (Week #5): Each team must
Create a group repository. You will follow the same process as working in pair for the PA assignments. Please follow the “Working in a Pair” instructions in Coursework Basics to create your group repository. The ASSIGNMENT_ID=project.
Complete this form to register by no later than 9pm on Feb 13th. 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.
Project Checkin (Week #7): Please come back here in week 7. We will provide a link to provide additional information about your project progress. We will also require additonal information about your data sources and team member responsibilities.
Completed Software (March 17th at 9pm): Each submission should
include a requirements.txt
file that contains a list of required libraries (with version numbers) and description of how to run the software. We must be able to run your software on a CS Remote machine and we must be able to understand the structure of your code without undue effort.