CS 373: Software Engineering



Project #1: Collatz


  • Due: Wed, 9 Sep, 11:59 pm
  • Write a program, individually, to solve Collatz [Python 3.14.2 (10 sec, 512 MB, source 50 KB)].

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)
    • ai_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.py
  • add assertions for pre/post conditions, invariants, etc.
  • run black, a code formatter
  • do not run coverage
  • run mypy, a type checker
  • run pylint, a static analyzer
15
5. Acceptance Tests 15
6. HackerRank
  • submit Collatz.py 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.py
  • specify the complexity of every function/method and the entire program in Collatz.py
  • run pydoc on Collatz.py 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.
  • A Goldfish must be able to create CollatzTest.py from only DESIGN.md and CRITERIA.md.
10
Submission
  • create a single PDF of README.md, DESIGN.md, and CRITERIA.md
  • submit that PDF to Canvas

Copyright © cs373, 2008-2026
Updated 1 Sep 2026