Project Guidelines

Overview

This document describes the final projects that you will do for this course. These projects will build on your existing knowledge and take you to the next level with your skills in coding, software engineering, visualization, debugging, algorithmic thinking, etc.

What is the difference between this project and the previous homework you have done?

  • The project will be a lot more work than a single homework (the project is worth the same as all of your homework).
  • The project will be a much more accurate representation of what it is like to do computational physics "in the wild".
  • The project is open ended. For most of your homework, there has been a very clear result you are aiming for, and I pick the target. With the project, I will give you general guidance, but you will have significant freedom to create and explore questions. Because of this you won't know the right answer and neither will I.
  • While multiple students will be doing a project on the same topic, each project will be entirely unique in the questions explored and the approach to those questions.
  • The end result of your project will be a computational narrative, i.e. a story, that uses code, data and visualizations to communicate something of significance. You will tell this story to the class in your final presentation.
  • The project is a capstone experience that will tie together everything you have learned and likely require you to learn a lot of new things we haven't covered in class.
  • Most importantly, the project will be a lot of fun and provide you with something significant you can use as the start of a computational portfolio.

Here is the schedule for the project work:

  • Week 7: Projects are assigned on Wednesday, Day 14.
  • Week 8: Class dedicated to active project work time.
  • Week 9: Memorial Day on Monday, Progress Report due on Wednesday, Day 18.
  • Finals Week: Final Project Deliverable due at beginning of official final time, Presentation during official final time.

Other practical guidelines:

  • Ask GitHub for a free educational account here to give you free private repos.
  • Create a new GitHub repo for your project and add me (ellisonbg) only as a collaborator.
  • Your Progress Report and Final Project Deliverables will be turned in by pushing to your private repo.
  • After you have given your Final Presentation, you can optionally make your repo public so you can use it as a computational portfolio.
  • All questions and discussions related to the project should take place on the main gitter channel for the class. I will not reply to private emails related to the project.

Progress report

Your Progress Report will consist of one or more notebooks that include:

  • A one paragraph abstract that summarizes your project, the approach you will take and the questions you will tackle.
  • A detailed description of the base question you will use to verify that your code is working as expected. This base question should be a replication of one aspect of one of the original papers.
  • A detailed description of two additional questions you will answer/explore for the Final Project Deliverable.
  • A working implementation of the core algorithms related to the topic.
  • A working demonstration of any new Python packages you will need to use in the project, integrated with the rest of your code.
  • Tests and visualizations that demonstrate your implementation is working as expected.
  • A narrative description of the base implementation, test and visualizations. This should include a summary of the main functions and classes you have defined, any data structure, and the overall program flow.

Final project deliverable

The final project deliverable will consist of the work done for the Progress Report, with the following additional materials in one or more notebooks:

  • Code that fully addresses the base question you identified in your Progress Report. Your implementation should be described, tested and visualized.
  • Code that explores the two additional questions you identified in your Progress Report along with description, tests and visualizations.
  • An narrative interwoven with your code, with equations and diagrams as needed, that ties everything together into a coherent whole.
  • Interactive widgets that allows you, or the reader to explore the questions themselves.

Final presentation

Your final presentation will consist of a presentation to the class during the official final time for the class. You will use the notebook to do your presentation.

  • Your presentation should focus on the overall narrative, and the questions you explore.
  • You should do live demonstrations and a summary of the code, but you shouldn't get too technical about the details of the code.
  • Remember, most of the class won't know anything about the topic or questions you are presenting about.
  • If you have code that takes a while to run, you should run the code before the presentation, save the results to a file, load the results from disk and perform final analysis and visualizations.
  • Any videos should be uploaded to YouTube and included into your notebook using the IPython.display.YouTube class.

Students and faculty outside the class will be invited to attend the final presentations.

Collaboration and sources

There will be multiple students doing projects on the same topic, but each student will do their own project.

  • I encourage you to talk to the other students doing your same topic, but you must not directly share code.
  • Your implementations, tests and visualizations must be substantially different from those of other students.
  • The two additional questions that you investigate must be substantially different. You can propose to explore similar questions to other students, but the actual work to explore those questions should be substantially differrent.
  • Remember you will present this to the entire class - it will be complete obvious if you have shared code or your project is not substantially different from those of others.

If you use outside materials (code, papers, websites) you must cite them. One of the signs of a good project will be lots of citations!

Rubric

You will be graded on the following categories:

Code

  • Code is well organized into relatively small functions (10-20 lines) that do one thing.
  • Functions have docstrings describing what they do.
  • Appropriate variable names are used.
  • PEP 8 is approximately followed for code style.
  • Code is tested using assert statements.
  • Code that is used in multiple notebooks is put into standalone .py files and imported.
  • Code is modular to easily allow the exploration of different questions.
  • Code is written with fast performance in mind and does not have any significant performance problems.

Visualization and Interaction

  • Visualizations are provided to present results.
  • Visualizations adhere to the theory and practice of effective and beautiful visualizations.
  • Interactive widgets are used to explore results interactively.
  • Any created movies/animations are posted to YouTube and displayed in the notebook.

Narrative

  • Narrative text is provided to describe the code, physics, results, visualizations.
  • When appropriate, equations are included (LaTeX).
  • The narrative tells a compelling story that addresses the questions.
  • A one paragraph abstract is provided.
  • An introduction that describes the motivation, background, main equations and main questions is provided.

Presentation

  • Well dressed, looks professional.
  • Relaxed, confident and enthusiastic.
  • Speaks clearly at all times, with good volume, good pace, and smooth delivery.
  • All demos work.

Organization

  • The project is organized into multiple notebooks.
  • An introduction notebook is provided with the following sections:
    • Abstract
    • Overview and background
    • Index of other notebooks with a short description
    • Citations - the more the better.
  • Each notebook has well organized Markdown sections

Reproduction and Questions

  • There is a clear motivation for and statement of the question.
  • There is a clear exploration of the questions.
  • There is a clear conclusion that describes your results and conclusions for each questions.