/Course

Repository for the CS5704 (Software Engineering) course at Virginia Tech taught by Dr. Chris Brown

CS-5704: Software Engineering

Course Description

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.

Learning Objectives

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

Spring 2023 Course Info

  • 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

Schedule

โžก๏ธ 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