Project

1 TL;DR

This is a summary. Read the entire document.

  • Teams of up to four people
  • Turn in your proposal by 13 Nov
  • Turn in your final report by 13 Dec
    • Final report is an informal “blog post” explaining what you did
    • 13 Dec is a hard deadline with no extensions possible
  • Turn in code to accompany your report via linked repo

2 Teams

You may work on this project in teams of up to four people. The minimum size of a team is one person.

3 Scope

  • Identify a sequential decision problem to solve with an algorithm
  • The problem should include some uncertainty
  • The problem should be non-trivial (i.e., infeasible to solve with a search such as BFS or A*)

4 Deliverables

4.1 Scope Agreement:

  • You must propose a project to me and I must approve your proposal by 24 November. You should submit this proposal before 17 November to account for possible revisions. You are welcome to submit it much earlier; I typically turn these around in 48 working hours. The earlier you scope your project, the earlier you can begin your project.
  • Identify in your proposal:
    • The problem you intend to solve
    • The uncertainties involved
    • Why the problem is non-trivial
    • Existing solution methods
    • Your plan for modeling and solving the problem: what is the state space, what is the action space, what are the observations, and what algorithms might you use?
  • Submit this to me via email

4.2 Report:

  • The report must be turned in by 12:00 Noon on 13 December
    • This is hard deadline and I will not grant extensions. Extenuating circumstances will result in a course Incomplete.
  • You will submit an informal report upon conclusion of the project. The format of the report will be a blog post. Possible ways to do this:
    • Github pages with Jekyll
    • Quarto, which can embed Jupyter Notebooks into static websites
    • The literal README of your repo
  • The report must effectively communicate what you did for your project in a way that lets a technical bystander reproduce your work. Include:
    • Software and hardware requirements
    • Links to any data sources
    • Motivation for your project
    • Explanation of what you accomplished
    • How you measured your success (or failure)
  • I won’t grade you on spelling or grammar and ask that you write this yourself without the use of any AI tool or LLM.
  • Submit via email (will just be a link). I expect no changes after you submit.

4.3 Code:

  • Write your project in Python 3
    • Talk to me if you think you have a good reason to use another language
  • Include code with your report in a Github or Gitlab or similar source repository.
  • Specify dependencies with a requirements.txt or pyproject.toml
  • Include enough details in your report for me to reproduce your work without perusing your source code. I recommend either:
    • Step-by-step instructions
    • A makefile and/or build/run scripts

5 Grading

  • You will be graded on how you apply your model and solution method to your problem.
  • I will treat the proposal as a ‘contract:’ if you accomplish the project we agreed on, you’ll get 100% credit.
    • I will warn you if the proposal risks an inadequate project, with an opportunity to revise
    • I will warn you if the proposal risks an impossibly-difficult project, with an opportunity to revise

6 Collaboration & Accountability

  • If you work in a team of two, three, or four people, I expect that each team member will contribute equal effort to the project. To incentivize this, each team member will submit their own statement (several sentences) describing how work was broken down amongst team members. I reserve the right to assign credit for the project unevenly if it is clear that work was not shared evenly.

  • If you would like this project to be related/tangential to work you’re doing (or have already done) for another class, I will approve if and only if you are transparent about the boundaries of what work is done for this class and what work is/was done for the other class, and obtain similar approval from the other instructor.

  • If I can’t reproduce your work, I won’t be able to give you credit for it.

  • If you use some code that you didn’t write yourself, make it clear:

    • If you use a package via import, the import statement is sufficient
    • If you copy something from stack/docs/etc., include a link in comments
    • Don’t use any LLM-generated code for this project:
      • It probably won’t work
      • You might inadvertently copy a large chunk of code from someone else’s repo verbatim