Schedule (Tentative)
Week 1
- Topics: Class Overview
- Reading: OOP 1 / OOP 2
- In-class: Specification for Sorting in OOP 2, User Equality in OOP 2
- HW Assignment: HW1
- Quiz: no quiz (first week)
Week 2
- Topics: Procedural Abstraction (Specifications)
- Reading: OOP 2
- In-class: Tail (total) function
- HW Assignment: Loan Calculator (OOP 2.4.3)
- Quiz: Specification of Binary Search
Week 3
- Topics: Data Abstraction and Abstract Data Type (ADT)
- Reading: OOP 3
- In-class: Stack ADT; Membership
- HW Assignment: Polynomial ADT (OOP 3.4.2)
- Quiz: Partial and Total Functions
Week 4
- Topics: Polymorphism, Liskov Substitution Principle
- Reading: OOP 4
- In-class: BankAccount
- HW Assignment: LSP: Market subtype (OOP 4.9.2)
- Quiz: Immutability
Week 5
- Topics: More on Polymorphism and Iterators/Generators
- Reading: OOP 4, 5
- Abstract class
- Interface
- Element vs Related Subtype
- Encapsulation
- In-class: Vehicle, Prime Number
- HW Assignment: Perfect Number (5.4.2)
- Quiz: LSP Analysis
Week 6
- Topics: Functions as First-class Citizens
- Reading: OOP 6
- Higher-Order functions
- Lambda functions
- Closure
- In-class: Functions First
- HW assignment: Redo In-class 6.6
- Quiz: Iterator/Generator Multiple Choice
Week 7
- Topics: Testing
- Reading: OOP 7
- Blackbox testing
- Fuzzing
- Genetic Algorithm
- In-class: list sum GA (7.3)
- HW assignment: Do in-class list sum GA (7.3)
- Quiz: E1 (higher-order and lambda function, closure)
Week 7
- Topics: Testing
- Reading: OOP 7
- Statistical Debugging
- Tarantula vs Ochiai metrics
- Combinatorial Testing
- Property-based Testing
- In-class: Statistical Debugging
- HW assignment: NONE
- Quiz: Names
Week 8
- Topics: Testing (Delta Debugging) and Parallel Computing
- Reading: OOP 7, 8
- Delta Debugging
- Parallel computing concepts: processes, threads, locks, semaphors, monitors
- In-class: Delta Debugging
- HW assignment: Delta Debugging Implementation (8.3.4)
- Quiz: Statistical Debugging using M Metrics
Week 9
- Topics: Parallel Computing
- Reading: OOP 8
- Threads, locks, semaphores, monitors
- deadlock, livelock
- In-class: Benefits of Parallel Computing over Sequential Computing; Election Simulation
- HW assignment: Election Simulation (10.4.2)
- Quiz: Delta Debugging Hello SWE419
Week 10
- Topics: White Box Testing and Verification
- Reading: OOP 8 (symbolic execution) and OOP 9 (verification)
- symbolic execution
- Hoare logic and verification
- In-class: None
- HW assignment: Z3 SMT Solver (8.3.7)
- Quiz: Parallel Computing Concepts
Week 11
- Topics: Hoare Logic and Weakest Precondition
- Reading: OOP 9 (Verification)
- Hoare Triples
- Weakest Precondition
- In-class: Hoare Triples Exercise
- HW assignment: No Homework next week (Let’s wait until we finish Hoare logic and we’ll have a homework on it)
- Quiz: Symbolic Execution
Week 12
- Topics: Weakest Precondition and Verification Condition
- Reading: OOP 9 (Verification)
- WP for While Loop
- Verification Condition
- In-class: Verification Conditions, WP for While Loop
- HW assignment: Weakest Precondition and Verification Condition (9.2.2 OOP)
- Quiz: Hoare Triples
Week 13
- Topics: Final exam review
- Reading: None
- In-class: Review
- HW assignment: None
- Quiz: TBD
HW Assignments
HW1
Goal
- getting started on Piazza
- getting your group together
Instructions
- Sign up for Piazza (if you haven’t already) and join our class page. The link and access code are in the syllabus.
- Post a brief intro about yourself on the course Piazza page. For any credit, the posting must:
- be a follow-up to my introduction post. In other words, all intros need to be in the same thread.
- Include a proper photo of yourself. (No sideways pictures, no oversize pictures, etc.)
- Post your group on Piazza as a follow-up to my group post.