Course Description: This course will introduce the process of software development for medium to large scale projects. We will focus on an agile programming development methodology but also cover traditional software requirements and specifications, planning, design, implementation, testing, documentation, maintenance, development environments, professional issues, and best practices in project management. These concepts will be taught in the context of a group project consisting of 3-4 students that will span the entire course. We will aim for real applications that will be used by real people! Upon completion of the course, students should understand the software lifecycle, what challenges must be overcome to construct high quality software, and techniques to overcome these challenges.
Software Engineering is difficult to teach and to learn in a university environment; it is best learned in the "real world" working on a large scale software project that has real resource constraints, monetary demands, requirements, actual users, and requires much more time to complete than a semester-long project that can be completed by a small group of students. Nevertheless, this class will introduce the concepts and processes to help you cope with a large scale project should you work on one upon graduation. Although there is a lot of programming involved in this class, the focus is really not on programming per se. It is about the discipline needed to develop high quality software that can be understood, maintained and adapted over long periods of time by many different people. In particular, throughout the course we will see that an ability to program and sling code is not sufficient for the construction of high quality software.
Upon completing the course you should be able to:
Homework Assignments: There will be approximately four homework assignments that should be completed individually. In addition there are a number of deliverables that must be turned in for the group project. These deliverables include a final writeup, test cases, code, documentation, and presentation. All team members will receive the same grade on the group project except in cases where member(s) are obviously not contributing. In this event the instructor may assign an unequal grade within the group. To help facilitate group meetings there will be no lecture about once every other week. A mandatory group meeting will be held instead. More information about the project and deliverables will be available from the course web page.
Questions: If you have any questions, feel free to come in to my office. In general, I have an open door policy -- if I am available in my office, you are welcome to come by. An even better way to reach me is through email. I check my email frequently and you should receive a response quickly. Email is preferred over telephone and you will probably receive a faster response since I don't check voicemail very frequently. You can also contact me online via ICQ, AIM, or MSN Messenger (see contact info on the home page). I'm often up late and will be glad to answer questions if I'm available!
Exams: There will be one midterm and a final exam.
Grading: Grading for this course is letter grade. An incomplete or deferred grade will only be given for a valid excuse (e.g. medical reasons, death in the family, etc.). There is a 10% penalty for every day an assignment is late.
The breakdown is as follows:
Individual Homework: 20% (each assignment is worth an equal amount)
Midterm:
20%
Final: 20%
Project: 40%
User Stories & Planning: 10%
Testing: 8%
Implementation: 10%
Final Documents: 5%
Presentation: 2%
Meeting Attendance: 5%
Cheating: Students are expected to uphold the UAA standard of conduct relating to academic dishonesty outlined in the UAA catalog and student handbook. Cheating is not tolerated and constitutes grounds for dismissal. For this class, it is permissible and encouraged to assist classmates in general discussions of how to attack the homework problems. It is not permissible to copy another's work (or portions of it) and represent it as your own.