Now that your Part 0 project proposal has been approved it is time to to make a more concrete plan and dig into your project! For this part, you need to provide more background and decide on the details of how you will answer your research questions. For Part 1, you will submit a revised version of your Part 0 project proposal. Include any feedback you received from course staff and any further refinements you have made. In addition you must include three new sections: one on your motivation, one on your methodology, and one on your work plan.
Your Part 1 project proposal should include the following sections. It should build off what you started with in Part 0 (as well as any updates you've made to your proposal based on your mentor's feedback).
Methodology (algorithm or analysis). Write a complete, clear, unambiguous English description of the analysis you will perform. This should be sufficient for someone else to write a Python program (or perform manual computations) that reproduces your results, without access to your source code, and without having to guess or make significant design choices. This description is also likely to be helpful to people who read your code later. This section should tie your computations to your research questions, indicating exactly what results would lead you to what conclusions.
This section explains how your analysis works on an abstract level, focusing on the problem domain and your algorithm. It should be written to be read by a scientist or engineer, not by a programmer. It should should say nothing about specific implementation choices, such as how your code is organized or implemented (such details belong in code comments), what data structures are iterated over, and the like.
You should concretely relate to your challenge in your methodology. This means if a part of your methodology involves meeting one of the challenge goals you are aiming to meet, highlight that in this section to more concretely show your plan of meeting those goals.
If you are working with a group you may be interested in trying pair programming . Pair programming is a technique that is a part of Extreme and Agile software development approaches used in some software companies. Here are a few references on pair programming:
When working with multiple people on a code project, it is very helpful to have some system in place to manage changes to code. There is a whole business of making software to help developers collaborate on code, the one that is by far the most popular is called Git. There are many, many tutorials online for how to get started with Git, so if this is something that you want to use I recommend asking the internet for help. I will suggest one of the guides I find most accessible which can be found here.
Using Git is one component, but another is actually storing your code in a place that is accessible by you and your group. Most people use a website called GitHub to store their repositories so many people can access their code (surprisingly they have also written a Guide to Git too).
There is no requirement that you use a version control system like this, but it might be something you find helpful!
Submit your Part 1 as a PDF file. Do not turn in a Word document or plain text. One group member should submit your report on Gradescope and should use Group Members functionality to add the appropriate group members if you have some. If you want to learn about how to add Group Members on Gradescope, please see instructions here. Group members that are not listed in Gradescope by the due date will be marked as not submitted.
Before submitting, make sure you have included all the details we asked for. Since your projects are open ended, we are grading on how well you covered the details we asked you to cover! Pay particular attention to the work plan as many students in the past forgot to include details we asked for!