CS371p: Object-Oriented Programming

Spring 2018: 51620



  1. Estimate time to completion.
  2. Get a GitHub Student Pack with unlimited private repos.
  3. Follow the GitHub Classroom link for the specific project.
  4. Create a private classroom repo (e.g. https://github.com/cs371pc-spring-2018/collatz-GitHubID/collatz/)
  5. Use the GitHub issue tracker of the private classroom repo.
  6. Add at least 10 issues from this workflow.
  7. Add at least 5 more issues, one for each bug or feature, with a good description and a label.
  8. Get a Travis CI account.
  9. Connect your Travis CI account to your private classroom repo.
  10. Fork the private classroom repo to create a private code repo (e.g. https://github.com/GitHubID/collatz/). This will effectively be your dev branch.
  11. Connect your Travis CI account to your private code repo, as well.
  12. Clone your private code repo onto your local directory.
  13. Make your private classroom repo a second remote.
  14. Commit and push to your private code repo.
  15. After a successful build on Travis CI, commit and push to your private classroom repo, resolving an issue in the issue tracker.
  16. Make at least 5 commits to the private classroom repo, one for each bug or feature.
  17. If you cannot describe your changes in a sentence, you are not committing often enough.
  18. Make meaningful commit messages identifying the corresponding issue in the issue tracker of the private classroom repo (see closing issues via commit messages).
  19. If provided, clone the public code repo (e.g. https://github.com/gpdowning/cs371p/tree/master/projects/collatz/) onto your local directory.
  20. It is critical that you clone the public code repo into a different directory than the one you're using for the clone of your private code repo.
  21. Copy the code files from the clone of the public code repo to the clone of the private code repo.
  22. If provided, run the given unit tests and acceptance tests, confirm the expected successes, and add, commit, and push to the private code repo.
  23. Before continuing, confirm a successful build on Travis CI. Add, commit and push to the private classroom repo.
  24. If provided, fix the given unit tests and acceptance tests, confirm the expected failures.
  25. Write unit tests and acceptance tests that test corner cases and failure cases, and confirm the expected failures and add, commit, and push to the private code repo.
  26. Implement and debug the simplest possible solution with assertions that check pre-conditions, post-conditions, argument validity, and return-value validity, until all tests pass, and add, commit, and push to the private code repo.
  27. Before continuing, confirm a successful build on Travis CI. Add, commit and push to the private classroom repo.
  28. Implement and debug any optimizations until all tests pass and add, commit, and push to the private code repo.
  29. Before continuing, confirm a successful build on Travis CI. Add, commit and push to the private classroom repo.
  30. Format your code with clang-format.
  31. Create a git log of your commits to the private classroom repo.
  32. Get the URL of the Travis CI log of your build of the private classroom repo.
  33. Fork and clone the public test repo onto your local directory.
  34. It is critical that you clone the public test repo into a different directory than the one you're using for the clone of the public code repo or your private code repo.
  35. Copy your acceptance tests to your clone of the public test repo, rename the files, do a git pull to synchronize your clone, and then add, commit, and make a pull request to the public test repo.
  36. The files MUST start with GitHubID-(owner of the repo) in the public test repo.
  37. Run doxygen to document the interfaces to your functions/methods (e.g. html/)
  38. Create inline comments if you need to explain the why of a particular implementation.
  39. Use a consistent coding convention with good variable names (see Google C++ Style Guide).
  40. Submit the assignment on Canvas.
  41. The Canvas assignment will require that a JSON file be filled out. That will include the request for a Git SHA of the private classroom repo, which can be obtained as follows:
    git rev-parse HEAD