CS 410 Top: Open Source Software Development in the Unix Environment
| Credit Hours: | 4 |
| Course Coordinator: | N/A |
| Course Description: | This course explores Open Source software engineering for UNIX-like operating systems, especially in comparison to and contrast with traditional/industrial approaches. The focus of the course will be the development and delivery of Open Source software projects for Linux by teams of 1-3 students. Class time will be spent largely in supervised lab work in the Intel Linux Laboratory. Students will be expected to interact with the instructor and each other, prepare and present material, and work effectively using email and the web. |
| Prerequisites: | A software engineering course such as PSU CS 300. Students are expected to have absolute fluency in some appropriate programming language.
Experience with UNIX systems. Experience with UNIX scripting languages and development tools is highly recommended. |
| Goals: | Upon completion of the course, the successful student will be able to
- Explain the philosophy of and explain the distinctions between
- commercial software
- shareware
- freely-available software
- Open-Source software
- Free Software
- Explain key differences between best software development practices in:
- Large versus small projects.
- Commercial software versus Open-Source versus Free Software.
- UNIX versus personal computer development environments.
- Use best Open Source UNIX software engineering practices:
- Specification using common styles and techniques.
- High-quality interface and component design.
- Approved coding techniques.
- Unique practices such as short release cycles, intensive user feedback, user development contributions, and source-level reuse.
- Appropriate Extreme Programming methodologies such as pair programm
ing and flexible specification.
- Understand and use protocol, API, and data format standards as appropriate in software construction.
- Use standard free UNIX tools in software construction:
- traditional UNIX utilities
- GNU compiler tools
- make, autoconf, automake
- RCS, CVS
- Bourne Shell, AWK, sed, and/or similar scripting tools
- gprof, gdb
- Construct a substantial Open-Source application, including:
- Write an appropriate specification.
- Manage a large body of code.
- Perform appropriate V&V techniques.
- Exhibit the ability to enhance and maintain a developed product.
- Use standard techniques for communicating intra-project and disseminating
a project.
- IRC
- mailing lists
- Web pages and Wikis
|
| Textbooks: | None. |
| References: | None. |
| Major Topics: | Software engineering
Software tools
Software lifecycle |
| Laboratory Exercises: | This is an 8-week 40-hour laboratory course. |
| CAC Category Credits |
Core | | Advanced |
| Data Structures |
| |
| Algorithms |
| |
| Software Design |
| 3.0 |
| Computer Architecture |
| |
| Programming Languages |
| |
| Oral and Written Communications: | Every student is required to submit at least __2___ written reports (not
including exams, tests, quizzes, or commented programs) of typically
__10__ pages. |
| Social and Ethical Issues: | About 15% of the course is devoted to social, legal, and
ethical ramifications of various models of open source
development. Students will be graded based on their handling
of these matters in their final report. |
| Theoretical Content: | None. |
| Problem Analysis: | Students will be asked to select and analyze a
problem requiring a software solution, including estimating
difficulty and planning a solution. |
| Solution Design: | Students will design, implement, and
deliver an open source software solution as
part of a team of 1-3 students. |
|