15-413 Introduction to Software Engineering

12 credits
MWF 11:30-12:30, BH 255A
Prerequisites: Either 15-212 or 15-213

Professor Jonathan Aldrich
aldrich+ at cs
Office hour: Tuesday 11am, Wean 8212

TA Marwan Abi-Antoun
mabianto at cs
Office hour: Thursday 3:30pm, Doherty Hall 4301-C

Schedule

SEPA readings are from Pressman, Software Engineering: A Practitioner's Approach.  They are optional (since the text is optional), but may be a useful supplement to the lectures.  Other (non-SEPA) readings are required.  Assignments are due at the beginning of class on the day listed, unless otherwise specified in the assignment.

You are expected to keep track of the time you spend on each aspect of the course.  Details (and hints on how to budget your time) are given on a separate page.

Date
Topic
Readings
Slides
Assignment Due
Aug 29
Introduction; Software Lifecycle
SEPA 1-3
1-intro.pdf,
2-lifecycle.pdf

Aug 31
Extreme Programming
SEPA 4;
XP reading

Project Bids (project list)
Sep 2
Estimation
SEPA 23 4-estimation.pdf
Case Study Reading and Reflection
Sep 5
Labor Day -- No Class
Sep 7
Planning
SEPA 24 5-planning-1.pdf

Sep 9
Planning

6-planning-2.pdf
Extreme Programming Reading and Reflection
Sep 12
Risk Management
SEPA 25
7-announcements.pdf,
7-risk-1.pdf

Sep 14 Risk Management
8-risk-2.pdf

Sep 16 Extreme Programming 2

9-xp.pdf

Sep 19 Prototyping and Requirements
SEPA pages 51-53
10-proto.pdf
Estimation
Sep 21
Requirements Engineering
SEPA 7-8
11-req.pdf

Sep 23
Requirements Engineering


Requirements, Planning, and Risks, Risk Questionaire
Sep 26
Goal Modeling

12-goal.pdf
Prototype Plan
Sep 28
Goal Modeling

12-announcements.pdf

Sep 30
Just Enough UML
SEPA 8
14-UML.pdf

Oct 3
Prototype & Requirements Presentations


Prototype Report
Oct 5
Statecharts



Oct 7
Design, Information Hiding, coupling/cohesion
SEPA 9
17-design.pdf

Oct 10
KWIC & Design Structure Matrices

18-kwic.pdf
Iteration 1 (Sept 19-Oct 9) report
Oct 12
Design Patterns
SEPA 9 19-patterns.pdf
Requirements Modeling
Oct 14
Frameworks

20-frameworks.pdf
Iteration 2 (Oct 10-30) plan
Oct 17
Software Architecture
SEPA 10 21-architecture.pdf

Oct 19
Software Architecture

22-architecture.pdf

Oct 21
Mid-Semester Break -- No Class
Oct 24
Hoare Logic

24-hoare.pdf
Design
Oct 26
Hoare Logic, continued

25-hoare-2.pdf

Oct 28
ESC/Java



Oct 31
ESC/Java example

SimpleSet.java
Iteration 2 (Oct 10-30) report
Nov 2
Model Checking and Formal Modeling

28-model-checking.pdf
Iteration 3 (Oct 31-Nov 20) plan
Nov 4
Model Checking and Formal Modeling 2



Nov 7
Model Checking with Promela

peterson.pml
Architecture and Hoare Logic, Stack.java, StackCheck.java
Nov 9
Testing
SEPA 13-14
31-testing.pdf

Nov 11
Testing, Test Selection

32-test-prioritization.pdf

Nov 14
Code Reviews SEPA 26.3 33-code-reviews.pdf
Model Checking
Nov 16
Analysis: PREfix

34-prefix.pdf

Nov 17



11:59pm Formal Technical Review Prep
Nov 18
Analysis: Fluid

35-fluid.pdf

Nov 21
CMMI
36-cmmi.pdf

Nov 22



11:59pm Formal Technical Review,
How to Print Line Numbers in Word
Nov 23-25
Thanksgiving Break -- No Class
Nov 28
Object-Oriented Design SEPA 31
37-crc-design.pdf

Nov 30
Aspect-Oriented Programming
SEPA 2.3

Iteration 3 (Oct 31-Nov 20) report
Iteration 4 (Nov 21-Dec 12) plan
Dec 2
Putting it all together



Dec 5
Tool Presentations

Eclipse Pro
CodeSurfer/CodeSonar (on Blackboard)
JLint
Tool Evaluation Presentations (tool list)
Dec 7
Tool Presentations/Exam Review

Eclat
FindBugs


Exam Review

exam-review.pdf
visitor-DSM.xls

Dec 9
Final Exam


exam-topics.txt
Dec 12 1-4pm
Project Final Presentations (BH 255A)

Team 3         Team 5          Team 2
          Team 4           Team 6

Dec 18



Final Project Report due 11:59pm


Bibliography

Optional textbook: Other resources

Course Description

Software engineering is the branch of computer science that creates practical, cost-effective solutions to computing and information processing problems, preferentially by applying scientific knowledge, developing software systems in the service of mankind.  This course covers the fundamentals of software engineering, including understanding system requirements, finding appropriate engineering compromises, effective methods of design, coding, and testing, team software development, and the application of engineering tools.  The course will combine a strong technical focus with a capstone project providing the opportunity to practice engineering knowledge, skills, and practices in a realistic development setting with a real client.

Course Objectives

Knowledge
Skills Experience

Project

A capstone project will be used to gain experience applying software engineering practices in a realistic development setting.  Students will work in teams of 3-4 with a real client within the university.  Each team will use the Extreme Programming process for all engineering tasks. The team will be responsible for eliciting a requirements specification from the client and negotiating the scope of work to be performed with the client.

Each team will then design, implement and test a software system for the client, following the chosen process.  At various milestones, software process artifacts will be produced, including a requirements specification, design and architecture documents, and a test plan.  These milestones will be coordinated with course lectures, so that material in the lectures will directly relate to project requirements.  Teams will meet regularly with clients to get feedback on prototype systems and refine the requirements for the system.  The project will culminate with delivery of the software, including associated documentation, an in-class presentation, and a post-mortem reflection on the project.

Teams will be required to use modern software development tools, including source control, configuration management, bug databases, and unit testing tools.  Grading for the project will be primarily based on the degree to which each team puts into practice the software engineering knowledge, skills, and practices taught in the course.  Evaluations from other members of the team and clients will also play a role in grading.

Evaluation

The approximate breakdown of grading will be as follows:

50% homework
10% participation in class
10% final exam
10% final project presentations
10% client project evaluations
10% 360-degree peer evaluations

Most of the homeworks will be directly tied to the ongoing project, including requirements specifications, design documents, test plans, etc.