This course prepares students to become active participants in open source projects. It begins with an overview of the philosophy and brief history of open source development, followed by an in-depth look at different types of open source projects and the study of various tools involved in open source development. In particular, it covers the collaborative nature of open source projects, community structure, version control systems, licensing, intellectual property, types of contributions (programming and non-programming) and the tool-chains that enable such contributions. The students are expected to contribute to existing open source projects.

Course Length

{{{courselength}}}

Student Characteristics

This course is upper-level undergraduate elective. The first time this class was offered, there were 38 students.

Prerequisites

Familiarity with a programming language for the chosen FOSS project. Basic familiarity with command line tools and a version control system. Formally: Computer Systems Organization course (required prerequisite for all electives).

Infrastructure

The class meets twice a week for 75 minutes each time. In general, one of the class meetings will consist of discussions of the reading assignments and/or guest speakers, and the other class meeting that week will be for learning activities, project status updates, and presentations, or time to work on the project.

Use of specific software and technologies depends on the chosen FOSS projects.

Learning Objectives

objectives & prerequisites should be active, student-centered, specific, and measurable