| 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
|