PSU CS 410/510: Advanced Open Source Software Engineering
Instructor: Bart Massey <email@example.com>
Time: Monday/Wednesday 2:00-3:50
Place: Engineering Building Room 103
CRN: 14941 (410), 14942 (510)
Email List: <firstname.lastname@example.org>
As always, this is a tentative syllabus. Everything here is subject to vast change with little notice. Course content and mechanics are described at the end of this document, so course participants should go there first.
2006/10/3: Many guest speakers now confirmed: see below.
2006/9/28: The first course email has been sent. If you have not received it yet, something may be wrong with your list subscription.
The catalog says: The open source development model is becoming an important influence upon proprietary software development models. This course will survey the tools and techniques used in open source software development, and the community and project management and collaboration strategies use in these projects. Emphasis will be placed upon tool-driven development, the role of source code management systems, and open development processes and tools. Areas in which open source practices can use improvement will also be considered. Prerequisite is PSU CS 300 or equivalent knowledge of standard software engineering methodology and practice.
Open Source is a new thing built on old foundations. Indeed, the principles and practice of open technology stretch way back beyond the computer to the beginnings of scientific thought. In this course, we will explore the engineering of open source, in contrast to the development of open source; the latter is the focus of much coursework at PSU. In the process, we will compare and contrast Open Source Software Engineering (OSSE) with traditional and modern (e.g. "agile") software engineering, and with the practice of engineering outside of computing. We will concentrate on the key areas in which OSSE has demonstrated particular virtue, and those in which it poses particular problems. A tentative topic list for discussion includes:
- Asynchronous development: loose and cooperative scheduling
- Distributed development: working without borders
- Tool-driven development: tools and bootstraps of tools
- Source-driven development: it's all about the code
- Networking: open source and the Internet
- Security: Kerckhoffs' paradise
- Scripting and language construction: languages and bootstraps of languages
- Volunteerism: engineering for unrewarded development
- Business: constraints when doing OSSE in a for-profit environment
- Devices: engineering for actual computers (darn it)
- GUI: engineering interfaces with geeks for everyone
Discussion of these topics will be organized around two basic ideas. First, the technical practices and processes of OSSE have evolved around the topics above. We will focus in particular on:
- Source Code Management: tools and practices for source-driven development
- Static and Dynamic Analysis: tools for getting code right
- Reporting and Defect Capture Tools: Bugzilla and stuff
Second, a topic that is emerging as highly important in the community is the study of the social practices and processes of OSSE. We will look at papers (many from Europe) focusing on
- Motivations for Participation: engineering to support it
- I-mode (individual) vs C-mode (community): two different things?
- Development Patterns: process engineering
Of course, the above is just a starting point. We will go where the topic takes us, always keeping in mind that the topic is "Open Source" (not SE in general) "Software Engineering" (not development) and "Advanced" (at the frontier of the discipline). Should be fun!
The day-to-day mundanities of this course will be a bit different from the usual PSU fare. Current students, please read and understand these few paragraphs so that you know what you are getting into.
This will be a seminar-style course, which may be something that PSU students, especially undergraduates, are not familiar with. Instead of the usual set syllabus and textbook, the class will collaborate on selecting topics of interest, identifying readings on those topics, and reading and presenting them. Guest lecturers will also present material of relevant interest. The catalog says: Readings will be drawn from published work on open source software engineering, and will be supplemented by web content and by example.
Thus, assignments will be highly individualized, and grading will largely be by course attendance and participation in course activities. This is not a format suitable for everyone—students struggling early on are asked to drop the course rather than make a grading problem for its instructor.
This website will be one focus of communication. This is a "wiki" website. Anyone enrolled in the course can register (with the proper password, which will be given in class) to edit the site content. In addition, students will be required to sign up for the course discussion email list. Assignments will be given to increase list participation.
There will be no regular office hours, but students are encouraged to contact the instructor any time by email for an appointment if there are things that seem worth discussing.
As always, if you do something that violates the University's or the Department's Student Conduct code, there will be the most severe penalties I can manage. In particular, if you plagiarize (use other people's ideas, text, or code without acknowledgment) I will do what I can to end your academic career. If you have questions, please contact me for clarification.
This wiki is powered by ikiwiki.