CSE 40677 Open Source Software Development is an elective Computer Science and Engineering course that is designed to give the advanced student the opportunity to create and implement a significant open-source software project. The goal is not merely to write code, but to create the infrastructure necessary for a sustainable project, including web pages, documentation, bug tracking, discussion groups, and more. With luck, the project may gain new contributors and have a life beyond that of the semester project!

Class Information

Lecture
T/TH 11:00 AM - 12:15 PM
Location
356A Fitzpatrick Hall
Mailing List (Class)
sp22-cse-40677-01-group@nd.edu
Slack
#cse-40677-sp22
GitHub
nd-cse-40677-sp22

Instructor

Instructor
Peter Bui (pbui@nd.edu)
Office Hours
M/T/W/TH 2:00 PM - 3:30 PM, and by appointment
Office Location
326D Cushing Hall

Projects

Project 01: Kelpup
bgoodwin , cfinnan , jboueri
Project 02: Raudio
nmcshea , pgierl , srodrig9 , tfaughna
Project 03: GnomeHub
ckammes , ckusek2 , rmendiza , varora
Project 04: PartyFish
aleone2 , csaca , dmccart9 , jgordley , rmccarte
Unit Date Topics Deliverables
Milestone 1: Infrastructure
Open Source Software Tue 01/11 Copyright, History Slides Slides
Thu 01/13 Licenses, Culture, Principles Slides Progress 0
Infrastructure Tue 01/18 Sprint
Thu 01/20 Briefing Progress 1
Milestone 1 Tue 01/25 Sprint
Thu 01/27 Presentation Milestone 1
Milestone 2: Design
Design Tue 02/01 Sprint
Thu 02/03 Briefing Progress 2
Milestone 2 Tue 02/08 Sprint
Thu 02/10 Presentation Milestone 2
Milestine 3: Prototype
Prototype Tue 02/15 Sprint
Thu 02/17 Briefing Progress 3
Tue 02/22 Sprint
Thu 02/24 Briefing Progress 4
Milestone 3 Tue 03/01 Sprint
Thu 03/03 Presentation Milestone 3
Spring Break
Milestone 4: Packaging
Packaging Tue 03/15 Sprint
Thu 03/17 Briefing Progress 5
Tue 03/22 Sprint
Thu 03/24 Briefing Progress 6
Milestone 4 Tue 03/29 Sprint
Thu 03/31 Presentation Milestone 4
Milestone 5: Debriefing
Debriefing Tue 04/05 Sprint
Thu 04/07 Briefing Progress 7
Tue 04/12 Sprint
Thu 04/14 Briefing Progress 8
Milestone 5 Tue 04/19 Sprint
Thu 04/21 Presentation Milestone 5

Class Meetings

The class meeting time will be used for lecture unless it is one of the following types:

  • Sprint: No class meeting. Students will meet with their individual group to work on the current milestone.
  • Briefing: No class meeting. Students will meet with their individual group to brief the instructor on their current progress.
  • Presentation: Students will present their group's milestone work to the class.

Coursework

Component Points
Progress Weekly Progress Reports. 8 × 5
Milestones Project Milestones. 5 × 40
Requirements Project Requirements. 5 × 5
Contributions Individual Contributions. 35
Total 300

Grading

Grade Points Grade Points Grade Points
A 280-300 A- 270-279
B+ 260-269 B 250-259 B- 240-249
C+ 230-239 C 220-229 C- 210-219
D 195-209 F 0-194

Students will be graded on the following items:

  1. Progress Reports: Each non-Presentation week, every group will submit a slide deck to their group Google Drive folder that summarizes the work they have done for that week, addresses any questions the instructor has about their work, and describes their plans for the upcoming week.

  2. Milestones: At the end of each phase of the development cycle, every group will present their work to the class in the form of a short presentation and demonstration that addresses the requirements for that particular milestone.

  3. Requirements: At the end of the semester, the instructor will evaluate how well the final project met the Project Requirements enumerated below.

  4. Contributions: At the end of the semester, students will be asked to anonymously rate or evaluate their group members and external contributors to determine their overall contribution to the project.

Project Requirements

Each course project will encompass all the elements necessary for a successful open source project:

  1. Web Presence: A public, high quality, and editable web presence which includes a compelling project vision, instructions for downloading and using the software, technical documentation and links regarding the details of the software, and a description of the membership and governance of the project.

  2. Code Repository: The project source code must be maintained in a public code repository, and changes accepted to the project through a standardized process. There must be a simple and well-documented process for building and using the source code.

  3. Communal Development: Public venues for reporting bugs, requesting help, and discussing project features. These may include issue trackers, forum software, or whatever is most appropriate to the project. Project development must be carried out using these tools.

  4. Contribution Process: The project must have a formal process for accepting contributions including mechanisms for code review, testing, and automated verification and deployment of software artifacts.

  5. MVP: The final version of the software must meet the requirements of a Minimum Viable Product (MVP) which will be articulated by the team early in the semester.