Software engineering involves the development and maintenance of complex software systems. In this course, students will learn about phases of the software life cycle: requirements, design, implementation, testing, and maintenance. The students will also have an opportunity to work on a project supporting software development tasks, discuss state-of-the-art SE research, and gain the skills and knowledge necessary to succeed as a software engineer in industry. The course will consist of traditional lectures, practical workshops to gain exposure to SE tools and principles, and seminar-style discussions about advanced research topics in software engineering.
Please see the Course Syllabus for additional information about course logistics and policies. We will also use Canvas for submitting coursework and other class activities.
By the end of this course, students should be able to:
- Implement a software system following the software life cycle phases
- Develop software engineering skills working on a team project
- Identify processes related to phases of the software lifecycle
- Explain the differences between software engineering processes
- Discuss research questions and studies related to software engineering
- Communicate (via demo and writing) details about a developed software application
- Lectures: Tu/Th 5:00-6:15pm, Surge 103A
- Final Exam: Sat May 6 7:00-9:00pm
- Instructor: Dr. Chris Brown [dcbrown@vt.edu], Office hours: M/W, 11am - 12pm
- TA: Sean Gruber [smgruber@vt.edu], Office hours: Tu/Th, 3:45 - 4:45pm
โก๏ธ Please note this schedule is subject to change. All assignments are due at 11:59pm on the Friday of the week they are posted unless otherwise specified.
Date | Topic | Assignments | |
---|---|---|---|
๐จโ๐ป Intro to Software Engineering ๐ฉโ๐ป | |||
Jan 17 | Introduction / Software Process | [HW0] | |
Jan 19 | [Workshop] Software Engineering Basics | ||
Jan 24 | Software Process (cont.) / [Discussion] Software Engineers | [HW1] | |
๐ Requirements and Design ๐จ | |||
Jan 26 | Requirements | ||
Jan 31 | Design | [Project Group Formation] | |
Feb 2 | [Discussion] Requirements Analysis | ||
Feb 7 | [Workshop] Technical Interviews / Project Workday | [HW2] | |
Feb 9 | [Lightning Talks] ๐ฉ๏ธ | ||
๐ง Implementation ๐ฅ๏ธ | |||
Feb 14 | [Discussion] Technical Interviews | [Project Proposal] | |
Feb 16 | Implementation | ||
Feb 21 | Code Analysis | [HW3] | |
Feb 23 | [Discussion] Code Reviews | ||
Feb 28 | Guest Lecture | [HW4] | |
Mar 2 | [Workshop] Coding Environments | ||
๐ป Spring Break ๐ | |||
Mar 7 | SPRING BREAK | ||
Mar 9 | SPRING BREAK | ||
โ Testing ๐งช | |||
Mar 14 | Testing | [HW5] | |
Mar 16 | [Workshop] Advanced Testing | ||
Mar 21 | Exam Review / Project Workday | ||
Mar 23 | ๐ฏ Exam ๐ฏ | ||
Mar 28 | [Discussion] Software Testing | [Project Check-in] | |
๐ Special Topics in SE ๐ฅ | |||
Mar 30 | [Discussion] Productivity | ||
Apr 4 | [Discussion] Stack Overflow | [HW6] | |
Apr 6 | [Discussion] Teamwork & Collaboration | ||
๐ Maintenance ๐งน | |||
Apr 11 | Maintenance | [HW7] | |
Apr 13 | [Discussion] Refactoring | ||
Apr 18 | [Discussion] Debugging | [HW8] | |
๐ Deployment ๐ | |||
Apr 20 | Project Workday | ||
Apr 25 | Deployment | [Project Report Abstract] | |
Apr 27 | [Discussion] Automated Software Engineering | ||
May 2 | Retrospective | [Project Final Report] | |
๐ Final Exam ๐ฅ | |||
May 6 | Final Exam |