Computer Science 520
Theory and Practice of Software Engineering
- Tuesday Dec 12 is the final project poster session in CS 150. You may come to set up as early as 9:30 AM.
- Final project deliverables are due Friday Dec 15, 11:55 PM EST.
- (Optional) extra credit assignment is due Dec 15, 11:55PM EST.
Introduces students to the principal activities and state-of-the-art techniques involved in developing high-quality software systems. Topics include: requirements analysis, formal specification methods, software design, software testing and debugging, program analysis, and automated software engineering.
This course will cover the following high-level topics:
- Software architecture and design
- Software modelling and UML crash course
- Best practices and OO design principles
- Architecture and design patterns
- A brief introduction to functional programming (in Java)
- Program analysis and software testing
- Automated debugging and program repair
- Collaboration and teamwork
- Empirical/Experimental Software Engineering
Besides becoming familiar with Software Engineering principles and best practices, students will learn about cutting-edge research in Software Engineering. The exercises and the group project provide additional hands-on experience in using state-of-the-art techniques.
Please read the general course policies.
LectureTuesday and Thursday 10:00am–11:15am
Office: CS 346
Office hours: Thursday 11:30am–12:30pm.
Office: CS 358
Office hours: Thursday 12:30pm–1:30pm, and by appointment.
Office: CS 207 cubicle 4
Office hours: Wednesday 12:00pm–1:00pm.
AssignmentsAll assignments are provided through Moodle, and submissions must be uploaded to Moodle.
|30%||Homework and paper reviews|
|09/05/2017||Course introduction||Slides, Slides (4pages)|
|09/07/2017||Software architecture and design/UML crash course||Slides, Slides (4pages)|
|09/12/2017||Best and worst programming practices||Slides, Slides (4pages)|
|09/14/2017||OO design principles||Slides, Slides (4pages)
|09/19/2017||Version control systems/Git tutorial||Slides, Slides (4pages)
|09/21/2017||In-class exercise: Advanced uses of git||Moodle|
|09/26/2017||OO design patterns||Slides, Slides (4pages)|
|09/28/2017||OO design patterns||Slides, Slides (4pages)
|HW 1 online|
|10/03/2017||OO design and Java 8 features||Slides, Slides (4pages)
|10/05/2017||Intro to empirical software engineering||Slides, Slides (4pages)||PR 1 is due on 10/05 (10am)|
|10/10/2017||No class: Monday class schedule will be followed!|
|10/12/2017||Experimental design and validity||Slides, Slides (4pages)||PR 2 is due on 10/12 (10am)|
|10/17/2017||Intro to software testing||Slides, Slides (4pages)
|10/19/2017||In-class exercise: Software testing||Moodle||HW 1 is due on 10/22|
|10/24/2017||Debugging||Slides, Slides (4pages)|
|10/26/2017||Requirements||Slides, Slides (4pages)||HW 2 online|
|10/31/2017||User interfaces||Slides, Slides (4pages)|
|11/02/2017||In-class exercise: Debugging|
|11/07/2017||Teamwork and pair programming||Video|
|11/09/2017||Project progress meetings||Slides|
|11/14/2017||Programmer productivity (Dr. Brittany Johnson)||Slides, Slides (4pages)|
|11/16/2017||Getting a job: Agile career development workshop (Brian Krusell)||HW 2 is due on 11/16|
|11/21/2017||No class: Thanksgiving recess|
|11/23/2017||No class: Thanksgiving recess|
|11/28/2017||Reasoning about programs||Slides, Slides (4pages)|
|11/30/2017||In-class exercise: Reasoning about mutants||Slides, Slides (4pages)|
|12/05/2017||Guest lecture: A day in the life of a software engineer (Christopher Paika and Walter Doan from Constant Contact)|
|12/07/2017||Power of software||Slides, Slides (4pages)|
|12/12/2017||Final project presentations||Moodle||Final deliverables due on 12/15, 11:55PM EST|
Further readingThe following text books provide a more comprehensive discussion of the topics addressed in this class. Note that these text books are not a requirement for this class.
- Fundamentals of Software Engineering. Carlo Ghezzi et al.. Prentice Hall. 2002.
- Introduction to software testing. Paul Ammann and Jeff Offutt. Cambridge University Press, 2008.
- Effective Java. Joshua Bloch. Addison-Wesley, 2001.
- UML distilled: a brief guide to the standard object modeling language. Martin Fowler. Addison-Wesley, 2004.
- Design patterns: elements of reusable object-oriented software. Erich Gamma et al.. Addison-Wesley, 1994.
- Head first design patterns. Eric Freeman and Elisabeth Robson. O'Reilly, 2004.
Assignment due dates and times are listed on the course website and Moodle. All deadlines, unless otherwise noted, are sharp, and no extensions will be granted to an assignment after that assignment is due. Early requests for extensions will be considered only in extenuating circumstances.
Exceptions for the individual homework assignments HW1 and HW2:
- Late submissions will be only considered for HW1 and HW2.
- A late submission will be only considered if submitted within 3 days after the deadline.
- For a late submission, a penalty of 10% is applied for every day that this submission is overdue.
- The final score for a late submissions is: achieved score * (1 - 0.1 * number of late days).