Schedule

We will examine topics in all the areas of the software development life-cycle:

  1. Requirements analysis and project planning
  2. Software architecture and system design
  3. Implementation tools and techniques
  4. Verification and validation
  5. Deployment and maintenance

The day-by-day schedule is shown below, including all deadlines. Topics listed for each date are tentative though, and subject to change. The schedule is available as schedule.ics – copy that link to subscribe or import it into Google Calendar and other systems.

  • Wed 23 Jan: Meeting 1

    Systems Development Lifecycle (SDLC) and software engineering process models

  • Mon 28 Jan: Meeting 2

    Requirements analysis and estimation

  • Tue 29 Jan: Check-in 1 due

    Set up gitlab account and VM.

  • Wed 30 Jan: Meeting 3

    Version control overview

  • Sun 3 Feb: Milestone 1 due

    User stories

  • Mon 4 Feb: Meeting 4

    Testing overview

  • Wed 6 Feb: Meeting 5

    Unit testing tools

  • Sun 10 Feb: Check-in 2 due

    (Skipped)

  • Mon 11 Feb: Meeting 6

    ‘Assertive’ programming

  • Wed 13 Feb: Meeting 7

    Debugging methodology

  • Mon 18 Feb: Milestone 2 due

    Unit testing

  • Mon 18 Feb: No class – Presidents’ Day
  • Tue 19 Feb: Meeting 8

    Coverage analysis

  • Wed 20 Feb: No class – I am out of town

    We will substitute some online content and exercises. Test automation

  • Sun 24 Feb: Check-in 3 due

    Fix Python code that failed tests.

  • Mon 25 Feb: Meeting 10

    Continuous integration

  • Wed 27 Feb: Meeting 11

    Release management

  • Sun 3 Mar: Milestone 3 due

    Coverage tool

  • Mon 4 Mar: Meeting 12

    Stress testing and fuzz testing

  • Wed 6 Mar: Meeting 13

    Mastering your editor and IDE

  • Sun 17 Mar: Check-in 4 due

    Readings on modularity

  • Mon 18 Mar: Meeting 14

    Coupling, cohesion, and modular design

  • Wed 20 Mar: Meeting 15

    Pub-sub and similar models of inter-module communication

  • Mon 25 Mar: Meeting 16

    Model-View-Controller (MVC) and similar models of flexible collaboration

  • Wed 27 Mar: Meeting 17

    Design considerations for our webgc project.

  • Sun 31 Mar: Milestone 4 due
  • Sun 31 Mar: Check-in 5 due

    Skipped

  • Mon 1 Apr: Meeting 18

    Documentation generators, literate programming

  • Wed 3 Apr: Meeting 19

    Doc tests

  • Sun 7 Apr: Milestone 5 due
  • Mon 8 Apr: Meeting 20

    Dependency injection

  • Wed 10 Apr: Meeting 21

    Mock methods for testing

  • Mon 15 Apr: Meeting 22

    Branching and merging

  • Tue 16 Apr: Check-in 6 due
  • Wed 17 Apr: Meeting 23

    ‘Bisect’ and other advanced uses of version control

  • Sun 21 Apr: Milestone 6 due
  • Mon 22 Apr: Meeting 24

    Meta-programming

  • Wed 24 Apr: Meeting 25

    Software verification overview

  • Sun 28 Apr: Check-in 7 due
  • Mon 29 Apr: Meeting 26

    Design by Contract (DBC)

  • Wed 1 May: Meeting 27

    Other formal methods

  • Mon 6 May: Meeting 28

    Wildcard/overflow day

  • Tue 7 May: Milestone 7 due
  • Mon 13 May: Final exam 10:15 am