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
M/W/F 9:25 AM - 10:15 AM
Location
129 DeBartolo Hall
Mailing List
sp24-cse-40677-01-group@nd.edu
Slack
#cse-40677-sp24
GitHub
nd-cse-40677-sp24

Instructor

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

Projects

Project 01: WISSH
abannan, cvalenc3, hsanche5, jporubci, kwilli29
Project 02: DocuDump
cbowers4, dblittsc, jflanag5, kconnor3
Project 03: Creativity Optional
abayanzu, cbrown62, jcaven, jlindel2
Project 04: Odyssey
cdixon5, cmatthe3, dblanco, egonza26, vmendez
Project 05: Babel World
brodrig5, dbrooks6, snelso24
Project 06: Branches of Fate
jpireshe, mchen24, ztong2
Project 07: AdVisor
gelbling, gpradofe, zfarley
Project 08: Bookworm
jklonosk, scarnogu, toconn23
Project 09: Human Resources
arodri37, dvazque2, scapodic, smancin2
Project 10: Atlas
dbrown39, etracey, mturzai, wrobbins, yvu
Project 11: Cardtorium
abattag2, jban, jwielgus, mliu5
Unit Date Topics Deliverables
Milestone 1: Infrastructure
Open Source Software Wed 01/17 Syllabus, Copyright, History Slides 00 Slides 01
Fri 01/19 Licenses, Culture, Principles Slides 02 Progress 0
Infrastructure Mon 01/22 Sprint
Wed 01/24 Briefing (Odds) Progress 1
Fri 01/26 Briefing (Evens)
Milestone 1 Mon 01/29 Sprint
Wed 01/31 Presentation (Odds) Milestone 1
Fri 02/02 Presentation (Evens)
Milestone 2: Design
Design Mon 02/05 Sprint
Wed 02/07 Briefing (Evens) Progress 2
Fri 02/09 Briefing (Odds)
Milestone 2 Mon 02/12 Sprint
Wed 02/14 Presentation (Evens) Milestone 2
Fri 02/16 Presentation (Odds)
Milestine 3: Prototype
Prototype Mon 02/19 Sprint
Wed 02/21 Briefing (TBD) Progress 3
Fri 02/23 Briefing (TBD)
Mon 02/26 Sprint
Wed 02/28 Briefing (TBD) Progress 4
Fri 03/01 Briefing (TBD)
Milestone 3 Mon 03/04 Sprint
Wed 03/06 Presentation (TBD) Milestone 3
Fri 03/08 Presentation (TBD)
Spring Break
Milestone 4: Packaging
Packaging Mon 03/18 Sprint
Wed 03/20 Sprint Progress 5
Fri 03/22 Briefing (TBD)
Mon 03/25 Briefing (TBD)
Wed 03/27 Sprint
Fri 03/29 Easter
Milestone 4 Mon 04/01 Easter
Wed 04/03 Briefing (TBD) Progress 6
Fri 04/05 Briefing (TBD)
Mon 04/08 Sprint
Wed 04/10 Briefing (TBD) Progress 6
Fri 04/12 Guest Lecture
Mon 04/15 Presentation (All) Milestone 4
Wed 04/17 Sprint
Fri 04/19 Sprint
Milestone 5: Debriefing
Debriefing Mon 04/22 Sprint
Wed 04/24 Briefing (TBD) Progress 7
Fri 04/26 Briefing (TBD)
Milestone 5 Mon 04/29 Presentation (TBD) Milestone 5
Wed 05/01 Presentation (TBD)

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.

Major Project Requirement

This class includes a semester project that satisfies the "Major Project" requirement for the B.S. in Computer Science degree. This project will be much larger in scope than a regular assignment and will require at least eight weeks to complete. Students will design the overall goals and requirements of the project with guidance from the instructor. The project will be developed gradually through the semester by producing a proposal, design documents, progress reports, and presentations as noted in the class schedule. The project will necessarily draw upon skills and knowledge from prior classes, such as Fundamentals of Computing, Data Structures, and Systems Programming. The final deliverable of the project will be a working software artifact or service that will be evaluated for overall competence in computing skills.