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 12:30-1:45pm, PAT 215
- Final Exam: Sat May 9 1:05-3:05pm
- Instructor: Dr. Chris Brown [dcbrown@vt.edu], Office hours: M/W, 11am - 12pm
- TA: TBD, 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 20 | Introduction / Software Development Lifecycle | [HW0] |
| Jan 22 | SE Processes | |
| Jan 27 | [Workshop] Engineering Basics | |
| Jan 29 | Guest Lecture | |
| 📝 Requirements, Design, and Implementation 🎨 | ||
| Feb 03 | Requirements Engineering | [[HW1]] |
| Feb 05 | Project Workday | |
| Feb 10 | Software Architecture and Design | [[HW2]] |
| Feb 12 | UI Design and UX | |
| Feb 17 | [Discussion] Requirements and Design | |
| Feb 19 | Project Management | |
| Feb 24 | Code Analysis and Metrics | [[HW3]] |
| Feb 26 | [Workshop] Program Analysis | |
| 🎬 Demo 💯 | ||
| Mar 03 | Project 1 Demo | |
| Mar 05 | Project 1 Demo | |
| 🌻 Spring Break 🌄 | ||
| Mar 10 | SPRING BREAK | |
| Mar 12 | SPRING BREAK | |
| 🧹 Maintenance and Testing 🧪 | ||
| Mar 17 | Maintenance | [[HW4]] |
| Mar 19 | Project Workday | |
| Mar 24 | Testing | |
| Mar 26 | [Discussion] Maintenance and Testing | |
| Mar 31 | [Workshop] Testing and Debugging | [[HW5]] |
| 🚀 Deployment 🔁 | ||
| Apr 02 | CI/CD and Deployment | |
| Apr 07 | Guest Lecture/TBD | |
| Apr 09 | [Discussion] CI/CD | |
| 🔍 Advanced Topics 👀 | ||
| Apr 14 | [Workshop] Automated Software Engineering (dcbrown travel) | [[HW6]] |
| Apr 16 | Project Workday (dcbrown travel) | |
| Apr 21 | [Discussion] Humans Writing Code | |
| Apr 23 | [Discussion] AI Writing Code | |
| Apr 28 | [Workshop] Training LLMs | |
| Apr 30 | [Open Discussion] Future of SE Practice | |
| May 05 | Retrospective / Project Workday | |
| 🏁 Final Exam 🎥 | ||
| May 9 | Final Exam | |