CSCI 240: Software Engineering — Fall 2012

Course Syllabus

Instructor

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

Class Meetings

Mon/Fri 3:00pm to 3:50pm; Tues/Thurs 2:00pm to 2:50pm (Thompson 391)
Mondays will be group work days; we will not normally be meeting as a class (unless announced in advance).

Website: http://cs.pugetsound.edu/~jross/courses/csci240/
Moodle: https://moodle.pugetsound.edu/moodle/course/view.php?id=5211

Office Hours

Mon through Fri 1:00pm to 2: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 tools that facilitate the creation of software systems. Students will gain experience working in a team programming setting as well as working with existing and legacy software 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

There is no assigned text for this course, though articles and readings will be provided in class.

Course Goals

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

Course Components

Group Project

In this course, students will work in a group 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 develop a specific piece of software.

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 3-5 students. All team members must take part in all project activities and will be responsible for understanding all parts of the project. However, responsibilities may be divided so that different members take the lead for different activities. 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.

The project will be organized similar to a start-up company, called Vi-Char. Vi-Char is developing a game-like system that involves controlling virtual puppets and viewing them in augmented reality. The company has invested in special hardware for this project, including a Microsoft Kinect, several Android mobile devices, and a web server. Vi-Char currently consists of five distinct divisions: (1) Motion capture development, (2) Mobile device development, (3) Augmented reality development, (4) Game engine development, and (5) Web server development. Students will be assigned to one of these divisions during the second week of class. Each division will be held responsible for their individual products as well as the parts of the fully integrated system.

The project will consist of a number of deliverables in the form of project documentation and demonstrations:

  1. Requirements Specification [10% of course grade, due Fri Sep 14]
  2. Design Document [10% of course grade, due Tues Oct 2]
  3. Intermediate Report [10% of course grade, due Thurs Oct 25]
  4. Intermediate Demonstration [10% of course grade, due Thurs Oct 25]
  5. Testing Assignment [10% of course grade, due Tues Nov 20]
  6. Final Report [10% of course grade, due Mon Dec 10]
  7. Final Demonstration [10% of course grade, due Mon Dec 10]

In addition, each division will have a "manager" who is responsible for presenting the division's weekly progress reports to the class as well as turning in group meeting minutes. The manager position will rotate to a new student every week or two. Presentations are semi-formal, and should only be about 5-10 minutes each. The use of appropriate slides or diagrams is welcome. Minutes of weekly meetings should document what happened in the meetings, flagging issues that have been raised, who is doing what, etc. [Presentations and minutes are worth 5% of course grade, due weekly]

In-class Quizzes

There will be periodic short in-class quizzes on the material covered. These quizzes will be announced in advance. [total 25% of 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 most of this class, you will be working in teams. You are expected to be respectful of your teammates. This includes showing up to team meetings, completing assigned 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 happily work on the project.

If a team conflict arises, your team should tactfully address and resolve the issue. If this is not possible, you may ask the instructor to help mediate. If it becomes apparent that a student is consistently not contributing to the group project, the instructor 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).

Students will be asked to complete an anonymous peer-evaluation of their fellow team members. While the default is for all team members to receive the same grade, the instructor reserves the right to offer individual bonuses or penalties based on these evaluations.

Correspondence

I may 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!

Attendance

Class will begin and end on time. Please do your best to get to class before the start of the hour. There is no textbook, so most of the material will be covered in class.

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

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 the instructor 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.

Furthermore, there will be strict rules about inter-group communication. If these rules are broken, I will consider it cheating.

Special Accommodations

Academic accommodations are available for students with disabilities who are registered with the Office of Disability Services. If you have a physical, psychological, medical or learning disability that may impact your course work, please contact Peggy Perno, Director of Disability Services, 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, whether or not due to a disability, 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 Schedule

Below is a planned schedule of topics to help students plan their work in this course. It is only approximate, and likely will change. Changes will be announced in class, and I will do my best to keep this schedule updated. Any changes to due dates or exam dates will be announced.

For much of the semester, Mondays will be left open for you to meet with your groups. Fridays will be "company meeting" days, when each group will present their progress to the class.

Week Date Topic Deliverables Readings (new!)
1 Aug 27 Introduction, Software Processes & Life Cycles Resumes due Fri
2 Sep 3
Mon: holiday
Requirements Engineering
3 Sep 10 Tools Requirements Specification due Fri
4 Sep 17 Architecture Design
5 Sep 24 Domain Modeling
6 Oct 1 Object-Oriented Design Design Document due Tues
7 Oct 8 Implementation integration week
8 Oct 15
Mon-Tues: break
Risks and Impact;
9 Oct 22 Testing; Demos Intermediate Report and Demonstration due Thurs Bertolino 2007 (sec 1-4)
10 Oct 29 Testing (continued) JUnit FAQ
11 Nov 5 Code Reviews, Static Analysis Ayewah et al. 2008,
(optional: Bessey et al. 2010)
12 Nov 12 Ethical Considerations ACM SE Code of Ethics
13 Nov 19
Wed-Fri: holiday
Testing Presentations Testing Assignment due Tues
14 Nov 26 Usability and Human Factors Holzinger 2005
(bonus: Paelke & Nebe 2009)
15 Dec 3 Open Issues in SE ICSE 2012 Proc.
response instructions
Finals Dec 10 Final Demonstration Monday, 4:00pm Final Report and Demonstration due Mon

Resources

Writing Center: This course involves a lot of writing. You should seriously consider utilizing the Writing Center as you prepare your assignments.