CMSC 22001: Software Construction

    University of Chicago
    Computer Science Department
    Fall 2019


      Basic Information
      Mailing List

    Basic Information

      • 9:30--10:50pm Tu/Th
      • Ryerson 251
      Instructor: Professor Shan Lu (shanlu@uch...); Crerar 343; office hour: Tu/Th 10:50--11:50am.
      • Yuxi Chen (chenyuxi@uch...) office hour: Fr 4--6pm @ CSIL 5 (Linux Lab).
      • Chi Li (lichi@uch...) office hour: Tu 3--5pm @ CSIL1(Mac Lab).


      12/04 4:00pm Project milestone 5 due.

      12/09 11:59pm Project milestone 6 due.

      12/10 10:30 -- 12:30 Final exam @ Ryerson 251.

    Stats, Notes, Useful Info.

        Stats: Midterm, median 90.75, average 88.75; Quiz 1, median 9.75, average 9.1; Quiz 2, median 9, average 8.1; Quiz 3, median 7, average 7.1.


      Welcome to Software Construction! In this course, we will study a number of interesting topics including software processes, requirement engineering, software architecture and component design, software testing, debugging, and software maintenance.

      This course assumes familiarity with basic programming skills and data structures. Some background in object-oriented programming (e.g., C++ or Java) is not required, but would be good to have. You will need to program in a 8 people team.


      This is a tentative schedule.

      10/01 Introduction, Software Processes [notes] 10/03 Agile, Extreme Programming [notes]
      10/08 Project Discussion, Requirement Engineering & System Modeling I [notes] 10/10 Architectural Design [notes]
      10/15 System Modeling II [notes][video 1, 2, 3,4, 5] 10/17 System Modeling III [notes] [video] [video clips embedded in notes slides: 1, 2]
      10/22 Testing 1 [notes] 10/24 Testing 2 [notes]
      10/29 Midterm 10/31 Code Smell [notes]
      11/05 Refactoring [notes] (Quiz1) 11/07 Software Maintenance and Design Patterns I (Observer) [notes ]
      11/12 Design Patterns II (Composite, Interpreter) [notes ] (Quiz2) 11/14 Design Patterns III (Strategy, Template, Visitor) [notes ]
      11/19 Design Patterns IV (Factory, Abstract Factory) [notes] (Quiz3) 11/21 Parallel Software Construction [notes ]
      11/26 No Class (Happy Thanksgiving)! 11/28 No Class (Happy Thanksgiving)!
      12/03 Project Presentation 12/05 No Class (Reading Period)



      This is a tentative version.

      You will do a warm-up project in a group of two with the due day on 10/14. More information about this warm-up project will be posted before the second lecture of the class.

      You will propose a project and develop it following the process learned in the class with your teammates.
      Your project will go through the following milestones, with every milestone being graded.
      More details will be announced later.

      • Milestone 1 (10/17): proposing a project, with requirement details and user stories written down (group of 2--3 people);
      • Milestone 2 (10/31): requirement validation and project planning, with development team and plans set up (group of 8 people);
      • Milestone 3 (11/06, 11/13): 1st development iteration, with unit test cases to show progress (group of 8 people);
      • Milestone 4 (11/20, 11/27): 2nd development iteration, with unit test cases to show progress (group of 8 people);
      • Milestone 5 (12/04): system testing and documentation (group of 8 people);
      • Milestone 6 (12/09): acceptance testing (groups testing each other's projects).


      There will be an in-lecture mid-term exam and a final exam.


      This is a tentative scheme.

      Warm-Up Project 8%
      Project 41%
      Quizzes 6%
      Mid-Term exam 20%
      Final exam 25%

    Mailing List

      We will use Piazza.