Final Project for CS107/AC207/CSCI E-207, built by group 1 (Off-piste), whose members are:
- Aleksander Aleksiev
- Krithika Sundararajan
- Yuxin Ye
- Zeren Long
The local development setup for this project is based on the skeleton project provided by Andrew Kirby here.
An overview of important local development commands is provided below. For more information, see:
$ ./config.sh --help
The OffPiste library can be compiled with the following commands. By default, this compiles the library to a .dylib
on a Mac and .so
on other Unix systems.
$ ./config.sh --3pl #build 3rd party testing libraries
$ ./config.sh --library #build OffPiste library and run tests
The resultant library and header files can be found in OffPiste/install/
. Compilation of the library requires cmake
, which you might need to install if it is not already on your system.
Tests can be run locally using the following command which will build the 3rd party libraries, the OffPiste library and run the tests.
$ ./config.sh
./config.sh --library
will also run the tests, but will only re-compile the OffPiste library.
After the library has been built, use the following command to rebuild the OffPiste library with the coverage flags, run tests and gather the code coverage report.
$ ./config.sh --coverage
This command uses lcov
, so will only work if lcov
is installed on your system.
The compiled binary and test coverage output can be removed using:
$ ./config.sh --clean
If you also want to clean the 3rd party libraries, use
$ ./config.sh --distclean
You can contribute to this project by submitting a pull request. If your pull request changes any c++
source files, please use the command
$ ./config.sh --format
to re-format the c++
source code in the OffPiste/
directory using clang-format
before pushing your changes. This will ensure your files have a consistent style with the other files in this project.
Bugs and Feature requests may be submitted to Github Issues. For Bug Reports, please include a detailed description of the steps, the expected behavior and the actual behavior.
The docs/
folder contains information on the implementation and the mathematical concepts used.
The docs/doxygen
folder includes a snapshot of the source code's documentation generated using in-line comments in the relevant source files. docs/doxygen/index.html
can be used to launch and explore these docs.
The documentation can be manually re-generated using ./config.sh --gen-docs
if you have doxygen
installed.
This repository is configured to work with Travis CI. With every commit, the following actions are performed.
- The code is compiled using the
gcc
compiler, in thelinux
environment. - If the compilation is successful, the tests are executed and
lcov
is used to analyse what portion of code is covered. The code coverage results are provided onCodeCov
. The test results are provided onTravis
. See the badges at the top of thisREADME.md
for the current status. - Creating a tag on Github will trigger a build on TravisCI that compiles and tests the code on
linux
andosx
environments. If successful, a Github release will be created with the compiled.so
and.dylib
files that can be used on Linux and Mac OS, respectively.
Differentiation forms the basis for many scientific and engineering computations, from the Newton's method for finding the roots of an equation, to the implementation of Neural Networks used in Deep Learning models. As with all software, the tools, with malicious intentions, may be used for unethical purposes. While we don't believe that the OffPiste library, on its own, could be used to create negative impact, we encourage users of the library to act responsibly.
Through peer reviews and retrospecive examination of the code, we will also continue to evolve it for efficiency and resource consumption.
The team behind the OffPiste library is multi-cultural in itself, with members spanning across different geographies. Digital connectivity has surely brought the world closer together, but that's not to say that collaboration is easy. This kind of working has brought along its own set of challenges. We recognize this and undertake that we will remain unbiased in our work and dialogues, both within the OffPiste community of users and contributors, as well as outside. And we hope that, you will this stance with us and exercise thoughtfulness and respect towards each other.
Along the same lines, we hope that our source code and software are available and accessible to people from all backgrounds and walks of life. Although development and documentation, at this point, is only done in English, we encourage user forums and discussions in any language and will try our best to assist. Where this proves to be difficult, we seek your understanding in the fact that our time and and resources towards this project are limited and we are unable to cater to speakers of all languages.
Many of the maintainers of this repository also study or work full-time and owing to this, correspondence and attention to code reviews may not be immediate. Please help us streamline our communication by incorporating the guidelines in the section on Contributing to this Project.