This course will be conducted as a mixture of an advanced seminar course and a software development work environment. Teams of students will develop and maintain several software products for the registrar's office, our on-campus "customer." In addition, students will give presentations on various aspects of software engineering and will write reflective papers at the end of the quarter on what they learned about the process of software development and about the responsibilities of software developers.
| Instructor: |
Freeman, Freeman, Bates, and Sierra, Head First Design Patterns, O'Reilly Media, 2004.
McLaughlin, Pollice, and West, Head First Object-Oriented Analysis and Design, O'Reilly Media, 2006.
Pilone and Miles, Head First Software Development, O'Reilly Media, 2008.
Additional Recommended Reference: Vermeulen, et al, The Elements of Java Style, Cambridge University Press, 2000.
You can find other references in the class bibliography.
Goals: At the conclusion of this course, students
should have a basic understanding of the issues that surround large-scale software
development, including software maintenance,
and of the various phases of the software lifecycle. Students should
also be familiar with the some of the tools and techniques of software
engineering, including design patterns, use cases, UML diagrams,
pair programming, version control tools,
testing tools such as JUnit, build tools such as ant and
make, etc. Finally, students should be familiar
with some of the languages and tools used in web-based
programming .
Prerequisite: Data Structures.
| Weeks 1 - 2: | Introduction to Software Development "Heavy" Methods vs. "Agile" Methods |
| Weeks 1-4: | Meeting with Customer; Getting Project Off the Ground |
| Weeks 5 - 9: | Continue Project Development Presentations on Various Software Development / Software Engineering Topics (specific dates to be announced) |
| Week 10: | Final Release to Customer; Evaluation |
| Exam Week: | Reflective Paper Due |
| Attendance and Active Participation in Class | 15% | |
| Full Participation in Project | 50% | |
| Presentation(s) | 15 - 20% | |
| Reflective Paper | 15 - 20% |
Since this class will be a mixture of an advanced seminar and a real-world software development project, your attendance is crucial. Please be sure to talk to me in advance if you must miss any class meetings. Also, please note that in a collaborative setting such as this class, it is essential that you be ready with presentations and complete your pieces of team assignments in a timely fashion. Programming projects, in particular, are time-consuming and difficult to predict, but time-management skills are as critical in industry as they are in college.
Reading assignments, announcements, links to class presentations, and other material will be made available on the CS 487 homepage:
http://www.cs.kzoo.edu/cs487/ Students are responsible for checking this resource frequently.
Collaboration and the Honor System:
This course operates in accordance with the principles of the Kalamazoo College Honor System: responsibility for personal behavior, independent thought, respect for others, and environmental responsibility. In particular, academic integrity is a fundamental principle of scholarship. Representing someone else's work as your own, in any form, constitutes academic dishonesty. Unauthorized collaboration and receiving help from others outside the bounds permitted by the instructor are also violations of the College honor code. You are responsible for working within the permitted bounds, and acknowledging any help from others or contributions from other sources.Software development projects: Most of the software development in this class will be highly collaborative. You will be assigned to groups for these assignments, and working effectively as a team will be an important component. Your responsibilities under the Honor Code include contributing to the team in all ways, documenting everyone who worked on any piece of code, and acknowledging all help you and your team receive from any source, including books, articles, classmates, your instructor, etc. Teams will be working on separate assignments, so discussing group assignments with members of other teams is allowed in this class. I will occasionally ask all the members of a group to evaluate the effort and effectiveness of the other members of their group.
Some short-term, exploratory projects (sometimes known as "spikes") may be done individually.
Class presentations should represent your own analysis and synthesis of ideas drawn from one or more sources. Your presentation should indicate clearly the source(s) you used or about which you are reporting. Some presentations may be collaborative; most will probably be done individually.
The Reflective Paper must be entirely your own work.
Programming Guidelines:
Two documents, the CS Program Style Guide and Documentation Standards, describe the Java programming style and documentation standards for courses at K. You may also find the Java class template file helpful. Style and documentation conventions often vary from language to language, but the underlying goals of providing readable, well-documented code should still be met.
Attendance and Participation:
Regular attendance and fully engaged participation is crucial in this course. Active participation in the class means being on time, being prepared, listening to others, contributing ideas of your own, and asking questions as they come up. Student presentations in this course will be as important as presentations by the instructor. You should obviously prepare for your own presentations carefully, but you should also attend to your classmates' presentations thoughtfully and actively.