Software engineering involves the development and maintenance of complex software systems. In this course, students will learn about tools and processes used to implement software in practice, focusing on the requirements and design phases of the software development life cycle. Students will also have an opportunity to work on a project incorporating 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 class assignments.
By the end of this course, students should be able to:
- Compare different software engineering processes and explain when to use them;
- Gather, analyze, and specify software requirements for an application;
- Design a software system and user interface that meets requirements;
- Understand common software engineering tools and practices to maintain, develop, and verify software;
- Discuss current and emerging trends in software engineering;
- Use AI tools to generate code, unit tests, and test suites; evaluate the quality and accuracy of AI-generated artifacts; and refine outputs to meet functional, performance, and quality requirements; and
- Create and communicate (via demo and writing) about the requirements and design of a software application.
- Lectures: Tu/Th 9:30-10:45am, HITT 340
- Final Exam: Mon December 14, 7:45am-9:45pm, HITT 340
- Instructor: Dr. Chris Brown [dcbrown@vt.edu], Office hours: Tu/Th 11:00am-12:00pm; Gilbert 4105 or Zoom
- GTA: Minhyuk Ko [minhyukko@vt.edu], Office hours: TBD
- UTA: Jai Sundaram [jsundaram@vt.edu], Office hours: TBD
➡️ Please note this schedule is subject to change. All homework (HW) and project milestone (PM) assignments are due at 11:59pm unless otherwise specified.
| Date | Topic | Assignments |
|---|---|---|
| 👨💻 Intro to Software Engineering 👩💻 | ||
| Aug 25 | Introduction + Human Aspects of SE + Software Development Lifecycle | |
| Aug 27 | SE Processes + Project Management | |
| Sept 1 | Project Workday | |
| Sept 3 | [Workshop] SE Basics | PM1.0, HW0 due 9/4 |
| 📜 Requirements 📖 | ||
| Sept 8 | Requirements Elicitation | |
| Sept 10 | Requirements Analysis and Specification | HW1 due 9/11 |
| 🎨 Design 🖌️ | ||
| Sept 15 | Software Design and Architecture | PM1.1 due 9/16 |
| Sept 17 | UI Design | |
| 💯 Midterm 🎬 | ||
| Sept 22 | Project Workday | |
| Sept 24 | Project 1 Demos | PM1.2 due 9/25 |
| Sept 29 | [Workshop] Exam Review (dcbrown travel) | |
| Oct 1 | Exam (dcbrown travel) | |
| ⌨️ Implementation and Maintenance 🧹 | ||
| Oct 6 | [Guest Lecture] Greg Wilson | HW2 due 10/7 |
| Oct 8 | Project Workday | PM2.0 due 10/9 |
| Oct 13 | Implementation and Maintenance | |
| Oct 15 | [Guest Lecture] Matt McHugh | |
| Oct 20 | [Workshop] AI Writing Code | |
| Oct 22 | [Guest Lecture] Ben Nelson | PM2.1 due 10/23 |
| 🧪 Testing and Deployment 🚀 | ||
| Oct 27 | [Workshop] Code Quality and Analysis | |
| Oct 29 | Testing | HW3 due 10/30 |
| Nov 3 | CI/CD and Deployment | |
| Nov 5 | [Guest Lecture] Mike Irwin | PM2.2 due 11/6 |
| Nov 10 | [Workshop] Testing and Debugging | |
| 🔍 Advanced Topics 👀 | ||
| Nov 12 | [Guest Lecture] Bilal Aziz | |
| Nov 17 | [Guest Lecture] David Bates | |
| Nov 19 | Evidence-Based Software Engineering | PM2.3 due 11/20 |
| Thanksgiving Break | ||
| Nov 24 | 🦃 THANKSGIVING BREAK, NO CLASS 🙏🏿 | |
| Nov 26 | 🦃 THANKSGIVING BREAK, NO CLASS 🙏🏿 | |
| 👀 Emerging Topics 🔍 | ||
| Dec 1 | Advanced Topic | |
| Dec 3 | Advanced Topic | HW4 due 12/4 |
| 💯 Final Exam 🏁 | ||
| Dec 8 | Retrospective / Project Workday | PM2.4 due 12/9 |
| Dec 14 | Final Exam / Project Demos | PM2.5 due 12/14 |