Open Source Software for Humanity: Syllabus

Required Texts
| Davis and Phillips, Learning PhP and MySQL, 2nd Edition (required)

| Williams and Lane, Web Database Applications with PhP and MySQL, 2nd Edition (optional)

What's Different About This Course

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


 * This course is supported in part by a |National Science Foundation CPATH grant to the |The Humanitarian FOSS Project, a project aimed at exploring whether building humanitarian free and open source software (FOSS) can help revitalize interest in computer science.


 * This is a project course . We will be engaged together in a real humanitarian open-source development project. During the course we will be participating in the |Sahana project, an international project devoted to developing disaster recovery IT software. Everyone in the course will contribute at their appropriate skill level to the design, development, testing, and documentation of Sahana's volunteer management (VM) module, the module that was initially developed by the |Trinity Sahana team.


 * We will learn computer programming . During the first two months of the semester we will learn:
 * to program in the PhP programming language;
 * to build and use simple databases in the MySQL data base management system;
 * to use a variety of open source software development tools, such as the SVN code management system and the PhPDoc, cod documentation system;

In addition to the practical programming skills we will learn various software design and development principles. Learning to build open source software will require substantial initiative and effort on your part. After we achieve an appropriate skill level, we will be working on real open source software and will learn by doing. The learning process may be a little chaotic at times 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.


 * Expectations will differ somewhat depending upon what you bring to the course. Because there is such a wide range of backgrounds coming into the course---we have freshmen and sophomores, some have never programmed before, others have programmed in other languages but have little or no PhP/SQL experieence and still others have been already developed good programming skills---performance expectations will vary somewhat. Students will be expected to contribute at their appropriate skill levels. Because much of the first eight weeks are focused on learning PhP/MySQL, those who already know how to program will be asked to help others learn how to program.

Attendance
Attendance is required. We have only 26 class meetings during the semester. If you miss a class for whatever reason---illness, travel, religious holiday, over-sleeping---you must make up the absence by writing a 1-2 page paper on what you missed and hand it in by the next class. Failure to turn in an acceptable paper or an otherwise spotty attendance record, will lead to a reduction in your final grade for the course.

Reading Assignments
The | course schedule lists the reading and homework assignments for each class meeting. You are expected to finish the reading before coming to class. We will use part of the lectures to go over questions that come up in the assigned reading and to discuss articles on the open source movement.

Homework and Quizzes
Homework assignments will be posted on the daily | schedule. These should be done before class on the posted due date. Not all homework assignments will be graded. Some will be discussed in class. Homework solutions will be posted on the web site.

Periodic quizzes on the reading may be given during class meetings. Make-up quizzes will not be given.

Programming Assignments
There will be several short programming assignments during the term in which you will be asked to design, code, test and debug an entire program on your own (or with a partner) and you will be evaluated on the program's design, correctness and readability.

Term Paper
Each student will write a 10-12 page term paper on a topic related to the open source movement.

Late Work
All assignments must be submitted by the due dates. Late work will receive a penalty. Unless there is a legitimate reason for handing in an assignment late, graded work will not be accepted more that one week late.

Grade Determination
Final grades are determined by taking weighted averages of your grades on exams, quizzes, programs, homework, and in class participation. There will be a mid-term and final exam. To calculate your letter grade at any time during the semester, just calculate your average on exams, programs, labs, homework, and quizzes, multiply each by its weight and add them together. A final average of 90% or better is A-, 80% or better is B-, and so on.