Course Web Site:

Course Overview

This special topics course and (for some) senior seminar will focus on the philosophy, practices, and tools behind free and open source software (FOSS). Topics will include the history behind the "free" and "open source" software movements, how to learn about existing FOSS projects, common processes and and tools used in FOSS development, and open source project management practices. The course will also cover several general software development topics, such as common software architectures, teamwork skills, database concepts, usability, testing, and the ACM Code of Ethics.

This course will have both conceptual and hands-on components. Students will research and present various topics, install and work with real-world projects, and document and reflect on their learning and their software development progress throughout the course.

Prerequisite: Data Structures.


The objectives of this course are for you to:

  1. Become familiar with the philosophy and goals behind free and open source software.
  2. Learn about the practices and tools of FOSS development:
    • Know what they are (see the Topics section below for a partial list).
    • Know why they're considered valuable.
    • Have first-hand, hands-on experience with a number of them, through downloading and installing an open source project, making local changes, and possibly contributing changes back to the original project.
  3. Learn about and further develop your skills in a number of general software development areas (see the Topics section below).
  4. Develop and apply professional life-long learning skills, including learning new computing skills on your own or in a group using professional resources.



Books and resources will be identified throughout the quarter and collected in a growing class bibliography (link to be provided soon).

Activities and Assessment:

Students will engage in a number of activities, including research and reading outside of class, presenting concepts in class, providing feedback on others' presentations, participating in class discussions, researching FOSS projects, downloading and installing projects, adding code, documentation, or test cases to existing projects, and maintaining a COMP 488/490 Growth Journal.

Individual tasks or assignments will be graded on the following scale:

Meets (High) Expectations 4 A
Falls Short of Expectations 2 - 3 B - C (C - B)
Poor Effort 1 D
Not Done 0 F
Stands Out 5  

Individual grades will be combined and weighted as follows:

Topic and concept assessments 30%
Hands-on FOSS work and Growth Journal 35%
Contributions to the class
    (e.g., presentations, audience reflective responses,
    class discussions, collaborative hands-on work)

Attendance and Participation:

Since this class will be highly participatory and collaborative, regular attendance and fully engaged participation is crucial to everyone's learning and will weigh heavily in your grade. Please be sure to talk to me in advance if you must miss any class meetings. Active participation in the class means being on time, being prepared, listening to others, contributing ideas of your own, and asking questions as they come up. Student presentations in this course will be as important as presentations by the instructor; you should obviously prepare for your own presentations carefully, but you should also attend to your classmates' presentations thoughtfully and actively.

Meeting deadlines will also be very important -- in a collaborative setting such as this class, it is essential that you be ready with presentations and complete software development assignments in a timely fashion. Programming projects, in particular, are time-consuming and difficult to predict, but time-management skills are as critical in industry as they are in college.

Collaboration and the Honor System:

This course operates in accordance with the principles of the Kalamazoo College Honor System: responsibility for personal behavior, independent thought, respect for others, and environmental responsibility. In particular, academic integrity is a fundamental principle of scholarship. Representing someone else's work as your own, in any form, constitutes academic dishonesty. Unauthorized collaboration and receiving help from others outside the bounds permitted by the instructor are also violations of the College honor code. You are responsible for working within the permitted bounds, and acknowledging any help from others or contributions from other sources.

Collaborative work: All work done in this course, whether individual or collaborative, should clearly state who contributed to it. Work such as presentations that draw on sources outside of class should clearly indicate the source(s) you used or about which you are reporting. I may occasionally ask members of teams to evaluate the effort and effectiveness of their own work and that of others in the group; anyone who feels that they are being put at a disadvantage because of lack of engagement of someone else in their group should talk to me about it.

Individual work: Formal topic/concept assessments, presentation reflective responses, and the Growth Journal will all be individual efforts.

Any student with a disability who needs an accommodation or other assistance in this course should make an appointment to speak with me as soon as possible.