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!
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) |
The class meeting time will be used for lecture unless it is one of the following types:
Component | Points |
---|---|
Progress Weekly Progress Reports. | 8 × 5 |
Milestones Project Milestones. | 5 × 40 |
Requirements Project Requirements. | 5 × 5 |
Contributions Individual Contributions. | 35 |
Total | 300 |
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:
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.
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.
Requirements: At the end of the semester, the instructor will evaluate how well the final project met the Project Requirements enumerated below.
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.
Each course project will encompass all the elements necessary for a successful open source project:
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.
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.
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.
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.
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.
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.