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

Meetings
Th TBD
Location
150B Fitzpatrick Hall
Mailing List (Class)
sp20-cse-40677-01-group@nd.edu
Slack
#cse-40677-sp20
GitLab
nd-cse-40677-sp20

Instructor

Instructor
Peter Bui (pbui@nd.edu)
Office Hours
M/W/F 2:00 PM - 4:30 PM, and by appointment
Office Location
150A Fitzpatrick Hall

Projects

Project 01: Linux Userland
elopez7 , jcharbon , kweingar , meiseman , sbattali , zenciso
Project 02: Raspberry Pi Signage
cbach1 , eatkins1 , emcclung , nyoshida , tblazek
Project 03: Lego Rasterizer
jcepeda , jzhang17 , shannon3 , swells3 , tzheng2
Project 04: Web Terminal
dgalvao , jmeyer5 , kliebsc1 , wtheisen , zsurma
Project 05: TrueGroups
aduong1 , dodunayo , ecunnin2 , jcastro2
Unit Date Topics Deliverables
Infrastructure
Overview Thu 01/16 Open Source Software Development Slides Slides
Sprint 1 Thu 01/23 Sprint
Milestone 1 Thu 01/30 Infrastructure Milestone 1
Design
Sprint 2 Thu 02/06 Sprint Progress 1
Milestone 2 Thu 02/13 Project Design Milestone 2
Prototype
Sprint 3 Thu 02/20 Sprint Progress 2
Sprint 4 Thu 02/27 Sprint Progress 3
Milestone 3 Thu 03/05 Prototype Milestone 3
Spring Break
Packaging
Sprint 5 Thu 03/26 Sprint Progress 4
Sprint 6 Thu 04/02 Sprint Progress 5
Milestone 4 Thu 04/09 Public Announcement Milestone 4
Feedback
Sprint 7 Thu 04/16 Sprint Progress 6
Sprint 8 Thu 04/23 Sprint Progress 7
Milestone 5 Thu 04/30 Debriefing Milestone 5

Coursework

Component Points
Progress Weekly Progress Reports. 8 × 10
Milestones Project Milestones. 20, 4 × 30
Requirements Project Requirements. 5 × 10
Contribution Individual Contribution. 40
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: For each Sprint week, each group will submit a Progress Report via their website, issue tracker, or project organizer that summarizes the work they have done for that week and addresses any questions the instructor has about their work.

  2. Milestones: Following a series of Sprints, groups will need to meet with the instructor to present their project Milestone. This will consist of a short presentation and demonstration and must address the questions the instructor will provide during the development process.

  3. Requirements: Each project must fulfill the five project requirements outlined below throughout the course of the semester.

  4. Contribution: At the end of the semester, students will be asked to anonymously rate or evaluate their group members 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. Continuous Integration: The project must incorporate the use of automated build, integration, testing, and deployment systems along with the use of containers or virtual machines.

  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.