Final Deliverables



Due: Tuesday, December 10th 2019 at 12:00 PM (noon)

Submission Instructions

Your project should be available in your GitHub organization through your project repo.

Your submission should be in the following format:

project_repo/
             README.md
             docs/  
                  documentation
                  milestone1
                  milestone2
             code/
                 ...

Note that code should be named something informative.

Software Requirements

Here are the main requirements for the final project:

  1. Working forward mode implementation
    • See the sections below for more specific details
  2. Test suite
  3. Updated / extended documentation
    • Your updated documentation will be the final package documentation.
    • Please name it documentation. Do not name it milestone3.
  4. New features

Working Forward Mode Implementation

You must have a working forward mode implementation.

Minimum Package Requirements

Minimum Implementation Requirements

The following is a description of a typical use case.

What Kinds of Functions should be Implemented?

All basic operations and elementary functions should be implemented.

Basic Operations
Comparison Operators

It is up to you which comparison operators to implement. Here are some options:

At the very least, it makes sense to have __eq__ and __ne__. We will be interested to see what (if any) uses you find for the other operators.

Elementary Functions

Note that the hyperbolic functions and the logistic function are arguably not elemental functions since they can be formed from the natural exponential. On the other hand, they do form a key ingredient in some algorithms (e.g. neural networks) and can therefore be considered as elemental functions. You should implement these functions.

Test Suite

You should have a test suite that runs with pytest. Your test suite should run automatically on Travis CI. The project GitHub repo should contain a badge showing the pass/fail status of your build. The badge should show that your build is passing all tests.

You should also have your project connected to CodeCov. Once again, the project repo should have a badge reporting on the coverage of your code from CodeCov. Remember: Your code coverage should be at least 90%.

Documentation

Your documentation must be complete, easy to navigate, and clear. Remember to update the Background and How to Use sections of your documentation as you add more functionality to your package, so that the user has a good understanding of what he/she can do. Call the final form of your documentation documentation.

Your documentation should be a mix of text and hands-on demos. As always, it is up to you and your group to determine the best way to accomplish this (e.g. Jupyter notebook, GitHub README, Sphinx/Read the Docs).

You will receive full points as long as you have a docs/ folder and your documentation is complete. However, you may want to consider alternative ways of hosting your documentation. For example: Read the Docs or Sphinx.

Documentation Sections

The following sections should be present:

Future

What else do you want to add? What is missing? Don't just think about mathematical things here. Try to think about applications that you'd like to have use your code. Just about every area of science can use automatic differentiation (physics, biology, genetics, applied mathematics, optimization, statistics / machine learning, health science, etc).

Final Deliverables

The deliverable for the project is a video that describes all of the work done on your project throughout the semester. You are free to decide upon the format of the video yourself (with some restrictions - see below).

Some ideas include:

You may want to consider tools such as asciinema.

We won't be judging you on the quality of your camera or your video editing ability so don't worry about that. We will judge you only on the content you present. However, if the quality of the video is so poor as to prevent us from judging the quality of the work, then we will unfortunately need to deduct points.

Video Requirements

Section Minimum Length
Introduction/background 2 minutes
Implementation details/Software srganization/How to use 4 minutes
Your additional feature(s) and extension 5 minutes
Future work/possible extensions 2 minutes

Video Submission instructions

Things to keep in mind

Grading Breakdown

Points Task
20 Complete forward mode functionality (see above)
15 Documentation & Test Suite (see above)
20 Video Presentation
30 New Feature (see above)
15 Code quality