An introduction to principles of software engineering and best practices. Students work in teams on the design, implementation, and deployment of a term-long capstone project that solves a problem on campus. Structured as supervised independent study with weekly milestones and weekly meetings for design discussions and code reviews with an advisor.
Students will work on projects in teams of four. Each team will meet weekly with its assigned advisor for two hours on Thursday afternoons or evenings; times to be arranged. Enrollment limited. Apply at cs164.github.io.
Any six CS courses numbered 50 or higher (or, with permission, multiple years of programming experience).
The term’s overarching goal is not only to design and implement solutions to problems on campus but to deploy them at term’s end as well. It’s then left to each team to decide how and whether to support its solution beyond term’s end. Teams are encouraged but not required to open-source their projects at term’s end.
The course requires only that teams’ projects be version-controlled on GitHub and, if web apps, containerized with Docker. All other implementation details (including languages, frameworks, and libraries) are left to each team and its advisor to decide.
Each week, each team will be assigned one or more milestones, each associated with one or more issues, each of which defines a feature or identifies a bug to be addressed via a pull request (or prescribes some other task). Issues may be labeled as having higher priority or lower priority. Milestones will ordinarily be due on Mondays and/or Thursdays.
Each member of a team should expect to contribute at least 15 hours per week to the team’s milestones.
Grades at term’s end will be determined by the extent to which teams (and the members thereof) complete their assigned milestones each week.
Teams that complete (nearly) 100% of each milestone will likely receive A-range grades at term’s end. Teams that complete most of each milestone, save for some issues having lower priority, will likely receive B-range grades at term’s end. Teams that complete some of each milestone, save for some issues having higher and/or lower priority, will likely receive C-range grades (or lower) at term’s end.
Every member of a team will ordinarily receive the same grade at term’s end except in cases of inequitable contributions.
The essence of all work that you submit to this course must be your own. You are welcome to search for solutions to problems online so long as you cite any sources of inspiration. You are welcome to ask others for help so long as that help does not reduce to another doing your work for you.
If the course refers some matter for disciplinary action and the outcome is punitive, the course reserves the right to impose local sanctions on top of that outcome that may include a failing grade at term’s end. The course ordinarily recommends exclusion (i.e., required withdrawal) from the course itself.
If you commit some act of academic dishonesty but bring it to the attention of your advisor within 72 hours, the course may impose local sanctions that lower your grade at term’s end, but the course will not refer the matter for further disciplinary action except in cases of repeated acts.