Computer Science 320
Introduction to Software Engineering
In this course, students learn and gain practical experience with software engineering principles and techniques. The practical experience centers on a semester-long team project in which a software development project is carried through all the stages of the software life cycle. Topics in this course include requirements analysis, specification, design, abstraction, programming style, testing, maintenance, communication, teamwork, and software project management. Particular emphasis is placed on communication and negotiation skills and on designing and developing maintainable software. The lab sessions additionally provide a hands-on experience in using state-of-the-art techniques. The high-level topics and learning goals are as follows:Software processes, requirements, and specification
- Learn about different software development process models.
- Learn how to write a requirements document and a specification.
- Learn how to decompose a complex problem and build abstractions.
- Improving software design and coding skills.
- Learn how to write effective (unit) tests.
- Hands-on experience, using state-of-the-art testing and debugging techniques.
- Hands-on experience, applying the topics above in a semester-long project.
- Projects are managed (guided) by CS529 students who have previously taken CS320.
LectureMonday and Wednesday 2:30pm--3:45pm
Office: CS 358
Office hours: Tuesday 11am--noon, and by appointment
Office: CS 207
Office hours: Thursday 2:30pm--4:30pm
All assignments are provided through Moodle, and submissions must be uploaded to Moodle.
Integrative experienceCS 320 is an integrative experience course. It focuses on developing communication, reflection, and learning-aware learning skills. Each student will:
- engage in an in-class discussion at the start of the semester about what they will learn in CS 320 and how the skills they have acquired in their general education requirements will help them.
- engage in an a reflective in-class discussion at the end of the semester about what they actually learned, and which learning activities were the most effective.
- work extensively in groups.
- present her or his work orally in class.
- participate in active-learning activities such as lab sessions with significant reflection components.
- reflect on submitted assignments and improve and resubmit the work.
- be guided by CS 529 students and their experience having previously taken CS 320.
|01/23/2017||Course introduction||Slides, Slides (4pages)|
|01/25/2017||Software development process:
activities and steps
|Slides, Slides (4pages)|
|01/30/2017||Software development process:
activities and steps/
|Slides, Slides (4pages),
|02/01/2017||Software development process models||Slides, Slides (4pages)|
|02/06/2017||Software development process models/
Introduction to version control systems
|Slides, Slides (4pages)|
|02/08/2017||In-class exercise: Version control with git||Moodle|
|02/13/2017||The software analysis phase:
analysis and requirements
|Slides, Slides (4pages)||Paper reading 1 (due 02/22)
SRS draft (due 02/24)
|02/15/2017||Modeling: ER diagrams||Slides, Slides (4pages)|
|02/20/2017||No class -- Presidents' day|
|02/22/2017||Textual vs. graphical use cases/
Paper discussion (paper reading 1)
|Slides, Slides (4pages)|
|02/27/2017||Modeling: UML class diagrams||Slides, Slides (4pages)|
|03/01/2017||Polymorphism and Inheritance||Slides, Slides (4pages)
|Final SRS (due 03/10)|
|03/06/2017||Software design principles||Slides, Slides (4pages)
|03/08/2017||Finalize the SRS (1:25--3:45)||Moodle|
|03/13/2017||No class -- Spring recess|
|03/15/2017||No class -- Spring recess|
|03/20/2017||Software design principles||Slides, Slides (4pages)
|Final SDD (due 04/05)|
|03/22/2017||Midterm preparation (1:25--3:45):
recap and discussion of example questions
|03/27/2017||In-class midterm exam||Moodle||03/29/2017||Group activity: software design||04/03/2017||Midterm exam and MAP Post-mortem||Moodle||04/05/2017||Finalize the SDD (1:25--3:45)||Moodle||Presentation slides (due 04/26)||04/10/2017||Software testing||04/12/2017||In-class exercise: Unit testing||Moodle||04/17/2017||No class -- Patriot's day||04/18/2017||Software testing and debugging||04/19/2017||In-class exercise: Debugging||Moodle||04/24/2017||Finalize the project presentation||Moodle||04/26/2017||Final project presentation (1:25--3:45)||Moodle||Final deliverables (due 04/28)||05/01/2017||In-class exercise (extra credit)||Moodle|
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.
- Beginning Software Engineering. Rod Stephens. Wiley. 2015.
- Fundamentals of Software Engineering. Carlo Ghezzi et al.. Prentice Hall. 2002.
- Introduction to software testing. Paul Ammann and Jeff Offutt. Cambridge University Press, 2008.
- UML distilled: a brief guide to the standard object modeling language. Martin Fowler. Addison-Wesley Professional, 2004.