CPSC 225: Topics in Application Programming:
Humanitarian Open-Source Software Development
Course Syllabus Fall 2009

Catalog Description

The study of a specific topic related to the application of principles of programming to real world problems. Topics will vary from year to year depending on current issues in programming or interests of the instructor. The topic for fall 2009 will be Humanitarian Free and Open Source Software (FOSS) development. This course will be open to CS students from Connecticut College and Wesleyan University under the
CTW Mellon grant and will be taught as a seminar/project course using video conferencing technology for weekly class meetings. The course will involve analyzing, designing, and implementing open-source software. Students can expect to work in teams one or more of the real-world projects supported by the Humanitarian FOSS project.

Classrooms

Tuesday/Thursday 2:55 - 3:10 PMLSC 137 - Video Conference Room

Texts

We will use a variety of online tutorials and teaching resources.

About This Course

  • This is a video conference course offered through the video conferencing facilities at Trinity, Wesleyan, and Connecticut College. It is supported by the schools' joint Mellon Foundation grant.

  • The course context will be divide more or less evenly between technical topics on FOSS development methods, tools, and practices, and discussion topics on FOSS history, principles, licensing, and impact on society and on the computing profession.

  • This is a project course. We will be engaged together in one or more ongoing humanitarian FOSS development projects supported by the Humanitarian FOSS project, a project supported by a CPATH grant from the National Science Foundation. See here for a list of H-FOSS projects.

  • We will start fast. During the first month of the semester we will learn various software design principles. We will learn how to use Eclipse, an integrated development environment (IDE) as well as variety of other open source development tools, including databases (MySQL), version control software (SVN), code repositores (Google code, Sourceforge), documentation software (PhPDoc, Javadoc).

  • We will not teach programming. If your only language is Java, you will be working on a Java project. If you know PhP already, you may be working on a PhP project.

  • This course will require substantial initiative, effort, and teamwork on your part. After the first four or five weeks, we will start working on real software that someone else wrote and will learn by doing---reading, documenting, identifying and fixing bugs, developing unit test software. This may be a little chaotic and will be a little bit like on-the-job training.

  • We will work in teams. Throughout the semester you will be a member of one or more development teams. That means you must be willing to work cooperatively with others in the class. It also means that others will be depending on you to hold up your side of the effort.

  • We will use peer evaluation. You will be required to evaluate your own and your peers' work honestly and constructively.
  • Expectations will differ depending upon what you bring to the course. Because there is a wide range of backgrounds coming into the course---we have seniors and sophomores, with varying course preparation and programming language knowledge---performance expectations will vary. Students will be expected to contribute at their appropriate skill levels and to help others acquire the skills and knowledge needed to contribute to the HFOSS projects.

    Course Policies

    Attendance

    Attendance is required--unless you have H1N1. If you miss a meeting for whatever reason---illness (other than H1N1), travel, over-sleeping---you must make up the absence by contributing 2-3 pages of written work that contributes to the course and or its projects. Failure to make up missed classes or an otherwise spotty attendance record, will lead to a reduction in your final grade for the course.

    Reading Assignments

    The course schedule will list the reading and homework assignments for each class meeting. You are expected to finish the reading before coming to class.

    Class Participation

    You should be prepared to participate each week and (volunteer to lead occasionally) class discussion of readings, homework and assignments, and tutorials. If you have special skills that would contribute to what we are learning and doing, you may be asked to give a brief presentation and/or tutorial to the class.

    Homework/Assignments

    During the first month of the semester there will be some standard homework and/or programming assignments as we quickly learn the knowledge and skills needed to contribute to FOSS projects. During the last 8-9 weeks of the semester, assignments will be primarily consist of work on the assigned projects.

    Late Work

    Late work will be assessed a penalty on your grade for the assignment.

    Video Conference Facilities

    Teaching and taking this course through the video conference facilities presents an extra challenge for all of us. Please be patient and understanding and do whatever you can to help improve the communication in the class.

    Grade Determination

    As noted above, we will use, in part, a peer grading system. A key characteristic of open-source development is that developers put their work out in public for others to comment on and evaluate. We will develop an evaluation rubric that will provide a structure and guidelines on how to evaluate one's own and one's classmate's work. The various assignments that will be peer graded include (but are not necessarily limited to) the various milestones of the software development cycle, such as requirements documents, design documents, user and programmer guides, testing design documents, and final project presentations. The relative weights of these assignments will be specified when the assignments are posted.

    Generally, your grade will be based on the following components: Class participation and attendance (25%), homework assignments (25%), project contributions (20%), individual written work (code, documentation, tutorials) and presentations (30%).