cs207-FinalProject
Group 32: Amelia Elverson, Aaron Jacobson, Erica Moreira, Lin Zhu
Introduction
This repository contains an implementation of forward automatic differentiation. Automatic differentiation breaks down the main function into elementary functions, evaluated upon one another. It then uses the chain rule to update the derivative at each step and ends in the derivative of the entire function. Please click the link for more information: Overview and Installation Guide
TO DO: Final due 12/10 at 12pm
- Confirm directory structure:
cs207-FinalProject/
README.md
docs/
documentation
milestone1
milestone2
autodiff32/
...
- Software Requirements
-
Code is clean and well commented. TA wants higher quality docstrings.
-
Working forward mode implementation
Able to handle real functions of one or more variables, including multiple functions each of multiple variablesAble to handle vector functions with multiple real scalar or vector inputsAvailable to download from GitHub.org- Installable from PyPi - need to update when finished!
- Requirements.txt file with dependencies - need to update when finished!
Users should be "able to use without difficulty"-
Functions that must be implementedAddition (commutative)SubtractionMultiplication (commutative)DivisionPowerNegation- _lt_ - optional
- _gt_ - optional
- _le_ - optional
- _ge_ - optional
_eq__ne_Trig functionsInverse trig functionsExponentials - any base, treat natural base (e) as special caseHyperbolic functionsLogistic funcitonLogarithms - any baseSquare root
-
Test suite
Runs with pytestRuns automatically on Travis CIContains badge showing pass/fail status of build.Badge must show we are passing all testsConnected to CodeCovBadge reporting coverage of code- Confirm NO TESTS fail
- Cover > 90% - need to confirm when finished!
-
Updated/extended documentation
Updated documentation will be the 'final' package documentation - mix of text and hand-on demosPlease name it documentation. Do not name it milestone3.- Sections:
Intro - describe problem, why it's important to solveBackground - including extensions- How to use
How to install- Basic demos for user -
one for auto diff,one for new feature, etc.
- Software org
- Directory structure - update when finished
- Modules and what they do
Where do tests live? How are they run? How are they integrated?- How can someone install package? Should developers and consumers following different installation procedure?
- Implementation details
- Description of current implementation - deeper than software org
- Such as: core data structures, core classes, important attributes, external dependencies, elementary functions, etc.
- Description of current implementation - deeper than software org
- Extension
- Description of extension
- Additional information or background needed to understand - including mathematical or other concepts
- Do we actually need to include additional stuff for the extension? We built it into the above sections. Waiting on response from TA.
-
Extension
Build out extensionFull testing of extension- Document extension (including motivation and concepts behind it)
-
Video deliverable
- Must be narrated by all members of group
- Members must speak an equal amount
- Change speakers exactly n-1 times (everyone should speak exactly once)
- Time distribution:
- Intro/background - 2 mins
- min project only
- Don't overdo the math details - provide big ideas behind auto diff and the motivation for using it
- Implementation details/software organization/how to use - 4 mins
- min project only
- Additional features and extension - 5 mins
- include any necessary background/impelmentation/how to use, etc. for extension here.
- May need to present math background to get audience oriented
- Future work/possible extensions - 2 mins
- Intro/background - 2 mins
- Maximum time: 15 mins
- Do not include actual code snippets - teaching staff has access to code.
- Upload to YouTube as private video - share video with course staff
- Title must include group number
- Fill out video submission Google Form