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 and GitHub for submitting coursework and other class assignments.
By the end of this course, students should be able to:
- Understand software engineering processes, methods, and tools used in the software development life cycle (SDLC)
- Use techniques and processes to create and analyze requirements for an application
- Use techniques and processes to design a software system
- Identify processes, methods, and tools related to phases of the SDLC
- Explain the differences between software engineering processes
- Discuss research questions and current topics related to software engineering
- Create and communicate about the requirements and design of a software application
- Lectures: Tu/Th 9:30-10:45am, SURGE 104D
- Final Exam: Wed December 17, 10:05am-12:05pm, SURGE 104D
- Instructor: Dr. Chris Brown [dcbrown@vt.edu], Office hours: Tu/Th 11:00am-12:00pm; Gilbert 4105 or Zoom
- GTA: Huayu Liang [huayu98@vt.edu], Office hours: Tu 2:00-4:00pm; Zoom
- GTA: Aninditaa Chauhan [aninditaach@vt.edu], Office hours: Mon 3-5pm; TORG 1120
- UTA: Tanay Khopey [khopeytanay@vt.edu], Office hours: Mon/Wed/Fri 6-8pm; Zoom
➡️ 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 26 | Introduction / Software Development Lifecycle | HW0 (due 9/5); PM0 (due 9/12) |
Aug 28 | Software Engineering Processes | |
📜 Requirements 📖 | ||
Sept 2 | Software Requirements Overview | |
Sept 4 | Requirements Analysis and Specification | |
Sept 9 | Project Management | HW1 (due 9/19) |
Sept 11 | Project Workday | |
🎨 Design 🖌️ | ||
Sept 16 | Software Design Principles | PM1 (due 9/26) |
Sept 18 | Software Architecture | |
Sept 23 | Low-Level Design | HW2 (due 10/3) |
Sept 25 | UI Design | |
Sept 30 | Project Workday (dcbrown travel) | PM2 (due 10/14; 10/17) |
Oct 2 | [Guest Lecture] (dcbrown travel) | |
Oct 7 | Exam Review (dcbrown travel) | |
Oct 9 | 💯 Exam 💯 (dcbrown travel) | |
Oct 14 | ⚡ Talks | HW3 (due 10/24) |
Oct 16 | ⚡ Talks | |
⌨️ SE Fundamentals 📝 | ||
Oct 21 | Code Quality | PM3 (due 10/31); HW4 (due 11/7) |
Oct 23 | [Guest Lecture] | |
Oct 28 | Version Control | |
Oct 30 | AI Writing Code | |
🧹 Maintenance and Testing 🧪 | ||
Nov 4 | Maintenance | PM4 (due 11/14); HW5 (due 11/21) |
Nov 6 | Testing | |
Nov 11 | [Guest Lecture] | |
Nov 13 | Project Workday | |
🚀 Deployment 💻 | ||
Nov 18 | CI/CD and Deployment | PM5 (due 12/5); HW6 (due 12/5) |
Nov 20 | [Guest Lecture] | |
Thanksgiving Break | ||
Nov 25 | 🦃 THANKSGIVING BREAK, NO CLASS 🙏🏿 | |
Nov 27 | 🦃 THANKSGIVING BREAK, NO CLASS 🙏🏿 | |
👀 Emerging Topics 🔍 | ||
Dec 2 | Advanced Topic | |
Dec 4 | Advanced Topic | |
Dec 6 | Retrospective / Project Workday | PM6 (12/9; 12/17) |
💯 Final Exam 💯 | ||
Dec 9 | Project Demos | |
Dec 17 | Project Demos and Final Exam |