CS 371p: Object-Oriented Programming



Project #1: Collatz


  • Due: Wed, 9 Sep, 11:59 pm
  • Write a program, individually, to solve Collatz [C++23 (g++ 14.2.0, 2 sec, 512 MB, source 50 KB)].
  • You may not use new, delete, malloc() or free().
  • You may use the STL.

Rubrics


Name Description Points
Estimation
  • estimate and track time to completion
GitLab
1. GitLab Issues
  • enable issues here: Settings -> General -> Visibility, project features, permissions -> Work Items
  • create the following issue labels here: Manage -> Labels (labels are case sensitive):
    • build_files (Blue-gray)
    • unit_tests (Green-cyan)
    • run (Crimson)
    • acceptance_tests (Dark sea green)
    • hackerrank (Titanium Yellow)
    • continuous_integration (Carrot orange)
    • documentation (Lavender)
    • ad_design (Dark coral)
    • ai_criteria (Dark coral)
  • create at least 30 issues with the above labels from these rubrics
  • create at least 5 more issues for bugs and optimizations
  • close all issues as you develop, debug, and optimize the solution
5
2. Build Files 5
3. Unit Tests 15
4. Run
  • Collatz.cpp
  • add assertions for pre/post conditions, invariants, etc.
  • run astyle, a code formatter
  • run cppcheck, a static analyzer
  • do not run gcov
  • do not run valgrind
15
5. Acceptance Tests 15
6. HackerRank
  • submit Collatz.cpp to HackerRank
  • pass at least 2 of the 3 tests to be eligible for partial credit
15
7. Continuous Integration 5
8. Documentation
  • create inline comments in Collatz.cpp
  • specify the complexity of every function/method and the entire program in Collatz.cpp
  • run doxygen on Collatz.cpp to produce Collatz.html
  • run git log to produce Collatz.log.txt
  • run git rev-parse HEAD to produce a Git SHA
  • README.md
    • Full Name
    • EID
    • GitLab ID
    • GitLab URL
    • GitLab Pipeline
    • Git SHA
    • HackerRank ID
    • Estimated completion time
    • Actual completion time
    • Comments
5
9. AI Design 10
10. AI Criteria
  • create CRITERIA.md:
    • reversed ranges
    • boundaries
    • overflow
    • cache correctness
    • etc.
  • Criteria should lead to specific tests.
10
Submission
  • create a single PDF of README.md, DESIGN.md, and CRITERIA.md
  • submit that PDF to Canvas

Copyright © cs371p, 1995-2026
Updated 27 Aug 2026