CS345 - Software Engineering - Spring 2005-2006
Charlie Peck and Chris Hardie
Department of Computer Science - Earlham College
CS345 examines the theory, techniques, and technologies associated with the design, construction, and testing of software systems, particularly large software systems. Students learn various approaches to functional decomposition and system architecture. The course explores the tools used for building and testing software systems, particularly in the context of open source software. Students will participate through research, lab work, and personal and group projects.
Prerequisite: CS310: Algorithms and Data Structures
The class meets on Tuesdays and Fridays in Dennis 231 from 1 - 2:20 PM. Class sessions will be a combination of lecture and seminar formats, with the occasional lab or film viewing. We'll cover the course's primary topics in these sessions, with reading and homework assigments that provide opportunities to gain a deeper understanding of the underlying issues and techniques of software engineering. Actual labs and software development projects will provide a hands-on approach to exploring these topics throughout the semester. Given that this is a 3 credit course, it is expected that you will spend an average of 10 hours per week (including in-class and lab time) on the course and related material for the duration of the semester.
Some people scoff when the word engineering is used with software. In truth, a large percentage of the problems facing software designers and developers today can be directly traced to a lack of an engineering mindset in the discipline. For the most part software development is still a craft, as opposed to a science in the way that civil or mechanical engineering are. In the same way that a carpenter (as a craftsperson) can build a small house but not a skyscraper, it is difficult for a software developer to build a large software system (operating system, database system, web application, etc.) without the theories and tools of an engineer.
Charlie Peck
E-mail: charliep@cs.earlham.edu
Website: http://www.cs.earlham.edu/~charliep/
Chris Hardie
E-mail: chris@cs.earlham.edu
Website: http://www.chrishardie.com/
All reading assignment page numbers are inclusive unless otherwise specified. Readings are due as specified in the course schedule, and completion of readings will be factored into the participation grade. Other readings in the form of websites or photocopies may be assigned as the course progresses. Additional recommended readings may be found on the resources page.
Each class member should maintain a journal. Each entry will be a response to a specific question or questions posed by the instructors each week. Also feel free to add:
The purpose of the journal is to help you track and learn from your work in the course, while providing an opportunity for reflecting on the "big picture" of software engineering and related topics. Journals should be maintained as a publicly accessible electronic HTML document. You should send the instructors a link to your journal location within the first few days of class.
Exercises (from the readings, assigned labs, software projects, etc.) will be used to complement the lectures and readings. Exercises are due at the beginning of class as specified in the course schedule. We will accept late assignments but will mark them down one grade for each day they are late.
Since much of the course will discuss software development in the context of not only the code itself, but how it is documented, tested, packaged and delivered, these elements should be critical in your consideration of how to turn in programming exercises in particular. Unless otherwise specified, completed programming exercises should be delivered by both handing in a printed copy, and e-mailing the instructors with a link to your source code (and, when applicable, any "front end" or instructions for running the software). If the assigment is being delivered by a group, only one person from the group need send an e-mail, but it should indicate that all group members have "signed off" on the delivery. Please do not use your "delivery" directories as development directories.
Since software engineering is a broad subject matter, mastery of the topic as covered by the scope of our course can be manifested in a variety of ways. Your grade in the course will be based on your achievement of the course objectives as demonstrated in your homework assigments, programming deliveries, course journal, and participation in class discussions.
| Course Component | Grading Weight |
| Exercises | 40% |
| Group Software Project | 40% |
| Course Journal | 10% |
| Participation | 10% |
Last significant update: January 12, 2006