Syllabus


Instructor:  
Course Web Site:   http://www.cs.kzoo.edu/cs488/ (or its alias, http://www.cs.kzoo.edu/cs490/)


Course Overview

This special topics course and (for some) senior seminar will focus on open source software development philosophies and practices, as well as general software development topics. Students will study the history behind the "free" and "open source" software movements and deepen their software development skills, including analyzing existing open source projects, developing and refactoring code, developing test cases, interacting with a relational database, working within a team, and managing large projects. Students will also further their understanding of their professional responsibilities as software developers, and become familiar with 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.

Objectives

The objectives of this course are for you to:

  1. Broaden your knowledge and understanding of various software engineering / software development topics.
  2. Further develop your software development skills in a number of areas through hands-on experience with one or more existing open source projects.
  3. Develop and apply professional "life-long learning" skills, on your own and in a group, using professional resources.
  4. Become familiar with the philosophies and goals behind the free and open source software movements.


Topics:

In this course we will address many, although probably not all, of the following topics. The specific set of topics we focus on will depend in part on the previous experiences, interests, and project choices of the students in the class.


Activities and Assessment:

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

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, engaging in one or more existing open source software 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 10%
Individual growth as evidenced in Growth Journal 45%
Contributions to the class
    (e.g., presentations, presentation reflective responses,
    class discussions, project contributions & leadership)
45%


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.