CS 240 Software Engineering - Fall 2013

Course Syllabus

Instructor

Joel Ross
email: jross@pugetsound.edu
office: Thompson 405
phone: x3558

Class Meetings

Mon/Wed/Fri 12:00pm to 12:50pm (Thompson 391)

Website: http://cs.pugetsound.edu/~jross/courses/cs240/
Moodle: https://moodle.pugetsound.edu/moodle/course/view.php?id=6699
GitHub Repositories: https://github.com/UPS-CS240-F13

Office Hours

Mon, Tue, Wed, Fri: 10:00am to 11:00am; Thu 11:00am to 12:00pm; whenever my office door is open, or by appointment.

Course Description

In this course, students will study concepts and methods related to the design, implementation, validation, and maintenance of large software systems. They will learn about organization and management of software development, as well as design patterns and tools that facilitate the creation of software systems. Students will gain experience working in a team programming setting as they design, document, and implement a medium-sized software project.

Prerequisites: CSCI 261 with a grade of C- or better. This course satisfies a writing requirement in major contracts.

Textbook

Sommerville. Software Engineering, 9th Edition. Pearson. 2011. (required text). Also available on Amazon or as a digital textbook rental

Additional readings are available on Moodle.

Assigned readings are listed on the calendar. Readings should be completed before the listed class.

Other Resources

Course Goals

After completing this course, a student will be able to:

Students will also develop experience with a broader range of programming languages and libraries.

Course Components

This course aims to give you experience developing large software systems, with activities related to practicing such forms of development.

Labs

While most of the course will focus on the large, semester-long project (see below), you will also complete a couple of smaller "labs" to practice using some of the tools and technologies we will be dealing with in this course. All together, these labs are worth 10% of the course grade.

Group Project

In this course, students will work in groups and as a class to design, develop, and test a medium-sized software system. This project is intended to give students a chance to interact with the material presented in class and to apply it to an actual software engineering project, as well as gain experience working on larger-scale programming tasks. The primary goal of the project is for students to hone their software engineering skills, rather than utilize a particular programming language, library, or pattern.

Teamwork

This project also emphasizes the idea of developing software in teams. Most modern software companies employ a team structure to develop their products. The class will be divided into teams of 4-6 students, with each team focusing on a component of the larger system. Each team is responsible for implementing their component, as well as enabling integration between the multiple class components. Note that these are large teams--one of the course goals is to practice working within a larger group! Students will be assigned to teams (based on requests) during the third week of class.

It is your responsibility to make sure that you and your team mates contribute equally to the project. All team members must take part in all project activities and will be responsible for understanding all parts of the project. However, you are welcome to divide up responsibilities so that different members take the lead for different activities. For example, you might code a particular feature or class in pairs, and then regroup often in order to merge your work. Though the scope of individual effort on a single part of the project may vary, in the end all group members should have contributed equally to the project.

Deliverables

Completing the project will involve a number of deliverables in the form of project documentation and demonstrations:

  1. Requirements Specification [10% of course grade]
  2. Intermediate Report (Design Document) [10% of course grade]
  3. Integration Demonstrations (3x) [total 10% of course grade]
  4. Testing Report [completed individually; 5% of course grade]
  5. Final Report [10% of course grade]
  6. Final System Implementation [10% of course grade]

The default is for team members to all receive the same grade on group deliverables; however, I receive the right to apply individual bonuses or penalties based on reported contributions (see below).

A basic description of the project, as well as the responsibilities of the development teams, can be found here.

Final Exam

This course will have a final exam, focusing primarily on the theory-based aspects of the course. The final exam is worth 15% of the course grade.

Participation

This class is intended to be highly participatory. Software engineering is in many ways a social process (it's about how people work together to develop software), and so you will be asked to engage with and discuss that social process. This component of the course measures your participation in these discussions and in the class as a whole. The best way to earn in-class participation points is to show up to class, do the readings and develop an opinion on the topic, speak up and share your views, and otherwise contribute to the class. In-class participation is worth about 10% of the course grade.

The course's participation component will also reflect your participation in the group project. This will be measured in significant part through periodic peer evaluations (which I will use to help keep track of how well everyone is working together), as well as by looking at things like commit logs. This component is intended to measure engagement with the project, not necessarily programming efficiency. Implementation can and does have problems, but as long as you put in the effort you'll be fine. Group participation is also worth about 10% of the course grade.

Course Policies

Respect

This class may involve in-class discussion of topics on which you and your classmates may have differences in opinion. Please be respectful of others (students or otherwise) at all times.

Group Work

For much of this class, you will be working in teams. You are expected to be respectful of your teammates. This includes showing up to scheduled team meetings, completing agreed-upon work, considering others' opinions and suggestions, including the entire team, etc.. Software design can be very difficult, and there are bound to be disagreements between team members. Your job is to practice resolving these differences so that everyone is able to effectively and cheerfully work on the project.

If a team conflict arises, your team should try to tactfully address and resolve the issue. If this is not possible, let me know so I can help to mediate. Note that this project will feel hurried, so please let me know as quickly as possible so that nothing festers or holds us back. If it becomes apparent that a student is consistently not contributing to the group project, the I will take appropriate action---this may include grade penalty, dropping the student from the course, include requiring the student to complete the project all on their own, etc.

Correspondence

I will send out course announcements by email, so you should check your email daily. Note that this email will go to your pugetsound.edu address. If you prefer to read your email on another account, you should set your Pugetsound account to forward your email to your preferred account (see http://www.pugetsound.edu/files/resources/6291_ForwardWebmail.pdf).

When emailing me, please try to use proper grammar and make sure to sign your emails! This will let me know who is writing, and will help me to better answer any questions.

My office hours are listed above. I am more than happy to talk about any questions or concerns you may have about the course or its material. I highly recommend you take advantage of professor's office hours; it's one of the greatest benefits of attending a school like UPS.

Attendance

Make every effort to attend each class meeting; in-class discussions are an important component of the class. Classes will begin prompty on time in order to try and end on time---please do your best to get to class before the start of the hour. Students are expected to attend all lectures (attendance counts towards your participation score), with exceptions permitted in case of illness and family emergencies. I reserve the right to drop from the course any student that misses 5 or more classes.

Technology in Class

The use of cell phones and laptops will not be permitted in class unless specific permission is given. Please silence all cell phones/pagers/etc. before the beginning of each lecture.

Late Work

Late assignments will only be accepted within 48 hours of the original due date. Late assignments will lose one full letter grade per day late.

Academic Honesty

Please review the Academic Honesty Policy in the Student Handbook, and ask me if you have any questions regarding its application to this course. The consequences of academic dishonesty are not worth the risks. The simple rule is: do not claim anyone else's work, code, words, or ideas as your own. If you're in doubt, come talk to me in advance.

The project will give you the chance to practice learning new technologies, often requiring you to utilize resources (tutorials, etc.) online. Using code from such resources is expected; just make sure to include a comment citing your source if you borrow any code whole-cloth!

If you're having problems in the course, come and speak with me; never take the shortcut of copying someone else's work. It isn't worth it.

Special Accommodations

Academic accommodations are available for students with disabilities who are registered with the Office of the Office of Accessibility and Accommodations. If you have a physical, psychological, medical or learning disability that may impact your course work, please contact Peggy Perno, Director of the Office of Accessibility and Accommodations, 105 Howarth, 253.879.3395. She will determine with you what accommodations are necessary and appropriate. All information and documentation is confidential.

I also encourage all students having difficulty, whatever the reason, to consult privately with me at any time.

Emergency Procedures

Please review university emergency preparedness and response procedures posted at www.pugetsound.edu/emergency/. There is a link on the university home page. Familiarize yourself with hall exit doors and the designated gathering area for your class and laboratory buildings.

If building evacuation becomes necessary (e.g. earthquake), meet your instructor at the designated gathering area so she/he can account for your presence. Then wait for further instructions. Do not return to the building or classroom until advised by a university emergency response representative.

If confronted by an act of violence, be prepared to make quick decisions to protect your safety. Flee the area by running away from the source of danger if you can safely do so. If this is not possible, shelter in place by securing classroom or lab doors and windows, closing blinds, and turning off room lights. Stay low, away from doors and windows, and as close to the interior hallway walls as possible. Wait for further instructions.

Course Calendar

Below is the planned schedule for the course. This includes a list of topics to help students plan their work in this course, as well as reading requirements and assignment deadlines. The calendar is subject to change.

Week Date Topic Reading Assignments
1 Sep 02 Introduction Sommerville Ch 1
2 Sep 09 Process Models Wed: Sommerville Ch 2
Fri: Sommerville Ch 3
Lab 1 due Mon
3 Sep 16 Requirements Engineering Wed: Sommerville Ch 4
Fri: Williams 2004
Lab 2 due Mon
4 Sep 23 Modeling & UML Sommerville Ch 5; Opt: Horstmann Ch 2 Lab 3 due Mon
5 Sep 30 Architectures & Interfaces Sommerville Ch 6 Requirements Specification due Mon
6 Oct 07 Design Patterns Horstmann Ch 5 & Ch 10
7 Oct 14
Mon: work day
Management & Organization Wed: Sommerville Ch 22, Ch 23.2-23.4; Brooks 1975
Fri: Sommerville Ch 7.4; Stallman 2009
Intermediate Report due Fri
8 Oct 21
Mon-Tues: break
User Interface Design Wed: Shneiderman & Plaisant Ch 1, Golden Rules
Fri: Smith et al 1982 (skim ok); Bodker 2008; Opt: Bragdon et al 2010
9 Oct 28 Computer Supported Cooperative Work Orlikowski 1992 Integration 1 due Fri
10 Nov 04 Software Testing I Mon: Charette 2005; Opt: Inside Risks
Wed: Sommerville Ch 8
Fri: Ayewah et al 2008; Bessy et al. 2010
11 Nov 11 Software Testing II Sommerville Ch 24.3 Testing Report due Fri
12 Nov 18 Ethical Considerations ACM SE Code of Ethics
Friedman et al 2008
13 Nov 25
Wed-Fri: holiday
Integration Integration 2 due Mon
14 Dec 02 Software Maintenance Sommerville Ch 9
15 Dec 09 Conclusions Proc. ICSE 2013 Integration 3 due Wed
Finals Final Exam: Friday Dec 20, 12:00pm Final Implementation due Wed, 11:59pm
Final Report due Fri, 5:00pm