CSCI 499, Section ID: 29954
M/W 4-5:50pm, GFS 107
Instructor: Barath Raghavan
Office Hours: Tue 2-3pm
This course will concern how to build robust and elegant software, built around a single project, and leveraging best practices from industry. You will write, over the semester, a single medium-sized piece of software in C++ (several thousand lines) from scratch. More importantly, every line of code will be code reviewed and we will iterate on the specifics of project designs and implementations over the semester. We will put into practice code review (both in and out of class, including peer review), design review, unit testing, style guides, interpretation of automated analysis, and benchmarking. You will do coding projects individually but will do peer review and collaborate in later phases of the project. Class time will be largely devoted to code/design review and discussion, and to student presentations.
The course will involve discussion and group work during class and very little traditional lecture. The focus of the class will be on submitting code for review and fixing it after review, and presenting the design and review of others' code.
There will be a few reading assignments, mostly in the early weeks of the semester, and class discussion about those reading assignments. There will be no written responses required for reading assignments.
Details of grading will be provided in class. Unlike in other courses, code can and should be submitted and resubmitted, with grades being assigned only on the final version. Grades will be determined based upon the project, class participation, and attendance as follows:
75% Project (25% for each of 3 milestones)
25% Class participation and attendance
Date | Reading | Assignment Due |
---|---|---|
M 1/7 Welcome |
- | - |
W 1/9 |
|
|
M 1/14 |
|
|
W 1/16 RPC Project |
|
|
M 1/21 Holiday |
- | - |
W 1/23 Concurrency RAII |
- |
|
M 1/28 Design Testing |
- |
|
W 1/30 Refactoring |
- |
|
M 2/4 | - |
|
W 2/6 Testing |
|
|
M 2/11 | - |
|
W 2/13 | - | Project Phase 1 Due 11:59pm on 2/14 (via pull request) |
M 2/18 Holiday |
- | - |
W 2/20 | Design presentations | |
M 2/25 | Q+A | |
W 2/27 | Full stack design | |
M 3/4 | Full stack design | |
W 3/6 | Practice of Programming | |
M 3/11 Holiday |
||
W 3/13 Holiday |
||
M 3/18 | Optimization | |
W 3/20 | Phase 3 | |
M 3/25 | Golang | |
W 3/27 | Golang systems | Project Phase 2 Due (push to master) |
M 4/1 | Deriving design principles | |
W 4/3 | Course design | |
M 4/8 | No class |
|
W 4/10 | Introspection |
|
M 4/15 | Channels |
|
W 4/17 | Awful code |
|
M 4/22 | State machines |
|
W 4/24 | TBA | Project Phase 3 Due (push to master) |