CMSC 22001: Software Construction

    University of Chicago
    Computer Science Department
    Fall 2014
     

 



      Basic Information
      Announcement
      Overview
      Readings
      Project
      Exam
      Grading
      Mailing List
      Schedule


    Basic Information

      When
      • Session 1: 09:00--10:20am Tu/Th
      • Session 2: 12:00--01:20pm Tu/Th
      Where
      • Session 1: Ryerson 277
      • Session 2: Ryerson 251
      Instructor: Professor Shan Lu (shanlu@cs....); RY 257-A; office hour: Wed 2:30--4pm @ Ry 257-A.
      TA:
      • Sean Laguna (slaguna@cs...) office hour: Mon 8pm -- 10pm, Tue 8pm -- 10pm @ CSIL 4;
      • Zhixuan Zhou (zhixuanzhou@cs...) office hour: Fri 2pm --4pm @ CSIL 4.

    Announcement

      12/09 08:00am--10:00am, 10:30am--12:30pm Final exam @ Ry 251. Pick one time slot that works for you. Please contact me ASAP, if neither slots work for you.

      12/7 11:59pm: Project milestone 6 due. See detailed instructions on piazza.

    Stats, Notes, Useful Info.

        Stats:
      • Session 1: Final Exam Avg 86.4; Quiz-7 Avg 8.3; Quiz-6 Avg 7.5; Quiz-5 Avg 6.45; Midterm Avg 89; Quiz-4 Avg 8; Quiz-3 Avg 7.4; Quiz-2 Avg 8.6; Quiz-1 Avg 9.9
      • Session 2: Final Exam Avg 90.9; Quiz-7 Avg 9.4; Quiz-6 Avg 7.7; Quiz-5 Avg 7.00; Midterm Avg 92; Quiz-4 Avg 9; Quiz-3 Avg 9.2; Quiz-2 Avg 8.3; Quiz-1 Avg 9.9


    Overview

      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 6 -- 8 people team.


    Schedule

      This is a tentative schedule.

      09/30 Introduction, Software Processes [notes] 10/02 Agile, Extreme Programming [notes]
      10/07 Requirement Engineering & System Modeling I [notes] 10/09 Requirement Engineering & System Modeling II [notes]
      10/14 System Modeling III [notes] 10/16 Architectural Design [notes]
      10/21 Testing 1 10/23 Midterm
      10/28 Testing 2 [notes] 10/30 OO and Design Patterns I [notes ]
      11/04 OO and Design Patterns II [notes ] 11/06 OO and Design Patterns III [notes ]
      11/11 OO and Design Patterns III [notes ] 11/13 Metrics & Code Smell [notes]
      11/18 Refactoring [notes] 11/20 Bugs & Debugging [notes]
      11/25 No Class 11/27 Thanksgiving Break
      12/02 Software Maintenance [notes] 12/04 Reading Period


    Materials


    Projects

      This is a tentative version.

      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/15): proposing a project, with requirement details and user stories written down (group of 2--3 people);
      • Milestone 2 (10/29): requirement validation and project planning, with development team and plans set up (group of 6--8 people);
      • Milestone 3 (11/05, 11/13): 1st development iteration, with unit test cases to show progress (group of 6--8 people);
      • Milestone 4 (11/19, 11/26): 2nd development iteration, with unit test cases to show progress (group of 6--8 people);
      • Milestone 5 (12/02): system testing and documentation (group of 6--8 people);
      • Milestone 6 (12/07): acceptance testing (groups testing each other's projects).


    Exam

      There will be an in-lecture mid-term exam and a final exam (12/9).


    Grading

      This is just a tentative scheme.

      Warm-Up Project 8%
      Project 45%
      Quizzes 7%
      Mid-Term exam 20%
      Final exam 20%










    Mailing List

      TBA