CSE 163, Winter 2021: Final Project: Part 1

Overview

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.

Report

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).

  1. Title and author(s).
  2. Summary of research questions. This should include your research questions from Part 0 (or a modified version if you have changed it after Part 0). You might find that some of the content you originally had in this section for Part 0 will move to the motivation and background or methodology. This section is meant to clearly lay out your research questions.
  3. Motivation and background. Explain the context and why the problem matters. This expands on the research questions that you already stated. Why are they worth computing? What difference would knowing the answers make? We require a problem with some kind of real-world motivation for your project, so this is the place to explain background information necessary to understand your project topic.
  4. Dataset. Same information as Part 0 unless otherwise indicated by feedback
  5. Challenge Goals. Same information as Part 0 unless otherwise indicated by feedback
  6. 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.

  7. Work Plan. Create a plan to estimate how long you will spend on various parts of your project (For Part II). You should break your project up into tasks that need to be done. You should have at least 3 high-level tasks (no more than 7), and an estimate of the time in hours you will spend on each of the parts. This does not need to be down to the level of the functions you will implement, but it is fine if you include that level of detail (more detail helps you). Make sure you include a time estimate in hours for each task as we asked!
    If you are working with a group you must also describe how you will develop and test your code and coordinate other aspects of working together in a team (e.g. sharing access to source code, dividing responsibilities or working together). All group members must contribute equally to BOTH the code and the report writing.

    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!

  8. Questions. If you have any specific questions for us feel free to add those here. (Not required)

Submission

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!