Best Practices in Programming
Agenda
Credit Requirements
- complete assignments throughout the semester
- hard deadlines for submission
- you review work of your colleagues and they cannot wait for it
- must pass all assignments
- larger assignments, e.g., tests and especially the final
implementation have the largest impact
- however, losing points due to sloppiness on smaller assignments may
cost you the better grade
Assignments in Detail
- solo or team work
- team (pairs) for design/implementation
- solo for review work → everybody gets two reviews for their
work
- topics
- initial API design & presentation
- review of someone else’s API design
- writing tests for someone else’s API
- final implementation & presentation
- review of someone else’s library
- announcements and submission via GitLab
- subscribe to receive Forum notifications
- see schedule for deadlines
- presentations during labs
Task 1: API Design (team)
- design libary API
- no implementation (except to make things compile)
- no tests
- documentation
- landing page in
README.md
- basic information about project
- supported features and key concepts
- tutorial-style examples for quick start
- documentation comments in sources
- example program
- separate from the library
Task 1: API Design (team)
- criteria for passing
- submitted on time
- code must compile
- covers key requirements
- criteria for grading
- contents of
README.md
- repository layout
Task 2: Presentation (team)
- present your initial API design
- API style and other design decisions
- key concepts and their usage
- highlights of your design
- 6 teams × 15 minutes per lab
- includes time for discussion
- criteria for passing
Task 3: API Design Review (solo)
- review someone else’s API
- write sample program
- write a review
- review outline
- overview
- supported features
- key concepts and their usage
- comments to specific parts of the code
Task 3: API Design Review (solo)
- criteria for passing
- submitted on time in the right file
- non-trivial content, i.e., not an empty file
- test program integrated into project
- criteria for grading
- structure and flow
- constructive feedback
- length
Task 4: API Tests (solo)
- write tests for someone else’s API
- set-up CI in GitLab to run the tests
- criteria for passing
- CI configuration
- reasonable number of tests
- reasonable test coverage
- criteria for grading
- organization, naming
- test parametrization, coverage
Task 5: Implementation (team)
- incorporate API tests into your project
- two sets from other students
- add more tests if needed
- implement the library providing the API
- finalize API documentation
- generate from source comments
- provide title page describing the design
- document all public elements
- update README.md
- keep essentials
- refer to API documentation for details
Task 6: Progress Presentation (team)
- library overview
- supported features and design decisions
- key concepts
- design changes (if any)
- implementation status
- what works and what is missing
- implementation highlights
- criteria for passing
- presented on time
- presentation “we did nothing and we will do everything next week,
period” is not sufficient for passing, though
Task 7: Final Review (solo)
- review of someone else’s implementation
- general impression, documentation
- API design and functionality
- code quality
- criteria for passing
- submited on time in the right file
- non-trivial content, i.e., not an empty file
- test program and extension integrated into project
- criteria for grading
- structure and flow
- constructive feedback
- signal-to-noise
- length
Grading
API design |
10 |
API design review |
15 |
API presentation |
5 |
Unit tests, CI |
20 |
Implementation |
30 |
Progress presentation |
5 |
Final review |
15 |
1 |
≥ 87 |
2 |
≥ 73 |
3 |
≥ 60 |
4 |
< 60 |
Penalties
- late submission
- avoid: set an internal deadline earlier
- 20% of max points per each started day
- later than 3 days: fail (contact me in emergencies)
- schedule is on the web in a Google calendar
- null solutions: fail
- unbalanced effort in teams