Textbook: Producing Open Source Software How to Run a Successful Free Software Project By Karl Fogel October 2005 ISBN 10: 0-596-00759-0 ISBN 13: 9780596007591 Overview: Students will use the semester to learn how open source software is developed in terms of its process as a cognitive unit of evolving software. They will use real world development tools such as a version control system, bug tracker (ticketing system), mailing list, as well as open source IDE's or programming text editors, open source compilers (or interpreters depending on the chosen language for implementation), documentation generation tools will also be used for both the overview of software usage and the API for the code base, we will also use a wiki for public access to the documentation, an irc channel is also a potential means of communication as this ia quite common for development discussions. Course work: The students will start the semester with lecture, the lecture will cover topics out of the text book in order to gain a grasp on how the process as a whole happens. The lecture portion will be generally fast paced as most of the topics can be covered quickly in order to move on to the development portion. The development portion will start roughly 2-3 weeks into the course and will begin either with a fresh slate or pick up where the previous semester left off in terms of bug fixing, enhancements, etc. Key points of a good software project will be enforced such as code style, modularity, and potentially a design pattern or two depending on the direction of the software project. Once the development cycle has begun, students will be given assignments in form of either a module to implement or a required number of commits to the version repository in both code and documentation form with a base line for an acceptable commit (in order to avoid several one line commits just to "get the grade"). Exams will still be given over content from the text book as well as course lecture will continue in this fashion (in order to further refine topics, but the requirements to start development will be covered early on). The idea for the software project is to team up with the DF track majors and create some sort of a DF tool which can be decided upon before class starts by the Faculty or can be decided in class by a combination of students. This software project will have a user base (The DF Tools course) and I would like to encourage the DF Tools students to comment on the tool during their time in their course and either post to the mailing list, file a ticket to request a feature enhancement, or report a bug. Infrastructure: - Version Control System: Mercurial or Git - Bug/Ticking System: Bugzilla or Trac - Wiki: MoinMoin or Trac (built in) - Editory/IDE: Anything with syntax highlighting -- The rest will be enforced with code style standards - Programming Languages: C or Java -- Both are already taught at SHSU and their respective courses could be pre-req's to this one, therefore no additional need for teaching a language in this course. -- C would be preferred as this language is "taught less" and would allow the students to branch out slightly more. Also would provide interaction with gcc and gdb. -- Java would have the advantage over C as it is cross platform and we would not have to force an OS/platform on the students as I think change of OS might be a bit much to add to all of the material already being covered in the course. (C can be cross platform, but it ends up limiting the language as most of the highly capable libraries for it are platform specific)