Jackie's Lectures


Roadmap


EECS2011 Fundamentals of Data Structures (Winter 2023 - Section X)

Click to Access:

Background Study: Github

Background Study: OOP in Java

Lectures

Back to Roadmap

# Date Topics Recording iPad Notes Study Materials

Playlist of All Lecture Recordings

All Slides

All Slides (4-up)

All iPad Notes

1 MON, Jan 9

• Syllabus & Administratives

• Using Data Strutures: Searching

2 WED, Jan 11

• Introduction: Searching and More

• Recursion Basics: Resources, Call by Value

3 MON, Jan 16

• Tracing Recursion on an Array

• Problems, Algorithms, Data Structures

• Measuring Efficiency of an Algorithm

• Measuring Running Time via an Experiment

4 WED, Jan 18

• Experimental Analysis: Pros and Cons

• Counting Primitive Operations

• Running Time: Absolute vs. Relative

5 MON, Jan 23

• Asymptotic Upper Bounds: Definitions

• Guessing and Proving for Big-O

• Visualizing Proofs of Big-O

6 WED, Jan 25

• Big-O: Justifying Proof Strategies, Properties

• Big-O: More Examples

• Big-O: Applications to Java Solutions

7 MON, Jan 30

• Deriving Big-O: Nested Loops

• Deriving Big-O: Inserting into Arrays

• Sorting Problem, Sorting Orders

8 WED, Feb 1

• Selection vs. Insertion Sort: Sketch

• Deriving Big-O: Sketch vs. Code

• Linked Lists: Introduction

WrittenTest1 Review FRI, Feb 3

• Counting Primitive Operations

• Approximating Running Time

• Loop with LogN Iterations

9 WED, Feb 8

• Absolute Indexing vs. Relative Positioning

• SLL in Java: Node, SinglyLinkedList

• SLL in Java: List Construction, getSize, getTail

10 MON, Feb 13

• SLL operations: add/remove First/Last

• SLL operations: accessing/inserting into Middle

11 WED, Feb 15

• SLL operations: insertBefore vs. insertAfter

• Performance: Arrays vs. SLLs

• Doubly-Linked Lists: Introduction, addBewteen

12 (Makeup Lecture for WrittenTest1; ≈ 90 minutes)
To be Completed by: March 20 (WrittenTest2)
SUN, Feb 26
13 MON, Feb 27

• Abstract Data Types (ADTs)

• LIFO Stack

• Stack Interface, ArrayStack, LinkedStack

14 WED, Mar 1

• Polymorphism vs. Dynamic Binding

• Polymorphic Stack

• Reversing, Matching, Postfix Notation

• FIFO Queue

• Queue Interface, ArrayQueue

15 (Makeup Lecture for ProgTest1; ≈ 90 minutes)
To be Completed by: March 20 (WrittenTest2)
TUE, Mar 7

  Resources, Learning Outcomes

  Binary Search: Ideas

  Binary Search: Implementation in Java

  Binary Search: Tracing Recursions

  RT of a Linear, Recursive Algorithm

  RT of the Recursive Binary Search

  • Slides
  • Source Code
  • 16 WED, Mar 8

    • Implementing a Queue via Two Stacks

    • Linear vs. Non-Linear Data Structures

    • General Trees: Terminology

    17 MON, Mar 13

    • Edge, Path, Depth, Height

    • Generic Trees in Java

    • Computing Depth and Height Recursively

    18 WED, Mar 15

    • Binary Trees (BTs)

    • Complete vs. Full vs. Proper BTs

    • Mathematical Properties of BTs

    19 (Makeup Lecture for WrittenTest2; ≈ 90 minutes)
    To be Completed by: Exam Day
    TUE, Mar 22

     MergeSort: Ideas

     MergeSort: Java Implementation

     MergeSort: Tracing Recursive Calls

     MergeSort RT - Recursion Tree

     MergeSort RT - Recurrence Relation

     QuickSort: Ideas

     QuickSort: Implementation, Tracing

     QuickSort RT: Worst-Case vs. Best Case

  • Slides
  • Source Code
  • 20 WED, Mar 22

    • Proper BTs, Mathematical Induction

    • Tree Traverals: Pre-Order, Post-Order, In-Order

    • Binary Search Trees (BSTs): Introduction

    21 MON, Mar 27

    • Binary Search Tree (BST)

    • BST: Search vs. Sorting Properties

    • BST: Generic Implementation in Java

    22 WED, Mar 29

    • BST: Searching

    • BST: Insertions

    • BST: Deletions (Cases 1 & 2)

    23 WED, Apr 5

    • BST: Deletions (Cases 3 & 4)

    • Height-Balance Property

    • Priority Queues, List-Based Implementation

    24 (Makeup Lecture for ProgTest2; ≈ 90 minutes)
    To be Completed by: Exam Day
    WED, Apr 5

     Heaps: Properties and Examples

     Insertions and Up-Heap Bubbling

     Deletions and Down-Heap Bubbling

     Top-Down Heap Construction

     Bottom-Up Heap Construction

     Heap Sort Algorithm

     Array-Based Implementation of BT

    Back to Roadmap


    EECS3342 System Specification and Refinement (Winter 2023 - Section Z)

    Click to Access:

    Background Study: Github

    Lectures

    Back to Roadmap

    # Date Topics Recording iPad Notes Study Materials

    Playlist of All Lecture Recordings

    All Slides

    All Slides (4-up)

    All iPad Notes

    1 TUE, Jan 10

    • Syllabus & Administratives

    • Introduction: SCS, Code of Ethics

    2 THU, Jan 12

    • Safety- vs. Mission-Critical

    • Industrial Standards

    • Building Right Product vs. Building Product Right

    • Model-Based Development

    3 TUE, Jan 17

    • Logical vs. Programming Operators

    • Implications: Alternative Expressions

    • Propositional Axioms and Theorems

    • Logical Quantifiers: Syntax

    4 THU, Jan 19

    • Logical Quantifications: Proof Strategies

    • Sets: Basic Operations, Power Sets

    5 TUE, Jan 24

    • Bi-Directional Subset Relations

    • Cardinality of Power Set

    • Constructing a Relation

    6 TUR, Jan 26

    • Relational Operations

    • Algebraic Properties of Relations

    • Functional Property

    7 TUE, Jan 31

    • Algebraic Properties of Relations

    • Functions: Partial vs. Total

    • Making Modelling Decisions

    8 THU, Feb 2

    • Injection vs. Surjection vs. Bijection

    • Modelling Decisions on Arrays

    • Lab1 Solution Highlights

    9 TUE, Feb 7

    • Correct by Construction

    • State Space: Axiom vs. Invariant

    • Bridge Controller: Requirements Doc.

    • Initial Model: State Space

    10 THU, Feb 9

    • Invariant: Establishment and Preservation

    • Finding Witness Traces for Invariant Violation

    • Before-After Predicates

    • Sequents: Syntax, Semantics, Sketching Invariant PO

    11 TUE, Feb 14

    • Invariant Preservation: Sequent

    • Inference Rules

    • Conducting Sequent Proofs

    WrittenTest1 Review WED, Feb 15

    • Example Test Questions

    • Partial vs. Total Functions

    • Set Operations

    12 TUE, Feb 28

    • Proving Invariant Preservation

    • Fixing Model: Adding Guards

    • Deadlock Freedom

    13 THU, Mar 2

    • Iterative Process of Proving Model Correctness

    • Formulating Deadlock Freedom (DLF) PO

    • Proving Sequent Formulating DLF Rule

    14 TUE, Mar 7

    • 1st Refinement: Abstraction

    • 1st Refinement: State Space, Invariants

    • 1st Refinement: Events, Guards, Actions

    15 TUE, Mar 14

    • 1st Refinement: Guard Strengthening

    • Guard Strengthening: Intuition, Formulation, Proofs

    16 THU, Mar 16

    • 1st Refinement: Invariant Preservation

    • Relating Concrete and Abstract Transitions

    17 TUE, Mar 21

    • 1st Refinement: Concrete, New Events

    • Relating New Events to the skip Event

    WrittenTest2 Review WED, Mar 22

    • Example Test Questions

    OR_L rule

    18 TUE, Mar 28

    • 1st Refinement: New Events, Divergence/Livelock

    • System Variant (vs. Invariant), Proof Obligations

    19 THU, Mar 30

    • 1st Refinement: Relative Deadlock Freedom

    • 2nd Refinement: Abstraction

    • 2nd Refinement: State Space, Invariants

    20 TUE, Apr 4

    • 2nd Refinement: Abstract vs. Concrete Guards

    • 2nd Refinement: Example Inference Rules

    • 2nd Refinement: Invariant Preservation

    Exam Review THU, Apr 13

    • Abstract vs. Concrete Transitions

    • Divergence/Livelock, Variants

    • Exam Info

    Makeup Lectures for WT1, WT2, ProgTest1, ProgTest2 (≈ 2 hours)
    To be Covered in the Final Exam
    TUE, Apr 4
    Makeup Lectures for WT1, WT2, ProgTest1, ProgTest2 (≈ 2.5 hours)
    To be Covered in the Final Exam
    TUE, Mar 7
  • Slides
  • Notes
  • Back to Roadmap


    EECS4315 Mission-Critical Systems (Winter 2023 - Section Z)

    Click to Access:

    Background Study: Github

    Lectures

    Back to Roadmap

    # Date Topics Recording iPad Notes Study Materials

    Playlist of All Lecture Recordings

    All Slides

    All Slides (4-up)

    All iPad Notes

    iPad Tempalte (Exercises)

    1 TUE, Jan 10

    • Syllabus & Administratives

    • Theorem Proving vs. Model Checking

    2 THU, Jan 12

    • Safety- vs. Mission-Critical

    • Code of Ethics for Profession Engineers

    • Industrial Standards

    • Building Right Product vs. Building Product Right

    3 TUE, Jan 17

    • Catching Defects at the Design Phase

    • Model-Based Development: 3342 vs. 4315

    • TLA+ Resources

    • Propositional vs. Programming Operators

    4 THU, Jan 19

    • Implications: Analogy, Alternative Expressions

    • Propositional Theorems

    • Logical Quantifications: Analogy, Exercises

    5 TUE, Jan 24

    • Proving/Disproving Logical Quantifiers

    • Using Model Checking to Solve Puzzles

    • Conversions between Quantifiers

    • Equational Style Proofs

    6 THU, Jan 26

    • Model Checking: Introduction

    • Linear-time Temporal Logic (LTL): Syntax

    • Operator Precedence, Symbols

    7 TUE, Jan 31

    • Practical Knowledge about Parsing

    • Drawing Parse Trees

    • Left-Most Derivations (LMD)

    8 THU, Feb 2

    • Parse Trees vs. LMDs vs. RMDs

    • Deriving Subformulas

    • (Optional) The Dangling Else Problem

    • Labelled Transition System (LTS)

    9 TUE, Feb 7

    • Examples: LTS Formulation

    • Paths, Unwinding Paths

    • Path Satisfaction: X, G, F

    10 THU, Feb 9

    • Path vs. Model Satisfactions

    • Proving vs. Disproving Strategies

    • Unary Temporal Operators: X, G, F

    WrittenTest1 Review SUN, Feb 12

    • Proving vs. Disproving the Unary Temporal Operator (F, G)

    • Parsing LTL Formula Strings

    11 TUE, Feb 28

    • Model Satisfaction: Nested LTL Operators

    FGϕ

    Fϕ ⇒ FGϕ

    12 THU, Mar 2

    Fϕ ⇒ FGϕ

    • Formulation, Proving vs. Disproving Strategies, Exercises

    PlusCal Assertions: getAllSuffixes, getRightShifts

    13 TUE, Mar 14

    GFϕ

    GFϕ ⇒ GFϕ

    • LTL Operators: Until, Weak Until, Release

    14 THU, Mar 16

    • Exercises: Model Satisfaction (U, W, R)

    • Exercises: Formulating Natural Language in LTL

    WrittenTest2 Review SUN, Mar 19

    • Showing Postcondition being Inappropriate

    • Clarifying U vs. W vs. R Operators

    15 TUE, Mar 28

    • Stronger vs. Weaker Assertions

    • Relative, Partial vs. Total Correctness

    • Hoare Triple: Syntax and Interpretation

    16 THU, Mar 30

    • Hoare Triple: Predicate Transformer

    • Weakest Precondition (WP)

    • WP Rules: Assignments, Conditionals, Seq. Comp.

    17 THU, Apr 6

    • Contracts for Loops: Invariant vs. Variant

    • Proving Loop Correctness

    Exam Review WED, Apr 12

    • ProgTest2 solution sketch

    G(p U r) vs. p U r

    • Proving Maintenance of Loop Invariant

    Back to Roadmap


    EECS2030 Advanced Object Oriented Programming (Fall 2022 - Section F)

    Click to Access:

    Background Study: Tutorials

    Background Study: Lectures

    For the above topics, refer to the relevant parts of lectures in EECS1022 Winter 2021 if necessary.

    Lectures

    Back to Roadmap

    # Date Topics Recording iPad Notes Study Materials

    Playlist of All Lecture Recordings

    All Slides

    All Slides (4-up)

    All iPad Notes

    1 WED, Sep 7

    • Syllabus & Administratives

    • Classes vs. Objects

    • Object Aliasing

    2 MON, Sep 12

    • Separation of Concerns: Model, Console, JUnit

    • OO: Observe-Model-Execute

    • Default Constructors: Implicit vs. Explicit

    • Object Creations: Low-Level Memory View

    • JUnit Assertions: assertTrue/False, assertNotSame/Same

    3 WED, Sep 14

    • Parameters vs. Arguments

    • Primitive Types vs. Reference Types

    • Variable Shadowing

    • Visualizing Objects

    • Instantiating `this` in Constructor

    • Instantiating `this` in Accessor

    • Variable Assignments: Primitive vs. Reference

    • Exercise (Arrays & Aliasing): Part 1

    4 MON, Sep 19

    • Exercise (Arrays & Aliasing): Part 2

    • Tracing Accessor vs. Mutator Calls

    • Use of Accessors vs. Mutators

    • Design of Method Parameters

    • Attribute/Parameter/Return Type Declarations

    • Anonymous Objects

    5 WED, Sep 21

    • More advanced use of `this`

    • Static Variables: Global Variables

    • Common Error: Static Counter

    6 MON, Sep 26

    • Using Non-Static Variable in a Static Context

    • Call Stack: Caller vs. Callee

    • Error Handling via Console: Circles & Banks

    • Practice Test 1 Question: Arrays & Aliasing

    7 WED, Sep 28

    • What is an Exception?

    • What to Do When an Exception is Thrown?

    • Catch-or-Specify Requirement

    • Example: To Handle or Not to Handle

    8 MON, Oct 3

    • Using Exceptions: Circles & Banks

    • Multiple Catch Blocks

    • More Advanced Example of Exceptions

    9 WED, Oct 5

    • Testing: Expected vs. Unexpected Exceptions

    • Nested try-catch Blocks

    • Console Testers vs. JUnit Tests

    10 MON, Oct 17

    • Consoler Testers vs. JUnit Tests

    • Regressing Testing and TDD

    11 WED, Oct 19

    • == Operator: Primitive vs. Reference

    • equals method from Object

    • PointV1: No Overriding

    • Overriding equals: 4 Phases

    12 MON, Oct 24

    • Overriding equals: Type Casting

    • JUnit Assertions for Equality

    • Short-Circuit Evaluation

    13 WED, Oct 26

    • Object Equality: Array-Typed Attributes

    • Call by Value

    14 MON, Oct 31

    • Call by Value: Primitive vs. Reference

    • Aggregations

    • WrittenTest2 Practice Questions

    15 WED, Nov 2

    • Dot Notation vs. Private Attributes

    • Compositions

    • Inheritance: SMS Problem

    16 MON, Nov 7

    • SMS: Two Design Attempts

    • SMS: Use of extends and super

    • Visibility: private vs. none vs. protected vs. public

    17 WED, Nov 9

    • Code Reuse, Static Types, Expectations

    • Intuition: Polymorphism

    • Intuition: Dynamic Binding

    • Multi-Level Inheritance

    18 MON, Nov 14

    • Rules of Substitutions

    • Static Types vs. Dynamic Types

    • Motivation of Type Casting

    19 WED, Nov 16

    • Anatomy of a Type Cast

    • Compilale Casts: Upwards vs. Downwards

    • Compilable Casts May Fail at Runtime

    20 MON, Nov 21

    • Type Casts: Compilable vs. Exception-Free

    • Checking Dynamic Types via instanceof

    • Polymorphic Method Parameters

    21 WED, Nov 23

    • Polymorphic Array

    • Polymorphic Return Types

    • Dynamic Binding of equals Method

    22 MON, Nov 28

    • Inheritance: Type Checking Rules

    • Recursion: Introduction

    • Examples: Factorial, Fibonacci, Palindrome

    23 WED, Nov 30

     Tracing Fibonacci Number

     Recursion on Strings: Reverse

     Recursion on Strings: Occurrences

     Recursions on Arrays: Specifying Sub-Ranges

     Recursions on Arrays: All Positive?

     Recursions on Arrays: Sorted?

    24 MON, Dec 5

    • Recap of Recursion

    • Wrap-Up of the Course

    • Exam Info

    25 THU, Dec 8

    • Exam Review Q&A

    • Type Casts

    • Polymorphic Method Parameters

    • Short-Circuit Evaluation

    Back to Roadmap


    EECS4302 Compilers and Interpreters (Fall 2022 - Section A)

    Click to Access:

    Background Studies: OOP in Java

    Tutorials

    Lectures

    Back to Roadmap

    # Date Topics Recording iPad Notes Study Materials

    Playlist of All Lecture Recordings

    All Slides

    All Slides (4-up)

    All iPad Notes

    1 THU, Sep 8

    • Syllabus & Administratives

    • Semantic Domain

    • Limitation of Eclipse Compiler (A+ challenge)

    2 TUE, Sep 13

    • Compiler Infrastructure

    • Intermediate Representation (IR)

    • Analysis: Lexical, Syntactic, Semantic

    • Example Optimizer

    3 THU, Sep 15

    • Example Object-to-Relational Compiler

    • Scanner in Context

    • Alphabets

    • Strings (Σk)

    4 TUE, Sep 20

    • Langauges, Problems

    • Regular Language Operations

    • Constructing Regular Expressions

    5 THU, Sep 22

    • Review Exercises: Strings & Languages

    • Exercises: RE Constructions & Specification

    • RE Operator Precedence

    • DFA: Basics

    • Review Exercise: Drawing DFA

    6 TUE, Sep 27

    • DFA Formulation

    • NFA: Non-Deterministic State Transitions

    7 THU, Sep 29

    • NFA: "Alternative Realities"

    • Subset Construction with Lazy Evaluation

    • epsilon-NFA: Motivating Examples

    8 TUE, Oct 4

    • ε-closures

    • Conversion: ε-NFA to DFA

    • Conversion: Regular Expressions to ε-NFA

    9 THU, Oct 6

    • Minimizing DFA

    • Implementing a Scanner

    • Context-Free Grammar: Terminology

    10 TUE, Oct 18

    • Comparing Two CFGs

    • Semantic Analysis

    • Finding Witnesses of Ambiguity

    11 THU, Oct 20

    • CFG: Formulation

    • RE/DFA to CFG

    • Ambiguity: Dangling else

    12 TUE, Oct 25

    • Derivations vs. Parse Trees

    • Dangling else Problem

    • Composite Pattern: Problem, Attempts

    13 THU, Oct 27

    • Composite Pattern: Architecture & Tests

    • Visitor Pattern: Problem, Architecture & Tests

    14 TUE, Nov 1

    • Visitor Pattern: Double Dispatch

    • Visitor Pattern: Open-Closed Principle

    • Visitor Pattern: Single-Choice Principle

    15 THU, Nov 3

    • Identifying Derivations

    • Top-Down Parsing Algorithm

    • Left- vs. Right-Recursive CFG

    16 THU, Nov 10

    • Removing Left Recursions from CFG

    • Removing epsilon-Productions

    • Backtrack-Free Parsing: Motivation

    17 TUE, Nov 15

    • Computing the FIRST Set: Algorithm

    18 THU, Nov 17

    • FOLLOW Set, START Set

    • Backtrack-Free Top-Down Parsing

    19 TUE, Nov 22

    • Left Factoring

    • LL(1) vs. LR(1) Parsers

    • Bottom-Up Parsing, Discovering RMDs

    20 THU, Nov 24

    • Bottom-Up Parsing: Shift vs. Reduce

    • Exercise: LL(1) Parser

    21 TUE, Nov 29

    • Bottom-Up Parsing: Handles

    • Bottom-Up Parsing: Right Most Derivations

    • LR(1) Items: Definition & Exercises

    22 THU, Dec 1

    • Canonical Collection ≈ Subset States

    • Computing closure

    • Computing goto

    23 TUE, Dec 6

    • Building CC and Transition Function

    • Building Action and Goto Tables

    • Shift-Reduce vs. Reduce-Reduce Conflicts

    24 THU, Dec 8

    • Exam Review Q&A

    • FOLLOW Set

    • epsilon-NFA to DFA

    Back to Roadmap


    EECS2011 Fundamentals of Data Structures (Winter 2022 - Sections N & Z)

    Click to Access:

    Background Study: Github

    Background Study: OOP in Java

    Lectures

    Back to Roadmap

    # Date Lectures iPad Notes Study Materials Q&A Sessions

    Playlist of All Lecture Recordings

    All Slides

    All Slides (4-up)

    All iPad Notes

    1 MON, Jan 10
    to
    SUN, Jan 16

      Playlist for Week 1

     Lecture 1 - Part A1 - Resources, Algorithm vs. Data Structures

     Lecture 1 - Part A2 - Measuring Running Time

     Lecture 1 - Part B1 - Primitive Operations

     Lecture 1 - Part B2 - Counting Primitive Op. (for-Loop)

     Lecture 1 - Part B3 - Counting Primitive Op. (while-Loop)

     Lecture 1 - Part C1 - From Absolute RT to Relative RT

     Lecture 1 - Part C2 - The Big-O Notation

     Lecture 1 - Part C3 - Proposition: Big-O Proof Strategy

     Lecture 1 - Part C4 - Proposition: Relating Functions

     Lecture 1 - Part D - Big-O for Math Functions

     Notes

     Problems

     Jan 19 (WED)

             

     Jan 20 (THU)

           

    2 MON, Jan 17
    to
    SUN, Jan 23

      Playlist for Week 2

     Lecture 1 - Part E1 - Remarks on Using the Big-O Notation

     Lecture 1 - Part E2 - Exercises: Approximating Running Time

     Lecture 1 - Part E3 - More Advanced Exercise on RT

     Lecture 2 - Part A1 - Resources for Generics in Java

     Lecture 2 - Part A2 - Upper Bounds of Array Operations

     Lecture 2 - Part B1 - Variants of the Sorting Problem

     Lecture 2 - Part B2 - Visualizing Selection vs. Insertion Sort

     Lecture 2 - Part B3 - Selection Sort: Java and Tracing

     Lecture 2 - Part B4 - Insertion Sort: Java and Tracing

     Lecture 2 - Part B5 - Using the Eclipse Debugger for Tracing

     Notes

     Problems

     Jan 26 (WED)

           

     Jan 27 (THU)

           

    3 MON, Jan 24
    to
    SUN, Jan 30

      Playlist for Week 3

     Lecture 2 - Part C1 - Chain of Nodes, Relative Positioning

     Lecture 2 - Part C2 - Dynamic Size, Reference Aliasing

     Lecture 2 - Part D1 - Node vs. SinglyLinkedList

     Lecture 2 - Part D2 - Constructing a Chain of Nodes

     Lecture 2 - Part D3 - Setting a List's Head to a Chain

     Lecture 2 - Part D4 - List/Node Constructions in Debugger

     Lecture 2 - Part E1 - Computing Size, current Node

     Lecture 2 - Part E2 - Computing Tail, Tracing in Debugger

     Lecture 2 - Part E3 - Inserting to the Front, Exercises

     Notes

     Problems

     Feb 2 (WED)

           

     Feb 3 (THU)

         

     Guide: Written Test 1

    4 MON, Jan 31
    to
    SUN, Feb 6

      Playlist for Week 4

     Lecture 2 - Part E4 - Accessing Middle of List

     Lecture 2 - Part E5 - Sketch: Adding into Middle of List

     Lecture 2 - Part E6 - Adding into Start/Middle/End of List

     Lecture 2 - Part E7 - removeLast, addLast, removeFirst

     Lecture 2 - Part F - Comparing Arrays vs. SLLs, Exercises

     Lecture 2 - Part G1 - Non-Generic SLLs: Code Duplicates

     Lecture 2 - Part G2 - Generic SLLs: Node<Str>, Node<Int>

     Lecture 2 - Part G3 - Generic List Creations and Methods

     Notes

     Problems

     Feb 9 (WED)

           

     Feb 10 (THU)

           

    5 MON, Feb 14
    to
    SUN, Feb 20

      Playlist for Week 5

     Lecture 2 - Part H1 - DLL: prev reference, header vs. trailer

     Lecture 2 - Part H2 - DLL: Empty vs. Non-empty DLLs

     Lecture 2 - Part I - Generic DLL: Initializing an Empty List

     Lecture 2 - Part J1 - DLL: Adding between Nodes

     Lecture 2 - Part J2 - DLL: addFirst, addLast, addAt

     Lecture 2 - Part J3 - DLL: Removing an Arbitrary Node

     Lecture 2 - Part J4 - DLL: removeFirst, removeLast, removeAt

     Lecture 2 - Part K - Arrays vs. SLLs vs. DLLs, Exercises

     Lecture 3 - Part A1 - Contractual Relation: Supplier vs. Client

     Lecture 3 - Part A2 - Contractual Relation in OOP

     Lecture 3 - Part A3 - Modularity, Modular Design

     Lecture 3 - Part A4 - Abstract Data Types (ADTs), Interfaces

     Notes

     Guide: Programming Test 1

     Feb 23 (WED) - ProgTest1

       

     Problems

     Mar 2 (WED)

           

    6 MON, Feb 21
    to
    SUN, Feb 27

      Playlist for Week 6

     Lecture 3 - Part B1 - Stack ADT: Last In First Out (LIFO)

     Lecture 3 - Part B2 - Array-Based Implementation of Stack

     Lecture 3 - Part B3 - SLL-Based Implementation of Stack

     Lecture 3 - Part B4 - Polymorphic Stacks

     Lecture 3 - Part C1 - Stack App: Reversing an Array

     Lecture 3 - Part C2 - Stack App: Matching Delimiters

     Lecture 3 - Part C3 - Stack App: Postfix Calculations

     Lecture 3 - Part D1 - Queue ADT: First In First Out (FIFO)

     Lecture 3 - Part D2 - Array- vs. SLL-Based Imp. of Queue

     Lecture 4 - Part A1 - Background Studies on Recursion

     Notes

    7 MON, Feb 28
    to
    SUN, Mar 6

      Playlist for Week 7

     Lecture 3 - Part D3 - Circular Arrays: Empty, Insertions

     Lecture 3 - Part D4 - Circular Arrays: Deletions, Insertions

     Lecture 3 - Part D5 - The Double-Ended Queue (Deque) ADT

     Lecture 3 - Part E1 - Dynamic Arrays: Increments vs. Doubling

     Lecture 3 - Part E2 - Amortized RT of Increments Strategy

     Lecture 3 - Part E3 - Deriving Sum of Geometric Sequence

     Lecture 3 - Part E4 - Amortized RT of Doubling Strategy

     Lecture 3 - Part E5 - Comparing RTs of Increments vs. Doubling

     Lecture 4 - Part A2 - Resources, Learning Outcomes

     Lecture 4 - Part B1 - Binary Search: Ideas

     Lecture 4 - Part B2 - Binary Search: Implementation in Java

     Lecture 4 - Part B3 - Binary Search: Tracing Recursions

     Lecture 4 - Part B4 - RT of a Linear, Recursive Algorithm

     Lecture 4 - Part B5 - RT of the Recursive Binary Search

     Notes

     Mar 9 (WED)

         

    8 MON, Mar 7
    to
    SUN, Mar 13

      Playlist for Week 8

     Lecture 5a - Part A1 - Linear vs. Non-Linear Structures

     Lecture 5a - Part A2 - General Tree Terminology I

     Lecture 5a - Part A3 - General Tree Terminology II

     Lecture 5a - Part A4 - Tree Definitions and Applications

     Lecture 5a - Part B1 - TreeNode Class, Generic Array

     Lecture 5a - Part B2 - Testing Tree Construction

     Lecture 5a - Part B3 - Computing Depth Recursively

     Lecture 5a - Part B4 - Computing Height Recursively

     Lecture 5a - Part C1 - Binary Trees: Recursive Structure

     Lecture 5a - Part C2 - BTs: Counting Nodes at Levels

     Lecture 5a - Part C3 - Complete BTs vs. Full BTs

     Lecture 5a - Part C4 - Bounding Various Measures of BTs

     Notes

     Guide: Written Test 2

     Mar 16 (WED)

         

    9 MON, Mar 14
    to
    SUN, Mar 20

      Playlist for Week 9

     Lecture 5a - Part C5 - Property of a Proper Binary Tree

     Lecture 5a - Part D - Applications of Binary Trees

     Lecture 5a - Part E1 - Definitions of Tree Traversals

     Lecture 5a - Part E2 - Tracing Pre-Order vs. Post-Order

     Lecture 5a - Part E3 - Pre-Order vs. In-Order vs. Post-Order

     Lecture 5b - Part A1 - Binary Search Tree (BST): Definition

     Lecture 5b - Part A2 - In-Order Traversal on a BST

     Notes

  • Questions?
  • 10 MON, Mar 21
    to
    SUN, Mar 27

      Playlist for Week 10

     Lecture 5b - Part B1 - BSTNode vs. Doubly-Linked Node

     Lecture 5b - Part B2 - In-Order Traversal in Java

     Lecture 5b - Part B3 - Tracing Tree Construction and Traversal

     Lecture 5b - Part C1 - Searching: Successful vs. Unsuccessful

     Lecture 5b - Part C2 - Searching: Running Time

     Lecture 5b - Part C3 - Binary Search: BST vs. Sorted Array

     Lecture 5b - Part D - BST Insertions

     Lecture 5b - Part E1 - BST Deletions: Cases 1 to 3

     Lecture 5b - Part E2 - BST Deletions: Case 4

     Lecture 4 - Part C1 - MergeSort: Ideas

     Lecture 4 - Part C2 - MergeSort: Java Implementation

     Lecture 4 - Part C3 - MergeSort: Tracing Recursive Calls

     Notes

     Guide: Programming Test 2

     Mar 30 (WED)

         

    11 MON, Mar 28
    to
    SUN, Apr 3

      Playlist for Week 11

     Lecture 5c - Part A1 - BST with Linear Height

     Lecture 5c - Part A2 - Height-Balance Property

     Lecture 5c - Part A3 - Intuition: Tree Rotations

     Lecture 5c - Part B0 - Fixing Balance after Insertions

     Lecture 5c - Part B1 - Case 1: Single, Left Rotation

     Lecture 5c - Part B2 - Case 2: Single, Right Rotation

     Lecture 5c - Part B3 - Case 3: R-L Rotations, Exercise

     Lecture 5c - Part C0 - Fixing Balance after Deletions

     Lecture 5c - Part C1 - Case 1: Single Trinode Step

     Lecture 5c - Part C2 - Case 2: Multiple Trinode Steps

     Lecture 5c - Part C3 - RTs and Implementations of Rotations

     Lecture 4 - Part C4 - MergeSort RT - Recursion Tree

     Lecture 4 - Part C5 - MergeSort RT - Recurrence Relation

     Notes

    12 MON, Apr 4
    to
    SUN, Apr 10

      Playlist for Week 12

     Lecture 4 - Part D1 - QuickSort: Ideas

     Lecture 4 - Part D2 - QuickSort: Implementation, Tracing

     Lecture 4 - Part D3 - RT: Worst-Case vs. Best Case

     Lecture 5d - Part A1 - Priority Queue (PQ): Introduction

     Lecture 5d - Part A2 - List-Based Implementation of PQ

     Lecture 5d - Part B - Heaps: Properties and Examples

     Lecture 5d - Part C - Insertions and Up-Heap Bubbling

     Lecture 5d - Part D - Deletions and Down-Heap Bubbling

     Lecture 5d - Part E - Top-Down Heap Construction

     Lecture 5d - Part F - Bottom-Up Heap Construction

     Lecture 5d - Part G - Heap Sort Algorithm

     Lecture 5d - Part H - Array-Based Implementation of BT

     Wrap-Up of the Course

     Notes

     Guide: Final Exam (Last Updated: April 7)

     Example Exam Questions

     Example Exam Questions (solution)

    Back to Roadmap


    EECS3342 System Specification and Refinement (Winter 2022 - Section Z)

    Click to Access:

    Background Study: Github

    Lectures

    Back to Roadmap

    # Date Lectures iPad Notes Study Materials Q&A Sessions

    Playlist of All Lecture Recordings

    All Slides

    All Slides (4-up)

    All iPad Notes

    1 MON, Jan 10
    to
    SUN, Jan 16

      Playlist for Week 1

     Lecture 1a - Part A - SCS, FM, Code of Ethics

     Lecture 1a - Part B - Verification vs. Validation

     Lecture 1a - Part C - Model-Based Development

     Lecture 1b - Part A1 - Propositional Operators

     Lecture 1b - Part A2 - More Insights of Implications

     Lecture 1b - Part B1 - Universal Quantification

     Lecture 1b - Part B2 - Existential Quantification, Conversions

     Lecture 1b - Part C - Set Relations, Set Operations, Power Set

     Lecture 1b - Part D1 - Constructing Tuples using Cross Products

     Lecture 1b - Part D2 - Defining Possible Relations

     Lecture 1b - Part D3 - Exercise: Enumerating Possible Relations

     Lecture 1b - Part D4 - Relations: Domain, Range, Image

     Lecture 1b - Part D5 - Relations: Restrictions vs. Subtractions

     Notes

     Jan 20 (THU)

       

       

     Guide: Written Test 1

    2 MON, Jan 17
    to
    SUN, Jan 23

      Playlist for Week 2

     Lecture 1b - Part D6 - Relational Overriding

     Lecture 1b - Part D7 - Exercise: Rewriting Relational Operations

     Lecture 1b - Part E1 - Defining the Functional Property

     Lecture 1b - Part E2 - Partial vs. Total, Modelling Exercise

     Lecture 1b - Part E3 - Partial vs. Total Injections

     Lecture 1b - Part E4 - Partial vs. Total Surjections

     Lecture 1b - Part E5 - Bijections

     Lecture 1b - Part E6 - Exercise: Categorizing Functions

     Lecture 1b - Part E7 - Formalizing Arrays as Functions

     Notes

     Jan 27 (THU)

       

       

    3 MON, Jan 24
    to
    SUN, Jan 30

      Playlist for Week 3

     Lecture 2 - Part A1 - Correct by Construction

     Lecture 2 - Part A2 - State Space, Combinatorial Explosion

     Lecture 2 - Part A3 - Requirements Document, Refinement Strategy

     Lecture 2 - Part B1 - Applying Abstraction w.r.t. REQ2

     Lecture 2 - Part B2 - Initial Model: state space and invariants

     Lecture 2 - Part B3 - Initial Model: events, guards, actions

     Lecture 2 - Part B4 - Event Traces Causing Invariant Violations

     Lecture 2 - Part B5 - Event Actions vs. Before-After Predicates

     Notes

    4 MON, Jan 31
    to
    SUN, Feb 6

      Playlist for Week 4

     Lecture 2 - Part C1 - Event Design: Updates Subject to Invariants

     Lecture 2 - Part C2 - Sequents: Syntax and Semantics

     Lecture 2 - Part C3 - Sketching PO Rule of Invariant Preservation

     Lecture 2 - Part C4 - PO Rule of Invariant Preservation: Components

     Lecture 2 - Part C5 - PO Rule of Invariant Preservation: Sequents

     Lecture 2 - Part C6 - Inference Rules: Syntax and Semantics

     Lecture 2 - Part C7 - Proving a Sequent: Steps and Structures

     Lecture 2 - Part C8 - Example Inference Rules

     Lecture 2 - Part C9 - Proving INV Sequents for ML_out and ML_in

     Notes

     Feb 10 (THU)

       

       

    5 MON, Feb 14
    to
    SUN, Feb 20

      Playlist for Week 5

     Lecture 2 - Part D1 - Initializing the System

     Lecture 2 - Part D2 - Proving PO of Invariant Establishment

     Lecture 2 - Part E1 - Formulating PO of Deadlock Freedom

     Lecture 2 - Part E2 - More Example Inference Rules, Exercise

     Lecture 2 - Part E3 - Discharging PO of DLF: First Attempt

     Lecture 2 - Part E4 - Revising Model, Second Attempt

     Lecture 2 - Part E5 - Final, Provably Correct Initial Model

     Lecture 2 - Part F1 - 1st Refinement: More "Concrete" Abstraction

     Notes

     Mar 3 (THU)

       

       

    6 MON, Feb 21
    to
    SUN, Feb 27

      Playlist for Week 6

     Lecture 2 - Part F2 - Refined, Concrete State Space

     Lecture 2 - Part F3 - Deriving Concrete Event Guards

     Lecture 2 - Part F4 - State Transitions: Abstract vs. Concrete

     Lecture 2 - Part F5 - States, Invariants, Events: Abstract vs. Concrete

     Lecture 2 - Part G1 - Sketching PO of Refinement

     Lecture 2 - Part G2 - PO of Guard Strengthening: Sequents

     Lecture 2 - Part G3 - Proving Guard Strengthening: ML_out/GRD

     Lecture 2 - Part G4 - Proving Guard Strengthening: ML_in/GRD

     Lecture 2 - Part H - PO of Invariant Preservation, Exercises

     Lecture 2 - Part I - PO of Invariant Establishment, Exercises

     Notes

    7 MON, Feb 28
    to
    SUN, Mar 6

      Playlist for Week 7

     Lecture 2 - Part J1 - New Events (IL_in, IL_out)

     Lecture 2 - Part J2 - Guarded Actions of New Events

     Lecture 2 - Part J3 - Simulating a New Event via skip

     Lecture 2 - Part J4 - PO of Invariant Preservation: New Events

     Lecture 2 - Part J5 - Proving Inv. Preservation: IL_in/inv1_4

     Lecture 2 - Part J6 - Proving Inv. Preservation: IL_in/inv1_5

     Lecture 2 - Part K1 - Livelock Caused by New Events Diverging

     Lecture 2 - Part K2 - Variant Measuring New Events Converging

     Lecture 2 - Part K3 - Convergence of New Events: NAT and VAR

     Lecture 2 - Part L1 - Relative DLF: Idea and Sequent

     Lecture 2 - Part L2 - More Example Inference Rules

     Lecture 2 - Part L3 - Final, Provably Correct First Refinement

     Notes

     Guide: Written Test 3

     Mar 10 (THU)

       

       

    9 MON, Mar 14
    to
    SUN, Mar 20

      Playlist for Week 9

     Lecture 2 - Part M1 - 2nd Refinement (m2): Superposition

     Lecture 2 - Part M2 - Carrier Set, Axioms, Invariants

     Lecture 2 - Part M3 - Refining Old Events from m1

     Lecture 2 - Part M4 - Designing new Events in m2

     Lecture 2 - Part N1 - INV POs: Refined Events

     Lecture 2 - Part N2 - More Example Inference Rules

     Lecture 2 - Part N3 - INV POs: First Attempt & Analysis

     Lecture 2 - Part O - INV POs: Second Attempt

     Lecture 2 - Part P - Adding Actions to New Events

     Lecture 2 - Part Q1 - Analyzing Unprovable Sequent

     Lecture 2 - Part Q2 - Splitting Old, Concrete Events

     Notes

    10 MON, Mar 21
    to
    SUN, Mar 27

      Playlist for Week 10

     Lecture 2 - Part R1 - Divergence of New Events

     Lecture 2 - Part R2 - Regulating New Event Occurrences

     Lecture 2 - Part R3 - Measuring New Event Occurrences

     Lecture 2 - Part S - DLF, Provably Correct Second Refinement

     Notes

     Guide: Written Test 4

     Mar 31 (THU)

       

       

    11 MON, Mar 28
    to
    SUN, Apr 3

      Playlist for Week 11

     Lecture 3 - Part A1 - Introduction, RD, Refinement Strategy

     Lecture 3 - Part A2 - Initial Model: State Space

     Lecture 3 - Part A3 - Initial Model: Events

     Lecture 3 - Part A4 - Initial Model: Invariant Establishment

     Lecture 3 - Part A5 - Initial Model: Invariant Preservation

     Notes

     Apr 7 (THU)

       

    12 MON, Apr 4
    to
    SUN, Apr 10

      Playlist for Week 12

     Lecture 3 - Part B1 - First Refinement: Asynchrony & Gradualness

     Lecture 3 - Part B2 - Concrete State Space and Invariants

     Lecture 3 - Part B3 - Concrete Events: Old vs. New

     Lecture 3 - Part B4 - Proofs and Exercises

     Notes

     Guide: Final Exam (Last Updated: April 7)

     Example Exam Questions

     Example Exam Questions (solution)

    Back to Roadmap


    EECS2030 Advanced Object Oriented Programming (Fall 2021 - Sections B & E)

    Click to Access:

    Background Study: Eclipse and Github

    Background Study: Tutorials

    Background Study: Lectures

    For the above topics, refer to the relevant parts of lectures in EECS1022 Winter 2021 if necessary.

    Lectures

    Back to Roadmap

    # Date Lectures iPad Notes Study Materials Q&A Sessions

    Playlist of All Lecture Recordings

    All Slides

    All Slides (4-up)

    All iPad Notes

    1 WED, Sep 8
    to
    TUE, Sep 14

    • Review Tutorials (Part 1 and Part 2).

     Week 1 - Intro

     Week 2 - Intro

     Intro

     Sep 15 (W1)

         

     Sep 16 (W1)

       

    2 WED, Sep 15
    to
    TUE, Sep 21

     Intro

     Sep 22 (W2)

         

     Sep 23 (W2)

       

    3 WED, Sep 22
    to
    TUE, Sep 28

      Playlist for Week 3

     Week 3 - Intro

     Lecture 2a - Part A - Caller vs. Callee in a Method Invocation

     Lecture 2a - Part B - Visualizing a Method Call Chain as a Stack

     Lecture 2a - Part C1 - Error Handling via Console Messages (Circle)

     Lecture 2a - Part C2 - Error Handling via Console Messages (Bank)

     Lecture 2a - Part D1 - When an Exception is Thrown at Runtime

     Lecture 2a - Part D2 - The Catch-or-Specify Requirement

     Lecture 2a - Part E1 - To Handle or Not to Handle: Background

     Lecture 2a - Part E2 - To Handle or Not to Handle: Version 1

     Lecture 2a - Part E3 - To Handle or Not to Handle: Version 2

     Lecture 2a - Part E4 - To Handle or Not to Handle: Version 3

     Lecture 2a - Part F1 - Error Handling via Exceptions (Circle)

     Lecture 2a - Part F2 - Error Handling via Exceptions (Bank)

     Lecture 2a - Part G - Multiple Catch Blocks, Parsing Strings to Integers

     Intro

     Notes

     Guide: Written Test 1

     Sep 29 (W3)

       

     Sep 30 (W3)

       

    4 WED, Sep 29
    to
    TUE, Oct 5

      Playlist for Week 4

     Week 4 - Intro

     Lecture 2a - Part A1 - Revisiting the Catch-or-Specify Requirement

     Lecture 2a - Part A2 - Introducing the Bounded Counter Problem

     Lecture 2a - Part B1 - Sketching the Design of Test Cases

     Lecture 2a - Part B2 - ConsoleTester1: VTSE expected

     Lecture 2a - Part B3 - ConsoleTester2: Correct Implementation

     Lecture 2a - Part B4 - ConsoleTester2: Incorrect Implementations

     Lecture 2a - Part B5 - Exercise and an Iterative Console Tester

     Lecture 2a - Part C - Deriving Test Cases, Limitation of Console Testers

     Lecture 2a - Part D1 - Automated Unit Testing via JUnit Assertions

     Lecture 2a - Part D2 - Example JUnit Assertions

     Lecture 2a - Part E1 - Testing for Legal Usage of the Counter Method

     Lecture 2a - Part E2 - Testing for Illegal Usage of the Counter Method

     Lecture 2a - Part E3 - Exercises and Using Loops in JUnit Tests

     Lecture 2a - Part F - Regression Testing Visualized

     Intro

     Notes

     Guide: Programming Test 1

     Lab1 Solution Walk-Through

       

     Oct 6 (W4)

       

     Oct 7 (W4)

       

    5 WED, Oct 13
    to
    TUE, Oct 19

      Playlist for Week 5

     Week 5 - Intro

     Lecture 3 - Part A - To Override or Not to Override

     Lecture 3 - Part B - V1: Default equals method

     Lecture 3 - Part C1 - V2: Comparing References

     Lecture 3 - Part C2 - V2: Dynamic Types

     Lecture 3 - Part C3 - V2: Type Casting

     Lecture 3 - Part C4 - V2: Example 1 & Debugger

     Lecture 3 - Part C5 - V2: Example 2 & Comparison

     Lecture 3 - Part D - assertSame vs. assertEquals in JUnit

     Lecture 3 - Part E - Asserting Reference vs. Object Equality

     Lecture 3 - Part F - (Optional Review) Short-Circuit Effect of Logical Operators

     Lecture 3 - Part G1 - Exercise: equals for Single-Valued Attributes

     Lecture 3 - Part G2 - Exercise: equals for Multi-Valued Attributes

     Lecture 3 - Part H1 - Asserting Equality on Single-Valued Attributes

     Lecture 3 - Part H2 - Asserting Equality on Multi-Valued Attributes

     Intro

     Notes

     Guide: Written Test 2

     Oct 20 (W5)

         

     Oct 21 (W5)

         

    6 WED, Oct 20
    to
    TUE, Oct 26

      Playlist for Week 6

     Lecture 4 - Part A1 - Call by Value: Definition & Manipulation

     Lecture 4 - Part A2 - setRadius(int r) vs. setRadius(Circle c)

     Lecture 4 - Part B1 - Example 1 - Re-Assigning Primitive Parameter

     Lecture 4 - Part B2 - Example 2 - Re-Assigning Reference Parameter

     Lecture 4 - Part B3 - Example 3 - Calling Mutator on Reference Parameter

     Lecture 4 - Part C1 - Terminology - Container vs. Containee

     Lecture 4 - Part C2 - Modelling vs. Implementing Aggregation

     Lecture 4 - Part D1 - Building Aggregations: Course, Faculty

     Lecture 4 - Part D2 - Building Aggregations: Course, Faculty, Student

     Lecture 4 - Part E1 - Navigating Aggregations: Two Approaches

     Lecture 4 - Part E2 - Navigating Aggregations: Switching Context

     Lecture 4 - Part F1 - Composition - Shallow Copy Constructor

     Lecture 4 - Part F2 - Composition - Deep Copy Constructor

     Lecture 4 - Part G - Aggregation vs. Composition: More Examples

     Notes

     Oct 27 (W6)

       

     Oct 28 (W6)

       

    7 WED, Oct 27
    to
    TUE, Nov 2

      Playlist for Week 7

     Lecture 5 - Part A1 - SMS: from Requirements to Design

     Lecture 5 - Part A2 - SMS: 1st Design (without Inheritance)

     Lecture 5 - Part B - SMS: 2nd Design (without Inheritance)

     Lecture 5 - Part C - Visibility: Project, Package, (Sub-)Class

     Lecture 5 - Part D1 - SMS: 3rd Design - Use of extends and super

     Lecture 5 - Part D2 - SMS: 3rd Design - Code Reuse & Visualization

     Lecture 5 - Part E - Static Types, Code Reuse, Expectations

     Lecture 5 - Part F1 - Intuition of Polymorphism

     Lecture 5 - Part F2 - Intuition of Dynamic Binding

     Lecture 5 - Part G1 - Multi-Level Inheritance Hierarchies

     Lecture 5 - Part G2 - Type Hierarchy Formed by Inheritance

     Lecture 5 - Part G3 - Exercise - Inheritance Accumulates Code

     Notes

     Guide: Programming Test 2

     Lab2 Solution Walk-Through

       

     Lab3 Solution Walk-Through

       

     Nov 3 (W7)

       

     Nov 4 (W7)

       

    8 WED, Nov 3
    to
    TUE, Nov 9

      Playlist for Week 8

     Lecture 5 - Part H1 - Static Types Determining Expectations

     Lecture 5 - Part H2 - Rules of Substitutions (Assignments)

     Lecture 5 - Part I1 - Dynamic Types: Re-Assigning to New Objects

     Lecture 5 - Part I2 - Dynamic Types: Re-Assigning to Existing Objects

     Lecture 5 - Part J1 - Motivation of Type Casting

     Lecture 5 - Part J2 - Syntax of Type Cast, Named vs. Anonymous Casts

     Lecture 5 - Part J3 - Compilable Casts: Upwards vs. Downwards

     Lecture 5 - Part J4 - Compilable Casts Subject to ClassCastException

     Lecture 5 - Part J5 - Visual Summary of Type Casting

     Lecture 5 - Part J6 - Exercise: Compilation vs. Runtime of Type Casts

     Lecture 5 - Part K - Checking Dynamic Type via instanceof

     Notes

     Nov 10 (W8)

       

     Nov 11 (W8)

       

    9 WED, Nov 10
    to
    TUE, Nov 16

      Playlist for Week 9

     Lecture 5 - Part L - Static Types, Casts, Polymorphism

     Lecture 5 - Part M1 - Polymorphic Parameters, Call by Value

     Lecture 5 - Part M2 - Passing Casts as Method Call Arguments

     Lecture 5 - Part M3 - A Polymorphic Collection of Students

     Lecture 5 - Part N - Polymorphic Return Types

     Lecture 5 - Part O - Type Checking, Dynamic Binding of equals/toString

     Notes

     Nov 17 (W9)

       

    10 WED, Nov 17
    to
    TUE, Nov 23

      Playlist for Week 10

     Lecture 6 - Part A1 - Abstract Class: Polygon Design Problem

     Lecture 6 - Part A2 - Abstract Class: Alternative Design

     Lecture 6 - Part A3 - Abstract Class: Using abstract

     Lecture 6 - Part A4 - Abstract Class: Polymorphic Collection of Polygons

     Lecture 6 - Part A5 - Abstract Class: Polymorphic Return Type of Polygons

     Lecture 6 - Part B1 - Interface: 2D Points Design Problem

     Lecture 6 - Part B2 - Interface: Using interface and implements

     Lecture 6 - Part B3 - Interface: Exploring Dynamic Binding in Eclipse

     Lecture 7 - Part A1 - Generics: A General Book and Exercise

     Lecture 7 - Part A2 - Generics: Using instanceof and Casts for Retrievals

     Lecture 7 - Part A3 - A General Book Violates Single Choice Principle

     Notes

     Guide: Written Test 3

     Nov 24 (W10)

       

     Nov 25 (W10)

       

    11 WED, Nov 24
    to
    TUE, Nov 30

      Playlist for Week 11

     Lecture 7 - Part B - Generics in Java: Generic Book - Storage vs. Retrieval

     Lecture 7 - Part C - Generics in Java: ArrayList, Hashtable, Exercise

     Notes

     Guide: Programming Test 3

     Lab4 Solution Walk-Through

       

    12 WED, Dec 1
    to
    TUE, Dec 7

      Playlist for Week 12

     Lecture 8 - Part A1 - Thinking Recursively

     Lecture 8 - Part A2 - Tracing Factorial, Common Recursion Errors

     Lecture 8 - Part A3 - Tracing Fibonacci Number

     Lecture 8 - Part B1 - Useful Methods on Strings

     Lecture 8 - Part B2 - Recursion on Strings: Palindrome

     Lecture 8 - Part B3 - Recursion on Strings: Reverse

     Lecture 8 - Part B4 - Recursion on Strings: Occurrences

     Lecture 8 - Part C1 - Recursions on Arrays: Specifying Sub-Ranges

     Lecture 8 - Part C2 - Recursions on Arrays: All Positive?

     Lecture 8 - Part C3 - Recursions on Arrays: Sorted?

     Notes

     Guide: Programming Test 3

     Lab4 Solution Walk-Through

       

     Guide: Final Exam

    Back to Roadmap


    EECS1022 Programming for Mobile Computing (Winter 2021 - Sections M, N)

    Click to Access:

    Tutorials

    Lectures

    Back to Roadmap

    # Date Lectures iPad Notes Study Materials Q&A Sessions

    Playlist of All Lecture Recordings

    All Slides

    All Slides (4-up)

    All iPad Notes

    1 MON, Jan 11
    to
    SUN, Jan 17

      Playlist for Week 1 (≈ 3.5 hours)

     Week 1 - Intro

     Lecture 1 - Part A1 - Development Process - Compile Time vs. Runtime

     Lecture 1 - Part A2 - Development Process - Example Errors

     Lecture 1 - Part B - Literals, Operations

     Lecture 1 - Part C - Data Types, Constants, Variables, Assignments, Mistakes

     Lecture 1 - Part D - Expressions, Type Correctness

     Lecture 1 - Part E - Coercion vs. Casting

     Lecture 1 - Part F - Augmented Assignments, Escape Sequences

     Lecture 1 - Part G - Sources for Variable Assignments

     Intro

     Notes

     Jan 18 (W1)

         

     Jan 19 (W1)

       

    2 MON, Jan 18
    to
    SUN, Jan 24

      Playlist for Week 2

     Week 2 - Intro

     Lecture 2 - Part A - Motivation for Conditionals

     Lecture 2 - Part B - Boolean Data Type

     Lecture 2 - Part C1 - If-Statement: Syntax and Semantics

     Lecture 2 - Part C2 - If-Statement: Tracing via Flow Chart, Code, Debugger

     Lecture 2 - Part D1 - Logical Operations: Negation, Conjunction, Disjunction

     Lecture 2 - Part D2 - Logical Operation Examples: Negation

     Lecture 2 - Part D3 - Logical Operation Examples: Conjunction vs. Disjunction

     Intro

     Notes

     Jan 25 (W2)

         

     Jan 26 (W2)

       

    3 MON, Jan 25
    to
    SUN, Jan 31

      Playlist for Week 3

     Week 3 - Intro

     Lecture 2 - Part E1 - Laws of Logical Negation

     Lecture 2 - Part E2 - DeMorgan's Laws for Conjunction vs. Disjunction

     Lecture 2 - Part E3 - DeMorgan Examples: Conjunction vs. Disjunction

     Lecture 2 - Part E4 - Operator Precedence vs. Associativity

     Lecture 2 - Part F - Two-Way vs. Multi-Ways, Nested If-Statements

     Lecture 2 - Part G - Single vs. Multiple If-Stmts, Overlapping Conditions

     Lecture 2 - Part H - Scope of Variables

     Intro

     Notes

     Feb 1 (W3)

       

     Feb 2 (W3)

       

    4 MON, Feb 1
    to
    SUN, Feb 7

      Playlist for Week 4

     Week 4 - Intro

     Lecture 2 - Part I - Sorting Branching Conditions: General vs. Specific

     Lecture 2 - Part J - Short Circuit Evaluation: Conjunction vs. Disjunction

     Lecture 2 - Part K - More Common Errors and Pitfalls

     Lecture 3 - Part A1 - for-Loops: Syntax, Semantics, Tracing

     Lecture 3 - Part A2 - for-Loops vs. while-Loops: Exercises

     Lecture 3 - Part B - Case Study: Compound Loops (3 versions)

     Intro

     Notes

     Guide: Written Test 1

     Feb 8 (W4)

       

     Feb 9 (W4)

       

    5 MON, Feb 8
    to
    SUN, Feb 14

      Playlist for Week 5

     Week 5 - Intro

     Lecture 3 - Part C - Stay Condition vs. Exit Condition

     Lecture 3 - Part D - Arrays: Declarations and Initializations

     Lecture 3 - Part E1 - Problems: Average, Conditional Printing

     Lecture 3 - Part E2 - Problems: Printing Backwards, Finding Maximum

     Lecture 3 - Part E3 - Problems: Universal vs. Existential Properties (V1)

     Lecture 3 - Part E4 - Problems: Universal vs. Existential Properties (V2 to V4)

     Intro

     Notes

     Guide: Inferring Classes from JUnit Tests

     Feb 22 (W5)

         

    6 MON, Feb 22
    to
    SUN, Feb 28

      Playlist for Week 6 (≈ 1 hour)

     Week 6 - Intro

     Lecture 3 - Part E5 - Problem: Array Sorted? Revisit: Universal vs. Existential Properties

     Lecture 3 - Part F - Short-Circuit Evaluation and Array Indexing

     Lecture 3 - Part G - Loops and Arrays: Common Errors

     Intro

     Notes

     Mar 1 (W6)

         

    7 MON, Mar 1
    to
    SUN, Mar 7

      Playlist for Week 7

     Week 7 - Intro

     Lecture 4 - Part A1 - Object Orientation: Observe, Model, and Execute

     Lecture 4 - Part A2 - Modelling Entities, Templates vs. Instances

     Lecture 4 - Part A3 - Method Kinds,Parameters vs. Arguments, Validity of Method Calls

     Lecture 4 - Part A4 - Constructors, Accessors, Mutators, this Keyword

     Lecture 4 - Part A5 - Tracing/Visualizing Programs, Illegal Usages of Accessors/Mutators

     Lecture 4 - Part B1 - Aliasing, Copying Values: Primitive vs. Reference

     Lecture 4 - Part B2 - Example: Referencing Aliasing and Arrays

     Intro

     Notes

     Guide: Written Test 2

     Written Test 2: Example Questions on Aliasing

     Written Test 2: Example Questions on Aliasing (solution)

     Mar 8 (W7)

         

    8 MON, Mar 8
    to
    SUN, Mar 14

      Playlist for Week 8

     Week 8 - Intro

     Lecture 4 - Part C1 - Data Types: Primitive vs. Reference, Default Values

     Lecture 4 - Part C2 - Reference-Typed Attributes, Parameters, Return Values

     Lecture 4 - Part C3 - Multi-Valued, Reference-Typed Attributes

     Lecture 4 - Part D1 - Anonymous Objects

     Lecture 4 - Part D2 - More Advanced Use of this Keyword

     Lecture 4 - Part E - Using the Dot Notation to Navigate Classes

     Intro

     Notes

     Guide: Written Test 2

     Written Test 2: Example Questions on Aliasing

     Written Test 2: Example Questions on Aliasing (solution)

     Review: Practice Programming Test 3

         

     Mar 15 (W8)

         

    9 MON, Mar 15
    to
    SUN, Mar 21

      Playlist for Week 9

     Week 9 - Intro

     Lecture 4 - Part F1 - Static Variables: Syntax and Semantics

     Lecture 4 - Part F2 - Static Variables: Automatic Account IDs

     Lecture 4 - Part F3 - Static Variables: Error - Static Counter for Array-Typed Attributes

     Lecture 4 - Part F4 - Static Variables: Error - Referencing Non-Static Variables in a Static Method

     Lecture 4 - Part G - Removing "Code Smell" via Helper Methods

     Intro

     Notes

     Mar 22 (W9)

       

     Review: Programming Test 4

       

    10 MON, Mar 22
    to
    SUN, Mar 28

      Playlist for Week 10 (≈ 1 hour)

     Week 10 - Intro

     Lecture 5 - Part A1 - Nested Loops: Syntax and Semantics

     Lecture 5 - Part A2 - Finding Duplicates: V1 (Unnecessary & Redundant Checks)

     Lecture 5 - Part A3 - Finding Duplicates: V2 (Early Exit with Unnecessary/Redundant Checks)

     Lecture 5 - Part A4 - Finding Duplicates: V3 (Early Exit with Optimized Number of Checks)

     Lecture 5 - Part B - Revisiting 2D Arrays

     Intro

     Notes

     Guide: Written Test 3

     Mar 29 (W10)

       

    12 MON, Apr 5
    to
    SUN, Apr 11

      Playlist for Week 12

     Week 12 - Intro & Wrap-Up of Course

     Lecture 6 - Part A - Why Java API? Metod Headers, Static vs. Non-Static Methods

     Lecture 6 - Part B - API Case Studies: Math

     Lecture 6 - Part C1 - API Case Studies: ArrayList - Generic Parameter & Method Summary

     Lecture 6 - Part C2 - API Case Studies: ArrayList - Tracing Example Code

     Lecture 6 - Part D1 - API Case Studies: Hashtable - Generic Parameter & Method Summary

     Lecture 6 - Part D2 - API Case Studies: Hashtable - Tracing Example Code

     Intro

     Notes

     Apr 5 (W12)

       

    Exam Review FRI, Apr 16

    • Exam Information

    • Comparing Strings: == vs. equals

    • Java API: ArrayList (indexOf, add, remove)

    Post Your Questions in this Document.

    Back to Roadmap


    EECS3311 Software Design (Fall 2020)

    Click to Access: Zoom Office Hours (only) (for links to weekly Q&A, see the eClass page)

    Click to Access: Scheduled Labs (Wednesdays, Thursdays, Fridays)

    Tutorials

    Lectures

    Back to Roadmap

    # Date Lectures iPad Notes Study Materials Q&A Sessions

    Playlist of All Lecture Recordings

    All Slides

    All Slides (4-up)

    All iPad Notes

    1 WED, Sep 9
    to
    TUE, Sep 15

      Playlist for Week 1 (≈ 4 hours)

     Lecture 1 - Introduction and Overview of Week 1

     Lecture 1 - Part 1A: Software Development Process

     Lecture 1 - Part 1B: Overview of Core Topics

     Lecture 1 - Part 1C: Client vs. Supplier in OOP

     Lecture 1 - Part 1D: Contract, Design, DbC

     Lecture 1 - Part 2A: Bank Accounts V1 (no contracts)

     Lecture 1 - Part 2B: Bank Accounts V2 (precondition)

     Lecture 1 - Part 2C: Bank Accounts V2 (weak precondition)

     Lecture 1 - Part 2D: Bank Accounts V3 (class invariant)

     Lecture 1 - Part 2E: Bank Accounts V4 (faculty implementation)

     Lecture 1 - Part 2F: Bank Accounts V5 (postcondition)

     Lecture 1 - Part 2G: DbC ‒ Java vs. Eiffel

     Lecture 1 - Part 3: Checking Contracts at Runtime

     Intro

     Pre

     Post

     Sep 14 (W1)

     

     

     Sep 15 (W1)

     

     

     Why DbC Is Useful (e.g., binary search)

    2 WED, Sep 16
    to
    TUE, Sep 22

      Playlist for Week 2 (≈ 4.3 hours)

     Lecture 2 - Introduction and Overview of Week 2

     Lecture 2a - Part 1A: Modularity, Modular Design

     Lecture 2a - Part 1B: Abstract Data Types (ADTs)

     Lecture 2b - Part 1A: Copying Objects - Ref. vs. Shallow vs. Deep

     Lecture 2b - Part 1B: Copying Objects - A Diagrammatic Example

     Lecture 2b - Part 1C: 1st-Level Change - Reference vs. Shallow

     Lecture 2b - Part 1D: Beyond 1st-Level Change - Shallow vs. Deep

     Lecture 2b - Part 2A: Caching old expressions in Postconditions

     Lecture 2b - Part 2B: Advanced Examples, old within Quantifications

     Lecture 2b - Part 2C: Complete Postconditions - Principle

     Lecture 2b - Part 2D: Complete Postconditions - Wrong Imp., Incomplete Contract

     Lecture 2b - Part 2E: Complete Postconditions - Reference

     Lecture 2b - Part 2F: Complete Postconditions - Shallow vs. Deep

     Intro

     Pre

     Post

     Sep 18 (Lab1)

     

     

     Recursion (Helper Command vs. Helper Query)

     Sep 21 (W2)

     

     

     Sep 22 (W2)

     

     

    3 WED, Sep 23
    to
    TUE, Sep 29

      Playlist for Week 3 (≈ 1.5 hours)

     Lecture 3 - Introduction and Overview of Week 3

     Lecture 3a: Writing & Using a Generic Class

     Lecture 3b - Part 1: Specifying a Stack, Information Hiding (IH), Single Choice Principle (SCP)

     Lecture 3b - Part 2: Using MATHMODELS to Create an Abstraction Function for Writing Contracts

     Lecture 3b - Part 3: Checking MATHMODELS Contracts at Runtime, IH and SCP Revisited

     Intro

     Pre

     Post

     Sep 28 (W3)

     

     

     Sep 29 (W3)

     

     

    4 WED, Sep 30
    to
    TUE, Oct 6

      Playlist for Week 4 (≈ 3.3 hours)

     Lecture 4 - Introduction and Overview of Week 4

     Lecture 4a - Part 1a: Design Diagrams - Classes, Routines

     Lecture 4a - Part 1b: Design Diagrams - Client-Supplier vs. Inheritance Relations

     Lecture 4b - Part 2: Postcondition Exercise - Asserting Set Equality

     Lecture 4b - Part 3a: Math Review (Self-Guided), Example REL Operations

     Lecture 4b - Part 3b: Creating an Abstraction of a Birthday Book

     Lecture 4c - Part 4a: Information Hiding, Iterator Design Pattern - Supplier

     Lecture 4c - Part 4b: Information Hiding, Iterator Design Pattern - Client, Exercise: Architecture & Generics

     Intro

     Pre

     Post

     Oct 1 (Lab2)

     

     

     Oct 5 (W4)

     

     

      W4 Exercise (with hints)

     Oct 6 (W4)

     

     

    5 WED, Oct 14
    to
    TUE, Oct 20

      Playlist for Week 5 (≈ 1.8 hours)

     Lecture 5 - Introduction and Overview of Week 5

     Lecture 5 - Part 1: Expanded Types for Compositions

     Lecture 5 - Part 2: Sharing via Inheritance (w.r.t. SCP and Cohesion)

     Lecture 5 - Part 3: Once Routines vs. Static Methods

     Lecture 5 - Part 4: Export Status

     Lecture 5 - Part 5: Singleton Design Pattern

     Intro

     Pre

     Post

     Oct 19 (W5)

     

     

     Expanded Class, is_equal, deep_twin

     Export Status (with Inheritance)

     Oct 20 (W5)

     

     

     Oct 21 (Lab3)

     

     

     Partially Implemented undo/redo Pattern

    6 WED, Oct 21
    to
    TUE, Oct 27

      Playlist for Week 6 (≈ 2.5 hours)

     Lecture 6 - Introduction and Overview of Week 6

     Lecture 6 - Part 1: Abstract User Interface (UI)

     Lecture 6 - Part 2: Abstract States, Acceptance Tests

     Lecture 6 - Part 3: ETF - Abstract UI, Model, Regression Tests

     Lecture 7 - Part 1: A Motivating Problem (SMS)

     Lecture 7 - Part 2: 1st Design Attempt without Inheritance

     Lecture 7 - Part 3: 2nd Design Attempt without Inheritance

     Lecture 7 - Part 4: Using Inheritance for Code Reuse

     Intro

     Pre

     Post

     Oct 26 (W6)

     

     

     Oct 26 (W6)

     

     

    7 WED, Oct 28
    to
    TUE, Nov 3

      Playlist for Week 7 (≈ 3 hours)

     Lecture 7 - Introduction and Overview of Week 7

     Lecture 7 - Part 5: Static Type vs. Dynamic Type, Expectations

     Lecture 7 - Part 6: Intuition - Polymorphism vs. Dynamic Binding

     Lecture 7 - Part 7: Multi-Level Hierarchy - Ancestors vs. Descendants

     Lecture 7 - Part 8: Rules of Substitutions, Change of Dynamic Type

     Lecture 7 - Part 9: Type Casting, Runtime Assertion Violations

     Lecture 7 - Part 10: Polymorphic Feature Arguments: Supplier vs. Client

     Lecture 7 - Part 11: Polymorphic Collections

     Lecture 7 - Part 12: Polymorphic Return Values, Concluding Remarks

     Intro

     Pre

     Post

     Nov 2 (W7)

     

     

     Nov 3 (W7)

     

     

    8 WED, Nov 4
    to
    TUE, Nov 10

      Playlist for Week 8 (≈ 3 hours)

     Lecture 8 - Introduction and Overview of Week 8

     Lecture 8a - Part 1: General Book - Storage vs. Retrieval

     Lecture 8a - Part 2: Generic Book - Storage vs. Retrieval

     Lecture 8b - Part 3: Motivating Problem - Interactive Systems

     Lecture 8b - Part 4: Design Attempt 1 - Assembly Style

     Lecture 8b - Part 5: Design Attempt 2 - Hierarchical, Procedural Style

     Lecture 8b - Part 6: Design Attempt 2 - Criticisms

     Lecture 8b - Part 7: State and Template Design Patterns - Supplier

     Lecture 8b - Part 8: State and Template Design Patterns - Client

     Intro

     Pre

     Post

     Nov 9 (W8)

     

     

     Nov 10 (W8)

     

     

    9 WED, Nov 11
    to
    TUE, Nov 17

      Playlist for Week 9 (≈ 3 hours)

     Lecture 9 - Introduction and Overview of Week 9

     Lecture 9 - Part 0: Motivating Problem - Distributed Clients/Servers

     Lecture 9 - Part 1a: Design Attempt 1 - Remote Procedure Calls

     Lecture 9 - Part 1b: Drawback of Design Attempt 1

     Lecture 9 - Part 2a: Observer Pattern - Architecture

     Lecture 9 - Part 2b: Observer Pattern - Implementation

     Lecture 9 - Part 2c: Observer Pattern - Runtime

     Lecture 9 - Part 2d: Drawback of Design Attempt 2

     Lecture 9 - Part 3: Design Attempt 3 - Event-Driven Design

     Lecture 9 - Part 4a: Event-Driven Design in Java - Implementation

     Lecture 9 - Part 4b: Event-Driven Design in Java - Runtime

     Lecture 9 - Part 5: Event-Driven Design in Eiffel

     Intro

     Pre

     Post

     Nov 16 (W9)

     

     

     Nov 17 (W9)

     

     

     Nov 19 (Project)

     

      Pre     Post

     Nov 20 (Project)

     

      Pre     Post

    10 WED, Nov 18
    to
    TUE, Nov 24

      Playlist for Week 10 (≈ 3 hours)

     Lecture 10 - Introduction and Overview of Week 10

     Lecture 10a - Part 1a: Require Less vs. Require More

     Lecture 10a - Part 1b: Ensure Less vs. Ensure More

     Lecture 10a - Part 2a: Inheritance & Contracts - Static Analysis

     Lecture 10a - Part 2b: Inheritance & Contracts - Examples

     Lecture 10a - Part 3: Inheritance & Contracts - Runtime Checks

     Lecture 10b - Part 4: Two Design Attempts for Recursive Systems

     Lecture 10b - Part 5: Multiple Inheritance

     Lecture 10b - Part 6: Composite Design Pattern

     Intro

     Pre

     Post

     Nov 23 (W10)

     

     

     Nov 23 (W10)

     

     

    11 WED, Nov 25
    to
    TUE, Dec 1

      Playlist for Week 11 (≈ 2 hours)

     Lecture 11 - Introduction and Overview of Week 11

     Lecture 11 - Part 1: First Design Attempt for Processing Recursive Systems

     Lecture 11 - Part 2: Open-Closed Design Principle

     Lecture 11 - Part 3a: Visitor Design Pattern - Architecture

     Lecture 11 - Part 3b: Visitor Design Pattern - Runtime (Double Dispatch)

     Lecture 11 - Part 3c: Visitor Design Pattern - Single Choice Principle

     Intro

     Pre

     Post

     Nov 30 (W11)

     

     

     Dec 1 (W11)

     

     

    12 WED, Dec 2
    to
    TUE, Dec 8

      Playlist for Week 12 (≈ 3 hours)

     Lecture 12 - Introduction and Overview of Week 12

     Lecture 12 - Part 1a: Motivating Example 1 - Precondition Too Weak?

     Lecture 12 - Part 1b: Motivating Example 2 - Precondition Too Strong?

     Lecture 12 - Part 2a: Hoare Triple

     Lecture 12 - Part 2b: Proving Hoare Triple using Weakest Precondition (wp)

     Lecture 12 - Part 3a: Rules of wp Calculus - Variable Assignment

     Lecture 12 - Part 3b: Rules of wp Calculus - Conditionals

     Lecture 12 - Part 3c: Rules of wp Calculus - Sequential Composition

     Lecture 12 - Part 4a: Contracts of Loops - Syntax and Runtime Checks

     Lecture 12 - Part 4b: Contracts of Loops - find_max and Exercise

     Lecture 12 - Part 5: Proofs of Loop Correctness

     Intro

     Pre

     Post

     Dec 7 (W12)

     

     

     Dec 8 (W12)

     

     

    Exam Review 1 THU, Dec 17

    • Exam Info

    • Writing Implementation Contracts

    • Object Copying and Comparison

    • Abstraction Models (SCP and IH)

    • Use of Precursor

    • Double Dispatch vs. Dynamic Binding

    • Implementing Visitor/Composite without Multiple Inheritance

    Practice Questions

    Solutions to Practice Questions

    Post Your Questions in this Document.

    Exam Review 2 FRI, Dec 18

    • Singleton Design Pattern

    • Object Comparison

    • Proofs of Correctness (1.1, 1.2, 2.1)

    • Variable Assignments and Casting

    • Observe Pattern vs. Event-Driven Design

    • Loop Invariant

    Back to Roadmap


    EECS4302 Compilers and Interpreters (Winter 2020)

    Tutorials

    Lectures

    Back to Roadmap

    # Date Topics Recording iPad Notes Source Code Slides/Notes

    Playlist of All Lecture Recordings

    All Slides

    All Slides (4-up)

    All iPad Notes

    1 MON, Jan 6

    • What is a Compiler?

    • Infrastructure of a compiler

    • Analysis: Lexical, Syntactic, Semantic

    00 Administrative

    00 Administrative (4-up)

    01 Overview of Compilation [Jan 8]

    01 Overview of Compilation (4-up) [Jan 8]

    What is a Compiler?

    Analysis: Lexical, Syntactic, Semantic

    2 WED, Jan 8

    • Scanner vs. Parser

    • Example Compiler: Object-to-SQL

    3 MON, Jan 13

    • Alphabet, Strings, Language, Problem

    • Regular Expression

    • Deterministic Finite Automata (DFA)

    • Nondeterministic Finite Automata (NFA)

    02 Lexical Analysis [Complete, Jan 20]

    02 Lexical Analysis (4-up) [Complete, Jan 20]

    4 WED, Jan 15

    • Formulating Language of DFA

    • epsilon-NFA

    • Subset Construction: NFA to DFA

    • Subset Construction: epsilon-NFA to DFA

    • Regular Expression to epsilon-NFA

    5 MON, Jan 20

    • Minimizing the State Space of DFA

    • Implementing DFA as Scanner (Table-Driven)

    6 WED, Jan 22

    • Context-Free Grammar (CFG)

    • Production, Derivation, Parse Trees, Ambiguity

    • Context-Free Language (CFL)

    PVS Demo: Specification File and Proof File (Thanks to Shangru)

    03 Syntactic Analysis [Mar 11]

    03 Syntactic Analysis (4-up) [Mar 11]

    Project Problem: Compiler for Program Verification [Feb 24]

    • Exercise on Predictive, Top-Down Parser (Question ; Solution) [Feb 24]

    7 MON, Jan 27

    • Tracing Scanner's Implementation

    • Regular Expressions to CFGs

    • DFAs to CFGs

    • Leftmost Derivations vs. Rightmost Derivations

    • Ambiguity of CFG

    8 WED, Jan 29

    • Dangling else Problem

    • Top-Down Parsing

    • Left-Recursive CFG

    9 MON, Feb 3

    • Top-Down Parsing (Tracing)

    • Left Recursions: Direct vs. Indirect

    • Eliminating Left Recursions

    • Eliminating epsilon-Productions

    10 WED, Feb 5

    • Eliminating Left Recursions (Tracing)

    • Top-Down Parsing with One Symbol Lookahread

    • FIRST set for terminals and non-terminals

    • Backtrack-Free Grammar for Top-Down Parsing

    11 MON, Feb 10

    • Backtrack-Free Top-Down Parsing

    FIRST Set Computations (Algorithm and Tracing)

    FOLLOW Set Computations (Examples)

    12 WED, Feb 12

    FOLLOW Set Computations (Algorithm and Tracing)

    • Backtrack-Free Grammar (First+ Sets, Formulation)

    13 MON, Feb 13

    • Project (Problem, Milestones, ANTLR Parser Generator)

    • Verification Paradigms: Model Checking vs. Theorem Proving vs. Constraint Solving

    • LL(1) Parser and Recursive-Descent Parser

    14 MON, Feb 13

    • Project: Example Verification Tool (PVS Proof Assistant) by Shangru Li

    • Bottom Up Parsing (BUP): Reverse Rightmost Derivation

    15 WED, Mar 2

    • Project: Verification Tool Example (PAT model checker)

    • Bottom Up Parsing (BUP): Table-Driven LR(1) Parser

    • Use of Action and Goto Tables

    LR(1) Items for Potential Handles

    16 MON, Mar 9

    LR(1) items: possibility, partial completion, completion

    • Canonical Collection (CC) of sets of LR(1) items

    • Constructing CC: the closure procedure

    • Constructing CC: the goto procedure

    17 WED, Mar 11

    • Constructing CC: the goto Procedure

    • Constructing CC: the Algorithm (Subset Construction)

    • Constructing the Action and Goto Tables

    • Discovering Ambiguities while Building a LR(1) Parser

    • Shift-Reduce Conflict vs. Reduce-Reduce Conflict

    Back to Roadmap


    EECS3311 Software Design (Winter 2020)

    Click to Access: Online (Zoom) Lectures and Office Hours

    Tutorials

    Lectures

    Back to Roadmap

    # Date Topics Recording iPad Notes Source Code Slides/Notes

    Playlist of All Lecture Recordings

    All Slides

    All Slides (4-up)

    All iPad Notes

    1 MON, Jan 6

    • Client, Supplier, Contract

    • Design by Contract (DbC)

    • DbC in Java (Version 1)

    • Precondition vs. Exception

    DbC in Java

    DbC in Eiffel

    00-Administrative

    00-Administrative (4-up)

    Survival Pattern

    01-Design by Contract [Jan 6]

    01-Design by Contract (4-up) [Jan 6]

    Runtime Assertion Checking for Contracts - ACCOUNT Class

    Runtime Assertion Checking for Contracts - General Case

    02.1 Eiffel Overview: Common Syntax

    02.1 Eiffel Overview: Common Syntax (4-up)

    02.2 Eiffel Overview: Common Errors

    02.2 Eiffel Overview: Common Errors (4-up)

    02.3 Drawing Design Diagrams in BON

    02.3 Drawing Design Diagrams in BON (4-up)

    All example BON diagrams (PDFs) from the slides

    2 WED, Jan 8

    • DbC in Java (Version 2 to Version 5)

    • Class Invariant

    • Post-Condition

    3 MON, Jan 13

    • Basic Eiffel Syntax

    • Commands vs. Constructors

    • Runtime Monitoring of Contracts

    • Exercise: Precondition & Postcondition

    4 WED, Jan 15

    • Exercise: Postcondition & across

    • Why DbC Is Useful (V1 to V3)

    • Copying Objects: Reference vs. Shallow vs. Deep

    Why DbC Is Useful (e.g., binary search)

    Use of Across and Comparator/Sorter [In-Lab Demo, Jan 17]

    Copies of Arrays

    Complete Postcondition on Arrays (5 Versions of BANK)

    03 Writing Complete Postconditions

    03 Writing Complete Postconditions (4-up)

      In-Lab Demo [Jan 17]

    5 MON, Jan 20

    • Copying Arrays: Reference vs. Shallow vs. Deep

    • Checking Contracts at Runtime (caching old expressions)

    6 WED, Jan 22

    • caching old expressions

    • Bank Account Example (Versions 1 to 2)

    7 MON, Jan 27

    • Bank Account Example (Versions 3 to 5)

    • Writing Complete Postconditions for Stack (3 strategies of implementation)

    Specifying a FIFO stack using the MATHMODELS library

    Specifying a Birthday Book using the MATHMODELS library (and exercises)

    • Examples of Iterator Pattern (Starter) ; (Completed Version with Exercises) [In-Lab Demo, Feb 6]

    Use of Expanded Classes

    Math Models [Feb 3]

    Math Models (4-up) [Feb 3]

    Using Genericity, Iterator Pattern, Singleton Pattern [Feb 12]

    Using Genericity, Iterator Pattern, Singleton Pattern (4-up) [Feb 12]

    BON Design Diagram of Iterator Pattern

    • Exercise: Use of Generics in Iterator Pattern (Question; Hints; Solution)

      In-Lab Demo [Feb 7]

    BON Design Diagram of Singleton Pattern

    8 WED, Jan 29

    • Using MATHMODELS to Implement Abstraction Functions

    • Using Abstraction Functions to Write Complete Postconditions

    • Information Hiding

    • Single-Choice Principle

    9 MON, Feb 3

    • Relational Overriding

    • Postcondition Exercise (all_pos_val)

    • BirthdayBook: Architecture (Client-Supplier Relations)

    10 WED, Feb 5

    • BirthdayBook: Specification (overriding, range restriction)

    • Use of Generics

    • Iterator Pattern: Problem and Architecture

    11 MON, Feb 10

    • Architecture of Iterator Pattern

    • Use of Iterator Pattern (Code to Interface)

    • Exercise: Generics and Iterator

    • Expanded Classes

    12 WED, Feb 12

    • Programming with Expanded Classes

    • Design Problem: Shared Data

    • First Design Attempt: Sharing via Inheritance

    • Design Principles: Cohesion and Single Choice

    • Programming with once routines

    Labtest 1 Review THU, Feb 13

    • Making BIRTHDAY_BOOK class iterable

    • HASH_TABLE.new_cursor cannot be used directly

    • A new ITERATION_CURSOR class is needed

    Making a Birthday Book (implemented using HASH_TABLE) ITERABLE

    • Practice Written Questions ; Solutions

    Exercise on Writing Complete Contracts

    Exercise on Generics and Iterator

    13 MON, Feb 24

    • Singleton Design Pattern (Design and Implementation)

    • Eiffel Testing Framework (Separating UI and Model, Acceptance Tests, Regression Testing)

    Setting Up Regression Testing Remotely on Prism

    Eiffel Testing Framework (for Acceptance Testing) [Feb 24]

    Eiffel Testing Framework (4up) [Feb 24]

    BON Design Diagram of ETF: Separating UI and Model

    14 WED, Feb 26

    • Student Management System Problem

    • Cohesion, Single Choice Principle, Collection of Students

    • Design 1: Two Unrelated Classes RESIDENT_STUDENT and NON_RESIDENT_STUDENT

    • Design 2: Single Class STUDENT with attribute kind

    • Design 3: Common Parent Class STUDENT and Two Child Classes

    Bad Design without Inheritance

    Good Design with Inheritance

    Testing of Postcondition (via Inheritance)

    Inheritance [Mar 2]

    Inheritance (4-up) [Mar 2]

    Student Management System: Problem, Static Type, Expectations [Feb 26]

    Student Management System: 3 Designs [Feb 26]

    Inheritance Hierarchy of Smartphone Classes [Mar 2]

    Architecture for Testing Violation of Postcondition [Mar 2]

    15 MON, Mar 2

    • Student Management System Problem

    • Design 2.5: Single Class STUDENT with attribute kind and global arrays

    • Static Types, Expectations, Dynamic Types

    • Intuition: Polymorphism vs. Dynamic Binding

    16 WED, Mar 4

    • Multi-Level Inheritance Hierarchy

    • Polymorphism and Dynamic Binding

    • Casting: Motivation and Syntax

    17 MON, Mar 9

    • Type Casts: Upwards vs. Downwards

    • Cast Violation at Runtime

    • Polymorphic Feature Arguments

    • Polymorphic Return Values

    • State Design Pattern: Motivating Problem (Interactive Systems)

    18 WED, Mar 11

    • Motivating Problem: Interactive Systems

    • 1st Design: Labels and Goto Statements

    • 2nd Design: Non-OO, Top-Down Approach

    • 3rd Design: OO, State and Template Design Patterns

    • Polymorphic Collection of States, Dynamic Binding

    State Design Pattern

    State Design Pattern [Mar 9]

    State Design Pattern (4-up) [Mar 9]

    BON Diagram of State Design Pattern [Mar 11]

    19 MON, Mar 16

    • State Pattern: Client App, Polymorphism, Dynamic Binding

    • Motivation Problem: Computer Manufacture System

    • Multiple Inheritance: Windows and Renaming

    • Design 1: children feature declared in common ancestor of base and composite (violating the cohesion principle)

    Composite Design Pattern

    Tutorial: The Composite and Visitor Design Patterns

    Using the ANTLR4 Parser Generator to Develop a Compiler (Practical Application of the Composite/Visitor Design Patterns in Java) ; iPad notes

    Composite Design Pattern [Mar 16]

    Composite Design Pattern (4-up) [Mar 16]

    BON Diagram of Composite Design Pattern [Mar 16]

    Multiple Instantiations of Composite Design Pattern [Mar 16]

    Visitor Design Pattern [Mar 25]

    Visitor Design Pattern (4-up) [Mar 25]

    BON Diagram of Visitor Design Pattern [Mar 16]

    20 WED, Mar 18

    • Motivating Problem: Computer Manufacture System

    • Design 1: Violating Cohesion (children and add_child in EQUIPMENT)

    • Design 2: Satisfying Cohesion but Violating Single Choice (children and add_child in non-generic class COMPOSITE)

    • Design 3: Composite Design Pattern (children and add_child in generic class COMPOSITE[T])

    • CDP: Multiple instantiations by reusing COMPOSITE[EQUIPMENT] and COMPOSITE[FURNITURE]

    • CDP: Mixing with Template Design Pattern

    • CDP: Tracing Runtime Behaviour

    21 MON, Mar 23

    • Composite Pattern: Constraining Self-Loops

    • Motivating Problem: Operations for an Expression Language

    • Design 1: Defining all operations in root of inheritance hierarchy

    • Design 1: Violation Single Choice Principle and Cohesion

    • Open/Closed Principle: open/closed struct/op. vs. closed/open struct./op

    • Visitor Pattern: Architecture and Test Case

    22 WED, Mar 25

    • Visitor Pattern: Double Dispatch

    • Visitor Pattern: Open/Closed Principle & Single Choice Principle

    • Visitor Pattern: Adding a new structure vs. Adding a new operation

    23 FRI, Mar 27

    • Motivating Problem: Weather Station

    • Design 1: Uni-Directional Link from App to Data

    • Design 2: Observer Pattern (OP)

    • OP: Architecture and Instantiation

    • OP: Bi-Directional Links at Runtime

    • OP: {SUBJECT}.notify vs. {OBSERVER}.update

    Weather Station without the Observer Pattern

    Weather Station with the Observer Pattern

    Generalizing the Observer Pattern using Event-Driven Design in Java

    Generalizing the Observer Pattern using Event-Driven Design in Eiffel

    Observer Design Pattern and Event-Driven Design [Mar 27]

    Observer Design Pattern and Event-Driven Design (4-up) [Mar 27]

    First Design for Weather Station [Mar 25]

    BON Design Diagram of Observer Pattern [Mar 25]

    Applying the Observer Pattern to Weather Station [Mar 25]

    Applying the Event-Driven Design to Weather Station [Mar 27]

    24 MON, Mar 30

    • Correctness is Relative (w.r.t. Specification)

    • Assertions: Precondition, Postcondition, Class Invariant

    • Correctness Predicate (Hoare Triple): {Q} S {R}

    • Weakest Precondition: wp(S, R)

    • Program Correctness: Q No Weaker than wp(S, R)

    • wp Calculation Rule: Variable Assignments

    Example of Loop Correctness

    12-Program Correctness [Mar 30]

    12-Program Correctness (4-up) [Mar 30]

    25 WED, Apr 1

    • wp Calculation Rules: Conditionals & Sequential Composition

    • Contracts for Loops: Loop Invariants and Loop Variants

    • Runtime Monitoring of Loop Contracts

    • Correctness Conditions for Loops

    Back to Roadmap


    EECS2030 Advanced Object Oriented Programming (Fall 2019)

    Background Studies

    For the above topics, refer to the relevant parts of lectures in EECS1022 Winter 2018 or EECS1021 Winter 2019 if necessary.

    Tutorials

    Lectures

    Back to Roadmap

    # Date Topics Recording iPad Notes Source Code Slides/Notes

    Playlist of All Lecture Recordings

    All Slides

    All Slides (4-up)

    All iPad Notes

    1 WED, Sep 4

    • OO: Observer, Model, Execute

    • Default vs. Customized Constructors

    • Default Values

    • Input Parameters vs. Actual Arguments

    • Breakpoints and Debugger in Eclipse

    Persons [Sep 11]

    Counter (static vs. non-static attributes, and MyClass to illustrate a common error) [Sep 20]

    Short-Circuit Evaluation (and, or)

    00-Administrative [Sep 4]

    00-Administrative (4-up) [Sep 4]

    Survival Pattern (Sep 4)

    01-Classes and Objects [Sep 20]

    01-Classes and Objects-4up [Sep 20]

    The Observe-Model-Execute Process [Sep 4]

    Required Reading: Point, PointCollector, and PointCollectorTester [Sep 10]

    2 MON, Sep 9

    • Shadowing: Clashing Names of Parameter and Attribute

    • Constructor Using this Keyword

    • Visualizing Objects at Runtime

    • Aliasing

    3 WED, Sep 11

    • Alias paths

    • Tracing: object creation and (accessor and mutator) method calls

    • Programming Pattern: Array-Referenced Attributes and integer counter

    4 MON, Sep 16

    • Programming Pattern (Point[] points, int nop, void addPoint, Point[] getQ1Points)

    • Short-Circuit Evaluation

    • Anonymous Objects

    • Method Overloading

    • Static vs. Non-Static Variables

    5 WED, Sep 18

    • Use of static variables (for auto-generated id)

    • Misuse of static variables (for integer counter)

    • Common Error: Use of non-static variable in a static context

    • Error handling via console messages

    • Exceptions: Specify or Catch

    Exceptions (Circle and Bank) [Sep 16]

    Exceptions (To Handle or Not To Handle) [Sep 18]

    Testing Counter (Console Tester vs. JUnit) [Sep 23]

    02-Exceptions [Sep 23]

    02-Exceptions-4up [Sep 23]

    03-TDD-with-JUnit [Sep 25]

    03-TDD-with-JUnit (4-up) [Sep 25]

    Guide to Written Lab Test 1 [Sep 20]

    Guide to Programming Lab Test 1 [Sep 20]

    Expectation and Strategy for a Programming Lab Test (Starter Project here)

    6 MON, Sep 23

    • Where to Handle an Exception (3 Versions)

    • Normal Flow vs. Exceptional Flow of Execution

    • More Examples (Multiple Catch Blocks, Parsing Integers)

    • Testing for Normal vs. Abnormal Scenarios

    7 WED, Sep 25

    • Console vs. JUnit tests where some exception is expected

    • Console vs. JUnit tests where some exception is not expected

    • JUnit assertions (assertNull, assertEquals, assertTrue, assertFalse)

    Written Test 1 Review MON, Sep 30

    • Anonymous Objects

    • Exception (catch-specify requirements)

    • Aliasing (single-referenced vs. array-referenced)

    8 MON, Sep 30

    • Default Version of the equals method in Object

    • Overridden Version of the equals method

    • JUnit assertions: assertSame vs. assertEquals

    Overriding/Redefining the equals method [Sep 30]

    Practice Starter Project [Oct 3]

    Solution [Oct 4]

    Implementing a Comparable Employee Class (two versions)

    Use of Default and Overridden Versions of hashCode()

    04-Advanced-Classes-and-Objects.pdf [Oct 6]

    04-Advanced-Classes-and-Objects.pdf (4-up) [Oct 6]

    9 WED, Oct 2

    • Testing the equals method in JUnit

    • Defining the equals method in Persona and PersonCollector

    Programming Test 1 Review FRI, Oct 4

    • Review of Programming Test Format

    • Reading JUnit test methods and assertions

    • Inferring classes, constructors, accessors, and mutators

    • Implementation Pattern: array attributes and loops

    10 MON, Oct 7

    • Overriding of compareTo method for Employee

    • Testing compareTo and Arrays.sort in JUnit

    • Map: Naive, Inefficient Implementation

    • Map: Hashing Keys and Bucket Arrays

    11 WED, Oct 9

    • Magic Card Challenge here

    • Examples on HashCode and HashTable

    • Call by Value (Primitive Type)

    12 MON, Oct 21

    • Call by Value (Primitive Type vs. Reference Type)

    • Java Collections API

    • Use of Generic Parameters

    • ArrayList vs. Hashtable

    • Solving a Problem Recursively

    Call by Value (Primitive vs. Reference Types) [Oct 21]

    Java Collections: ArrayList and Hashtable [Oct 21]

    Recursion

    05-Java-Collections.pdf [Oct 21]

    05-Java-Collections.pdf (4-up) [Oct 21]

    06-Recursion.pdf [Dec 2]

    06-Recursion.pdf (4-up) [Dec 2]

    Required Reading: Solving Problems Recursively

    07-Aggregation and Composition [Oct 28]

    07-Aggregation and Composition (4-up) [Oct 28]

    13 WED, Oct 23

    • Recursive Solution Pattern

    • Common Error: Missing Base Cases

    • Common Error: Recursive Calls on Problems Not Strictly Smaller

    • Examples: Factorial, Fibonacci, isPalindrome, reverseOf, occurrencesOf

    14 MON, Oct 28

    • Recursive Calls on an Array

    • Call by Value, Range of Indices (in context of recursive calls)

    • allPositive, isSorted

    • Container vs. Containee

    15 WED, Oct 30

    • Aggregation vs. Composition

    • Use of Dot Notation to Navigate between Classes

    • Copy Constructor (Shallow Copy vs. Deep Copy)

    16 MON, Nov 4

    • Inheritance: Two Designs without Inheritance

    • Design Criteria: Cohesion and Single-Choice Principle

    • Inheritance: extends and super

    • Static Type: Exception

    • Polymorphic Assignment: Intuition

    Student Management System (with and without inheritance)

    Type Casts (Compilable vs. Non-Compilable and Exception-Free vs. ClassCastException)

    08-Inheritance [Nov 13]

    08-Inheritance (4-up) [Nov 13]

    Inheritance Hierarchy of Smartphone Classes

    Required Reading: Static Types, Dynamic Types, Type Casts

    Guide to Programming Lab Test 2 [Nov 10]

    Guide to Written Lab Test 2 [Nov 10]

    Expectation and Strategy for a Programming Lab Test (Starter Project here)

    17 WED, Nov 6

    • Multi-Level Inheritance

    • Static Type: Expectation

    • Polymorphism and Dynamic Binding: Intuition

    • Rules of Substitution

    18 MON, Nov 11

    • Polymorphism and Dynamic Binding

    • Type Casts: Upward vs. Downward

    • ClassCastException

    19 WED, Nov 13

    • Compilable Type Casts: Upward vs. Downward

    • Compilable Type Casts but ClassCastException

    • instanceof operator

    • Static Type of Array Elements

    20 FRI, Nov 15

    • Polymorphic Method Arguments

    • Polymorphic Method Return Values

    • Dynamic Binding of Overridden Methods

    Programming Test 2 Review FRI, Nov 15

    • Inferring super and sub classes from assignments

    • Aggregation vs. Composition

    • Copy Constructors (PersonCollector, Person)

    21 FRI, Nov 22

    • Abstract Classes (Polygon, Rectangle, Triangle)

    • Interfaces (Point, CartesianPoint, PolarPoint)

    Abstract Classes: Polygon, Rectangle, Triangle

    Interfaces: Point, CartesianPoint, PolarPoint

    09-Abstract Class and Interface [Nov 22]

    09-Abstract Class and Interface (4-up) [Nov 22]

    Written Test 2 Review 1 FRI, Nov 22

    • Inheritance (Type Casts, instanceof, ClassCastException)

    • Aggregation vs. Composition

    • Hashing

    Review of Compilable vs. Non-Compilable Casts, ClassCastException

    Written Test 2 Review 2 MON, Nov 25

    • Hasing (Efficiency, Bucket Array)

    • Call by Value (Primitive vs. Reference)

    • Inheritance (Type Casts, instanceof, ClassCastException)

    • Collection (Use of Generic Parameters)

    22 MON, Nov 25

    • Primitive Operations

    • Asymptotic Upper Bound (Big-O)

    • Tightest Asymptotic Upper Bound

    Recursion

    Implementing and Testing Selection Sort and Insertion Sort

    10-Asymptotic Analysis of Algoritms [Nov 25]

    10-Asymptotic Analysis of Algoritms (4-up) [Nov 25]

    11-Wrap-Up [Dec 2]

    11-Wrap-Up (4-up) [Dec 2]

    23 WED, Nov 27

    • Proving tightest Asymptotic Upper Bounds

    • Deriving Upper Bounds on Code

    • Selection Sort vs. Insertion Sort

    24 MON, Dec 2

    • Running Time of Inserting into an Array

    • Selection Sort vs. Insertion Sort in Java

    • Running Time of Recursive Methods: isAllPositive, binarySearch

    • Correctness of Recursive Methods: isAllPositive

    Exam Review 1 MON, Dec 9

    • Merge Sort

    • Asymptotic Upper Bounds

    • Type Cast and ClassCastException

    • Correctness Proofs of Recursion

    Exam Practice Questions

    Solutions to Exam Practice Questions

    Exam Review 2 TUE, Dec 10

    • Deriving Asymptotic Upper Bounds

    • Javadocs

    • Unit Testing

    • Correctness Proofs of Recursion

    • Polymorphism and Dynamic Binding

    Exam Review 3 THU, Dec 12

    • Unit Testing (Boundary Cases)

    • Deriving Asymptotic Upper Bounds

    • Recursive Methods (Fibonacci Sequence)

    • Polymorphism

    • Type Cast and instanceof checks

    Back to Roadmap


    EECS3311 Software Design (Fall 2019)

    Tutorials

    Lectures

    Back to Roadmap

    # Date Topics Recording iPad Notes Source Code Slides/Notes

    Playlist of All Lecture Recordings

    All Slides

    All Slides (4-up)

    All iPad Notes

    1 THU, Sep 5

    • Client vs. Supplier

    • Contracts, Design by Contract

    Why DbC Is Useful (e.g., binary search)

    DbC in Java

    DbC in Eiffel

    Lab Demo Source [Sep 11]

    00-Administrative [Sep 5]

    00-Administrative (4-up) [Sep 5]

    Survival Pattern (Sep 5)

    01-Design by Contract [Sep 12]

    01-Design by Contract (4-up) [Sep 12]

    Runtime Assertion Checking for Contracts - ACCOUNT Class

    Runtime Assertion Checking for Contracts - General Case

    Eiffel Overview: Common Syntax [Sep 10]

    Eiffel Overview: Common Syntax (4-up) [Sep 10]

    Eiffel Overview: Common Errors [Sep 10]

    Eiffel Overview: Common Errors (4-up) [Sep 10]

    Drawing Design Diagrams in BON [Sep 15]

    All example BON diagrams (PDFs) from the slides [Sep 15]

    Drawing Design Diagrams in BON (4-up) [Sep 15]

     In-Lab Demo [Sep 4]

       In-Lab Demo [Sep 11]

    2 TUE, Sep 10

    • Why DbC Is Useful in Guiding Development? (Binary Search Example)

    • DbC in Java: 5 Versions (Precondition, Class Invariant, Postcondition)

    3 THU, Sep 12

    • DbC: Eiffel vs. Java

    • Runtime Monitoring of Contracts

    • Postcondition of change_at

    • Reference vs. Shallow vs. Deep Copies

    Copies of Arrays

    Tests of Tuples (Lab Demo) [Sep 18]

    Complete Postcondition on Arrays (5 Versions of BANK)

    Writing Complete Postconditions [Sep 17]

    Writing Complete Postconditions (4-up) [Sep 17]

      In-Lab Demo [Sep 18]

    Study Guide for Programming Lab Test 1

    4 TUE, Sep 17

    • Anchor Type: like

    • Copying arrays: reference vs. shallow vs. deep copies

    • Use of old expressions

    • BON diagram: client-supplier relations

    5 THU, Sep 19

    • Complete Postcondition for Composite Attributes

    • Example: 5 Versions of BANK.deposit_on

    • Postcondition Exercises

    6 TUE, Sep 24

    • Postcondition Exercises

    • Information Hiding

    • Iterator Pattern at Runtime

    • Implementing the Iterator Pattern (Easy Case)

    Tests of Iterator Pattern (Lab Demo) [Sep 25]

    Expanded Class [Sep 26]

    Genericity, Iterator, and Singleton [Sep 23]

    Genericity, Iterator, and Singleton (4-up) [Sep 23]

    BON Design Diagram of Iterator Pattern

       In-Lab Demo [Sep 25]

    Exercise on Iterator Pattern and Generics [Sep 25]

    7 THU, Sep 26

    • Design Architecture of the Iterator Pattern

    • Use of the Iterator Pattern (across loop vs. from-until loop)

    • Exercise: Iterator and Generics

    • Reference Type (Aggregation) vs. Expanded Type (Composition)

    8 TUE, Oct 1

    • Shared data problem

    • Inheritance solution

    • Requirements: Single Choice Principle and Cohesion

    • Once Routines

    • Singleton Pattern

    9 THU, Oct 3

    • Export Status

    • Inheritance (for code reuse)

    • Design Case Study (manual encoding of object type vs. dynamic binding)

    Bad Design without Inheritance

    Good Design with Inheritance

    Inheritance [Oct 10]

    Inheritance (4-up) [Oct 10]

    Inheritance Hierarchy of Smartphone Classes

       In-Lab Demo [Oct 23]

    10 TUE, Oct 8

    • Static Type vs. Dynamic Type

    • Polymorphism

    • Dynamic Binding

    • Testing of Postconditions

    11 THU, Oct 10

    • Expectations, Static Types, Substitutions

    • Versions of features, Dynamic Types, Dynamic Binding

    • Type Casting (Upwards vs. Downwards)

    12 TUE, Oct 22

    • Type Casting (Runtime Violation or Not?)

    • Polymorphic Collection

    • Polymorphic Feature Parameter

    • Polymorphic Return Type

    • Generics: Motivating Example

    13 THU, Oct 24

    • General Book: Casts and Single Choice Principle

    • Generic Book: Parameterization of Types

    • Inheritance vs. Genericity

    • Composite Pattern: Motivating Problem

    • Multiple Inheritance

    • Composite Pattern: Design Attempts

    Composite Pattern: Implementation

    Generics [Oct 25]

    Generics (4-up) [Oct 25]

    Composite Design Pattern [Oct 24]

    Composite Design Pattern (4-up) [Oct 24]

    BON Design Diagram of Composite Pattern

    BON Design Diagram of Composite Pattern (Multiple Instantiations)

    Visitor Design Pattern [Oct 27]

    Visitor Design Pattern (4-up) [Oct 27]

    BON Design Diagram of Visitor Pattern

    14 TUE, Oct 29

    • Composite Pattern: Problem, Architecture, Implementation

    • Composite Pattern: Polymorphism and Dynamic Binding

    • Open-Closed Principle

    • Visitor Pattern: Architecture

    15 THU, Oct 31

    • Visitor Pattern: Usage versus Implementation

    • Visitor at Runtime: Double Dispatch

    • Visitor Pattern: Open-Closed vs. Single-Choice Principles

    16 TUE, Nov 5

    • Using MATHMODELS to write stable contracts for multiple implementation strategies

    • Commands vs. Queries in MATHMODELS

    • Abstraction Function

    • Case Study: Birthday Book

    Specifying a FIFO stack using the MATHMODELS library

    Math Models [Nov 3]

    Math Models (4-up) [Nov 3]

    Implementation, Model, and Abstraction Function (Strategy 2) [Nov 3]

    Exercise I for Programming Lab Test 2

    10-State-Pattern [Nov 7]

    10-State-Pattern (4-up) [Nov 7]

    BON Design Diagram of State Pattern [Nov 12]

       In-Lab Demo [Nov 13]

    17 THU, Nov 7

    • Case Study: Birthday Book Contracts

    • State Pattern: Problem

    • First Design Attempt

    18 TUE, Nov 12

    • Interactive Systems: Non-OO vs. OO Solutions

    • Template Pattern

    • State Design Pattern: Architecture

    • State Pattern: Transition Table vs. Polymorphic State Array

    19 THU, Nov 14

    • Substitutibility and Design by Contract

    • Preconditions (require less in descendant classes)

    • Postconditions (ensure more in descendant classes)

    • Contract Re-Declaration

    Weather Station without the Observer Pattern

    Weather Station with the Observer Pattern

    Generalizing the Observer Pattern using Event-Driven Design in Java

    Generalizing the Observer Pattern using Event-Driven Design in Eiffel

    11-Subcontracting [Nov 12]

    11-Subcontracting (4-up) [Nov 12]

    Subcontracting: Architectural View [Nov 12]

    12-Observer-Pattern [Nov 15]

    12-Observer-Pattern (4-up) [Nov 15]

    First Design for Weather Station [Nov 15]

    BON Design Diagram of Observer Pattern [Nov 15]

    Applying the Observer Pattern to Weather Station [Nov 15]

       Lab4 Q&A [Nov 15]

       Project Q&A [Nov 22]

    20 FRI, Nov 15

    • Contract Re-Declaration

    • Invariant Accumulation

    • Weather Station Problem: 1st Design

    • Observer Pattern

    21 FRI, Nov 22

    • Observer Pattern

    • Event-Driven Design

    • Implementing Event-Driven Design in Java

    22 TUE, Nov 26

    • Implementing Event-Driven Design in Eiffel

    • Strong vs. Weak Predicates

    • Hoare Triples

    Example of Loop Correctness

    13-Program Correctness [Nov 26]

    13-Program Correctness (4-up) [Nov 26]

       Project Q&A [Nov 29]

    13-Wrap-Up [Dec 3]

    12-Wrap-Up (4-up) [Dec 3]

    23 THU, Nov 28

    • Proving Hoare Triples

    • Weakest Precondition (WP)

    • WP Rules: Assignments, Conditionals, Sequential Composition

    24 TUE, Dec 3

    • Correctness of Loops

    • Loop Invariant vs. Loop Variant

    • Wrap-Up

    Exam Review 1 MON, Dec 9

    • Polymorphic Collection and Dynamic Binding

    • Drawing BON Diagrams

    • Visitor Pattern and Double Dispatch

    • Proof of Loop Correctness

    Exam Practice Questions

    Solutions to Exam Practice Questions

    Exercise on Proving Total Correctness of a Loop

    Exam Review 2 WED, Dec 11

    • Proof of Program Correctness

    • Loop Invariant and Loop Variant

    • State Design Pattern

    • Why Inheritance

    • Cohesion and Single Choice Principle

    Exam Review 3 THU, Dec 12

    • Proof of Program Correctness

    • Loop Invariant and Loop Variant

    • Complete Postcondition

    • Event-Driven Design

    • Uniform Access Principle

    Back to Roadmap


    EECS1021 Object Oriented Programming from Sensors to Actuators (Winter 2019)

    Tutorials

    Lectures

    Back to Roadmap

    # Date Topics Recording iPad Notes Source Code Slides/Notes

    Playlist of All Lecture Recordings

    All Slides

    All Slides (4-up)

    All iPad Notes

    1 MON, Jan 7

    • Administrative Issues

    00-Administrative [Jan. 8]

    00-Administrative (4-up) [Jan. 8]

    2 WED, Jan 9

    • Development Process

    • Compile-Time (Syntax or Type) Errors

    • Run-Time (Exception or Logical) Errors

    • Literals

    • Operations, Operators, Operands

    ElementaryProgramming [Jan. 16]

    01-Elementary Programming [Jan. 16]

    01-Elementary Programming (4-up) [Jan. 16]

    Development Process of Java Programs [Jan. 9]

    Quiz 1 Guide [Jan. 16]

    3 MON, Jan 14

    • Data Types

    • Expressions

    • Assignments

    • Constants vs. Variables

    4 WED, Jan 16

    • Coercion vs. Cast

    • Escape Sequence

    • print vs. println

    5 MON, Jan 21

    • If-Statements Syntax and Semantics

    • Invalid vs. Valid Input Conditions

    Short-Circuit Evaluation for Conjunction [Jan. 30]

    Short-Circuit Evaluation for Disjunction [Jan. 30]

    02-Selections [Jan. 28]

    02-Selections (4-up) [Jan. 28]

    Semantics of a Single If-Statement [Jan. 16]

    • Lab Test 1 Preparation (Guide ; Tutorial Video ; LabTest1Demo and solution ; ExampleTest1 and solution)

    Quiz 2 Guide [Jan. 29]

    6 WED, Jan 23

    • Variable Scopes

    • Single If-Statement vs. Multiple If-Statements

    • Overlapping vs. Non-Overlapping Conditions

    7 MON, Jan 28

    • Laws of Logical Operators

    • Short-Circuit Evaluation

    8 WED, Jan 30

    • Short-Circuit Evaluation

    • Selections (General vs. Specific)

    • Common Errors and Pitfall

    9 MON, Feb 4

    • for-loop vs. while-loop

    • counting the number of iterations

    03-Loops [Feb 25]

    03-Loops (4-up) [Feb 25]

    Quiz 3 Guide [Feb 8]

    Quiz 1 Solution [Feb 10]

    Quiz 4 Guide [Feb 20]

    • Lab Test 2 Preparation [Feb 20] (Guide ; Tutorial Video (same as for Lab Test 1) ; ExampleTest2 and solution videos)

    10 WED, Feb 6

    • Equivalent ways to writing stay condition

    • Array Basics

    11 MON, Feb 11

    • Initializing an Arithmetic Sequence

    • Calculating the Average

    • Printing in the Reverse Order

    12 WED, Feb 13

    • Printing a comma-separated list

    • Printing positive numbers only

    • Finding the maximum value

    • Determining if all numbers are positive

    13 MON, Feb 25

    • Short-Circuit Evaluation and Array Indexing

    • Nested Loops

    • Determining if array contains duplicates

    14 WED, Feb 27

    • Nested Loops: Determining if an array contains duplicates

    • Common Errors of Loops

    • Object Orientation: Observe-Model-Execute

    04-Classes-and-Objects [Mar 13]

    04-Classes-and-Objects (4-up) [Mar 13]

    The Observe-Model-Execute Process [Feb 27]

    Quiz 5 Guide [Mar 7]

    • Lab Test 3 Preparation (Guide ; ExampleTest3 and solution)

    Quiz 6 Guide [Mar 14]

    15 MON, Mar 4

    • Classes as Templates

    • Attributes and Constructors

    • Calling Constructor to Create Objects

    Persons Example [Mar 7]

    16 WED, Mar 6

    • use of this keyword

    • accessors vs. mutators

    • method calls and context objects

    17 MON, Mar 11

    • Primitive Type vs. Reference Type

    • Aliasing

    18 WED, Mar 13

    • Aliasing and Arrays

    • Data Types (Primitive vs. Reference) and Default Values

    • Method Parameters vs. Arguments

    • Use of Accessors vs. Mutators

    19 MON, Mar 18

    • Programming Pattern: Array-Typed Attributes and Integer Counter

    • Programming Pattern: Static vs. Non-Static Variables

    Counter [Mar 18]

    CounterTester [Mar 18]

    20 WED, Mar 20

    • Use of Static Variables as Object ID's

    • Misuse of Static Variables as Array Counters

    • Misuse of Non-Static Variables in Static Methods

    21 MON, Mar 25

    • Fixes to Misuse of Non-Static Variables in Static Methods

    • Accessor Method: getPointsInQuodrantI

    • Accessor Method (Point movedUpBy) vs. Mutator Method (void moveUpBy)

    22 WED, Mar 27

    • Java API (Application Programming Interface)

    • Method Headers, Parameters vs. Arguments

    • Math Class, static methods

    • ArrayList Class, non-static methods

    Java Collections: ArrayList and Hashtable [Apr 3]

    05-Java-API [Mar 27]

    05-Java-API (4-up) [Mar 27]

    • Lab 7 Exercise (Lab7 Starter ; Lab7 Solution)

    Example Exam Questions ; Solution

    06-Wrapup [Apr 3]

    06-Wrapup (4-up) [Apr 3]

    23 MON, Apr 1

    • Use of ArrayList (size, overloaded add, remove, get, indexOf, contains)

    • Visualizing a Hashtable

    24 WED, Apr 3

    • Use of Hashtable (size, containsKey, containsValue, put, get, remove)

    • Wrap-Up of Covered Topics

    Exam Review FRI, Apr 5

    • Hashtable

    • aliasing

    • short-circuit evaluation

    • NullPointerException vs. ArrayIndexOutOfBoundsException

    Back to Roadmap


    EECS3311 Software Design (Winter 2019)

    Tutorials

    Lectures

    Back to Roadmap

    # Date Topics Recording iPad Notes Source Code Slides/Notes

    Playlist of All Lecture Recordings

    All Slides

    All Slides (4-up)

    All iPad Notes

    1 MON, Jan 7

    • Course Syllabus

    • Design: Architecture and Specification

    • Design by Contract (DbC): Client vs. Supplier

    • DbC in Java (Version 1)

    DbC in Java

    DbC in Eiffel

    Administratives [Jan. 7]

    Administratives (4-up) [Jan. 7]

    Design by Contract in Java and Eiffel [Jan. 14]

    Design by Contract in Java and Eiffel (4-up) [Jan. 14]

    Runtime Assertion Checking for Contracts - ACCOUNT Class

    Runtime Assertion Checking for Contracts - General Case

    Eiffel Overview: Common Syntax [Jan. 14]

    Eiffel Overview: Common Syntax (4-up) [Jan. 14]

    Eiffel Overview: Common Errors [Jan. 14]

    Eiffel Overview: Common Errors (4-up) [Jan. 14]

    2 WED, Jan 9

    • DbC in Java (Version 2 to Version 5)

    • Preconditions, Class Invariant

    3 MON, Jan 14

    • DbC in Java (Version 5) Postcondtion

    • Runtime Assertion Checking of Contracts

    • Eiffel Survival Guide

    4 WED, Jan 16

    • Short-Circuit vs. Logical Operators

    • Expanded Types vs. Reference Types

    • Reference vs. Shallow vs. Deep Copies

    Expanded Class

    Copies of Arrays

    Writing Complete Postconditions [Jan. 16]

    Writing Complete Postconditions (4-up) [Jan. 16]

    5 MON, Jan 21

    • Copies of Arrays

    • Complete Postconditions (V1 to V3)

    Complete Postconditions on Arrays

    6 WED, Jan 23

    • Complete Postconditions (V3 to V5)

    • Postcondition Exercises

    7 MON, Jan 28

    • Postcondition Exercise

    • Use of Generic Parameters

    • Information Hiding Principle

    • Iterator Pattern

    Genericity, Iterator, and Singleton [Feb 4]

    Genericity, Iterator, and Singleton (4-up) [Feb 4]

    BON Diagram of Iterator Pattern

    BON Diagram of Singleton Pattern

    8 WED, Jan 30

    • Iterator Pattern

    • Once Routines

    Once Query

    9 MON, Feb 4

    • Singleton Pattern (Java vs. Eiffel)

    • Inheritance (code reuse, testing of postcondition)

    Bad Design without Inheritance

    Good Design with Inheritance

    Testing of Contracts

    Inheritance [Feb 25]

    Inheritance (4-up) [Feb 25]

    Notes on Static Types, Dynamic Types, and Casts

    Architecture for Testing Violation of Postcondition [Feb 4]

    Math Models [Feb 13]

    Math Models (4-up) [Feb 13]

    10 MON, Feb 11

    • Implementation Contracts

    • Mathematical Model

    • Single Choice Principle

    Specifying a FIFO stack using the Math Model library

    11 WED, Feb 13

    • Use of REL

    • Birthday Book: Design and Implementation

    • Testing of Postconditions

    12 MON, Feb 25

    • Static Types vs. Expectations

    • Dynamic Types

    • Upward vs. Downward Casts

    13 WED, Feb 27

    • Inheritance: Type-Checking Rules

    • Inheritance: Feature Arguments

    • Inheritance: Feature Return Values

    • Inheritance: Polymorphic Collections

    • Generics

    Generics [Feb 27]

    Generics (4-up) [Feb 27]

    Composite Design Pattern [Mar 4]

    Composite Design Pattern (4-up) [Mar 4]

    Visitor Design Pattern [Mar 7]

    Visitor Design Pattern (4-up) [Mar 7]

    BON Diagram of Visitor Pattern

    14 MON, Mar 4

    • Generics (Design)

    • Multiple Inheritance

    • Composite Design Pattern

    15 WED, Mar 6

    • Composite Design Pattern (Polymorphism and Dynamic Binding)

    • Visitor Design Pattern (Motivating Problem)

    Composite Design Pattern

    16 MON, Mar 11

    • Open-Closed Principle

    • Visitor Design Pattern: Architecture

    • Visitor Design Pattern: Double Dispatch at Runtime

    17 WED, Mar 13

    • Interactive Systems Problem

    • State Transition Diagram

    • Non-OO, Hierarchical Solution

    • OO Solution: State Design Pattern (Architecture)

    State Design Pattern

    11-State-Pattern [Mar 13]

    11-State-Pattern (4-up) [Mar 13]

    BON Diagram of State Design Pattern [Mar 13]

    18 MON, Mar 18

    • Non-OO Solution vs. State Design Pattern

    • State Design Pattern at Runtime

    • Subcontracting: Require Less vs. Ensure More

    19 WED, Mar 20

    • Substitutability

    • Inheritance of preconditions, postconditions, and invariants

    • Contract Re-Declaration and Runtime Assertion Checks

    Subcontracting (missing precondition in ancestor class)

    10-Subcontracting [Mar 18]

    10-Subcontracting (4-up) [Mar 18]

    20 MON, Mar 25

    • First Design Attempt: Possible Redundant Remote Procedure Calls

    • Observer Design Pattern: Architecture, Polymorphism, Dynamic Binding

    Weather Station without the Observer Pattern

    Weather Station with the Observer Pattern

    Generalizing the Observer Pattern using Event-Driven Design in Java

    Generalizing the Observer Pattern using Event-Driven Design in Eiffel

    12-Observer-Pattern [Mar 20]

    12-Observer-Pattern (4-up) [Mar 20]

    BON Diagram of Observer Pattern [Mar 25]

    21 WED, Mar 27

    • Observer Design Pattern vs. Event-Driven Design

    • Event-Driven Design: Java (MethodHandler) vs. Eiffel (agents)

    22 MON, Apr 1

    • Event-Driven Design: Java (MethodHandler) vs. Eiffel (agents)

    • Program Verification (Strong vs. Weak Predicates, Weakest Precondition, Correctness Predicates, Hoare Triples)

    Correctness of Loops

    Counting Quantifier using agent

    13-Program-Correctness [Mar 27]

    13-Program-Correctness (4-up) [Mar 27]

    Exercise on Proving Total Correctness of a Loop

    23 WED, Apr 3

    • Program Verification

    • wp rule: assignment

    • wp rule: alternation

    24 FRI, Apr 5

    • Program Verification

    • wp rule: loops

    • Loop Contract: invariant vs. variant

    • agent, partial application, counting quantifier

    Exam Review 1 WED, Apr 10

    • Loop Correctness

    • agent and counting quantifier

    • Observer Pattern

    • Visitor Pattern

    Exam Review 2 THU, Apr 11

    • Program Correctness

    • Subcontracting

    • Observer Pattern

    • Event-Driven Design

    • State Pattern

    Back to Roadmap


    EECS2030 Advanced Object Oriented Programming (Fall 2018)

    Background Studies

    For the above topics, refer to the relevant parts of lectures in EECS1022 Winter 2018 if necessary.

    Tutorials

    Lectures

    Back to Roadmap

    # Date Topics Recording iPad Notes Source Code Slides/Notes

    Playlist of All Lecture Recordings

    All Slides

    All Slides (4-up)

    All iPad Notes

    1 WED, Sep 5

    • Administrative Issues

    • Review on Classes and Objects

    • Basic use of Eclipse

    PersonExample (to be expanded)

    00-Administratives

    00-Administratives (4-up)

    01-Classes and Objects (Dec. 3)

    01-Classes and Objects-4up (Dec. 3)

    The Observe-Model-Execute Process

    Point, PointCollector, and PointCollectorTester

    2 MON, Sep 10

    • Methods, Method Calls, Context Objects

    • Aliasing

    Aliasing Examples

    3 WED, Sep 12

    • Review on Classes and Objects (aliasing and arrays, short-circuit)

    • Anonymous Objects

    • Motivating Examples for Exceptions

    Exceptions: Circle and Bank (Sep. 17)

    Exceptions: To Handle or Not To Handle (Sep. 17)

    02-Exceptions (Sep. 17)

    02-Exceptions-4up (Sep. 17)

    4 MON, Sep 17

    • Exceptions (Circle, Bank, To Handle or Not To Handle)

    • Catch-or-Specify Requirement

    5 WED, Sep 19

    • Manual Console Tester Classes

    • State Diagram for Inferring Test Cases

    • JUnit tests (for cases of unexpected and expected exceptions)

    Testing of Counter Class

    03-TDD-with-JUnit

    03-TDD-with-JUnit (4-up)

    Preparation Guide for Lab Test 1

    Expectation and Strategy on Lab Test (Starter Project here)

    6 MON, Sep 24

    • JUnit tests (using loops to cover multiple input values)

    • Test-Driven Development (TDD) process

    • The equals method (default vs. overridden versions)

    Equality on Point, Person, and PersonCollector [Sep 26]

    04-Advanced Classes and Objects [Oct 3]

    04-Advanced Classes and Objects (4-up) [Oct 3]

    05-Asymptotic Analysis [Oct 17]

    05-Asymptotic Analysis (4-up) [Oct 17]

    7 WED, Sep 26

    • The equals method (JUnit Examples)

    • Motivating Example for compareTo

    8 MON, Oct 1

    • Implementing Comparable interface

    • Implementing compareTo method

    • Map, Table, Dictionary

    • (Inefficient) One-Array Implementation of Map

    • Hashing

    Implementing a Comparable Employee Class (two versions)

    9 WED, Oct 3

    • Hashing and Sample Codes

    • Introducing time complexity of algorithms (experiments)

    Use of Default and Overridden Versions of hashCode()

    10 MON, Oct 15

    • Counting Primitive Operations

    • Asymptotic Upper Bound (Big-O)

    11 WED, Oct 17

    • Asymptotic Upper Bounds of more code examples

    • Selection sort vs. Insertion sort

    Implementing and Testing Selection Sort and Insertion Sort

    12 MON , Oct 22

    • Tracing Selection sort vs. Insertion sort

    • Call by Value (Primitive vs. Reference)

    Call by Value (Primitive vs. Reference Types)

    06-Aggregation and Composition [Oct 29]

    06-Aggregation and Composition (4-up) [Oct 29]

    Preparation Guide for Lab Test 2

    Exercises for Lab Test 2

    • Solutions to Lab Test 2 Exercises

    13 WED, Oct 24

    • Tracing Insertion sort

    • Call by Value (Primitive vs. Reference)

    • Aggregation (single containee vs. multiple containees)

    14 MON, Oct 29

    • Aggregation and Dot Notation

    • Composition

    • Copy Constructor (Shallow Copy vs. Deep Copy)

    15 WED, Oct 31

    • Copy Constructor (Deep Copy)

    • Inheritance: Code Reuse

    • Static Type: Expectations

    Student Management System (with and without inheritance)

    Type Casts (Compilable vs. Non-Compilable and Exception-Free vs. ClassCastException)

    07-Inheritance [Nov 12]

    07-Inheritance (4-up) [Nov 12]

    Required Reading: Intuitions on Polymorphism and Dynamic Binding

    Required Reading: Static Types, Dynamic Types, Type Casts

    Preparation Guide for Lab Test 3

    Exercises for Lab Test 3

    • Solutions to Lab Test 3 Exercises

    16 MON, Nov 5

    • Static Types: Expectations, Substitutions

    • Dynamic Types

    17 WED, Nov 7

    • Compilable Cast vs. Non-Compilable Cast

    • ClassCastException vs. Exception-Free Cast

    18 MON, Nov 12

    • Compilable Cast vs. Non-Compilable Cast

    • ClassCastException vs. Exception-Free Cast

    • Polymorphic Method Parameters

    • Polymorphic Array

    19 WED, Nov 14

    • Polymorphic Method Parameters

    • Polymorphic Method Return Types

    • Overriding the equals method

    20 MON, Nov 19

    • Abstract Class (Polygon, Rectangle, Triangle)

    • Interface (Point, CartisianPoint, PolarPoint)

    Abstract Classes: Polygon, Rectangle, Triangle

    Interfaces: Point, CartesianPoint, PolarPoint

    08-Abstract-Class-and-Interface [Nov 19]

    08-Abstract-Class-and-Interface (4-up) [Nov 19]

    21 WED, Nov 21

    • General Pattern of a Recursive Solution

    • factorial, fibonacci number, isPalindrome, reverseOf

    Recursion

    09-Recursion [Dec 3]

    09-Recursion (4-up) [Dec 3]

    10-Generics (Optional) [Dec 3]

    10-Generics (4-up) (Optional) [Dec 3]

    11-Wrapup (Optional) [Dec 3]

    11-Wrapup (4-up) (Optional) [Dec 3]

    22 MON, Nov 26

    • occurrencesOf

    • General Pattern of Recursion on an Array

    • isAllPositive

    23 WED, Nov 28

    • isSorted

    • Binary Search

    • Tower of Hanoi

    24 MON, Dec 3

    • Tower of Hanoi

    • Running Time of Recursion (Tower of Hanoi, Binary Search)

    • Proving Correctness of Recursion (allPositive)

    • Merge Sort

    Exam Review 1 MON, Dec 10

    • Exceptions

    • JUnit tests (exceptions expected vs. unexpected)

    • Recursive programming (fibArray, gcd)

    • Running Time (Tower of Hanoi, Merge Sort)

    • Proof of Correctness (pattern, sum)

    Recursion Correctness Proof Example [Dec 11]

    Exam Review 2 WED, Dec 12

    • Recursion (programming, running time, correctness proof)

    • Static attributes

    • Testing (equivalence classes)

    Back to Roadmap


    EECS3311 Software Design (Fall 2018)

    Tutorials

    Lectures

    Back to Roadmap

    # Date Topics Recording iPad Notes Source Code Slides/Notes

    Playlist of All Lecture Recordings

    All Slides

    All Slides (4-up)

    All iPad Notes

    1 THU, Sep 6

    • Course Syllabus

    • Contract, Client, Supplier

    • Design by Contract (DbC)

    • DbC in Java (Version 1)

    DbC in Java

    DbC in Eiffel

    Administratives

    Administratives (4-up)

    Design by Contract in Java and Eiffel

    Design by Contract in Java and Eiffel (4-up)

    Runtime Assertion Checking for Contracts - ACCOUNT Class

    Runtime Assertion Checking for Contracts - General Case

    Eiffel Overview: Common Syntax [Sep. 18]

    Eiffel Overview: Common Syntax (4-up) [Sep. 18]

    Eiffel Overview: Common Errors [Sep. 20]

    Eiffel Overview: Common Errors (4-up) [Sep. 20]

    2 TUE, Sep 11

    • Contracts: Preconditions, Postconditions, Invariants

    • DbC in Java (Version 2 to Version 5)

    • Runtime Assertion Checking for Contracts

    3 THU, Sep 13

    • Runtime Assertion Checking for Contracts

    • Review of Eiffel Syntax (:= vs. =, and vs. and then, create, across, loop)

    4 TUE, Sep 18

    • Equality (is_equal vs. ~)

    • Expanded vs. Reference Types

    • Reference vs. Shallow vs. Deep Copies

    Equality (is_equal vs. ~)

    Expanded Class

    Copies of Arrays

    Writing Complete Postconditions [Sep. 20]

    Writing Complete Postconditions (4-up) [Sep. 20]

    Test-Driven Development (TDD) [Sep. 20]

    Test-Driven Development (TDD) (4-up) [Sep. 20]

    Genericity, Iterator, and Singleton [Oct. 2]

    Genericity, Iterator, and Singleton (4-up) [Oct. 2]

    BON Diagram of Iterator Pattern

    BON Diagram of Singleton Pattern

    Inheritance [Oct. 16]

    Inheritance (4-up) [Oct. 16]

    Notes on Static Types, Dynamic Types, and Casts

    Generics [Oct. 16]

    Generics (4-up) [Oct. 16]

    5 THU, Sep 20

    • Reference vs. Shallow vs. Deep Copies

    • Caching Old Values for Postconditions

    • Testing of Contracts

    A Common Error of Using Old Expression in Postcondition

    Testing of Contracts

    6 TUE, Sep 25

    • Test-Driven Development (TDD) and Regression Testing

    • Writing Complete Postconditions

    • Use of Generic Parameter

    • Iterator Design Pattern

    Complete Postconditions on Arrays

    Simple Iterator (Motivating Example)

    7 THU, Sep 27

    • Iterator Design Pattern (runtime behaviour)

    • Motivating Example for Singleton Pattern

    • "once" queries

    Once Query

    8 TUE, Oct 2

    • Inferring Types of Generics (Lab 2)

    • Singleton Pattern

    • Inheritance (Reuse of Code, Single Choice Principle)

    Simple Singleton Pattern

    9 THU, Oct 4

    • Polymorphism

    • Dynamic Binding

    Bad Design without Inheritance

    Good Design with Inheritance

    10 TUE, Oct 16

    • Type Casting

    • Polymorphic Collection

    • Types of Feature Parameters and Return Values

    11 THU, Oct 18

    • Type Checking Rules for Inheritance/Polymorphism

    • Generics

    Midterm Review FRI, Oct 19

    • Postconditions

    • Generics

    • Information Hiding

    • Iterator Pattern

    12 TUE, Oct 23

    • Uniform Access Principle

    • State Pattern (Motivating Problem, Two Bad Initial Designs)

    08-Uniform-Access-Principle [Oct. 23]

    08-Uniform-Access-Principle (4-up) [Oct. 23]

    10-State-Pattern [Oct. 25]

    10-State-Pattern (4-up) [Oct. 25]

    13 THU, Oct 25

    • State Pattern (Hierarchical Solution vs. OO Solution)

    • Template Pattern

    State Design Pattern

    14 TUE, Oct 30

    • State Pattern Review (Hierarchical Solution vs. OO Solution)

    • Multiple Inheritance

    • Composite Design Pattern

    Composite Design Pattern

    11-Composite-Pattern

    11-Composite-Pattern-4-up

    15 THU, Nov 1

    • Composite Design Pattern Review

    • Visitor Pattern (Motivating Problem)

    • Open-Closed Principle

    Tutorial: Implementing the Composite and Visitor Design Patterns

    No Void Safety in Java

    Void Safety in Eiffel

    12-Visitor-Pattern

    12-Visitor-Pattern-4-up

    BON Diagram of Visitor Pattern

    09-Void-Safety

    09-Void-Safety-4-up

    16 TUE, Nov 6

    • Visitor Pattern (Architecture)

    • Double Dispatches

    • Void Safety

    17 THU, Nov 8

    • Void Safety

    • Math Models Library

    Specifying a FIFO stack using the Math Model library

    Weather Station without the Observer Pattern

    13-Math-Models

    13-Math-Models-4-up

    14-Subcontracting

    14-Subcontracting (4-up)

    18 TUE, Nov 13

    • Math Models Library (abstraction function, use of relations)

    • Subcontracting (require less vs. ensure more)

    19 THU, Nov 15

    • Subcontracting (require else vs. ensure then)

    • Observer Pattern (Motivating problem, First Design)

    20 TUE, Nov 20

    • Observer Pattern

    • Event-Driven Design in Java

    Weather Station with the Observer Pattern

    Generalizing the Observer Pattern using Event-Driven Design in Java

    Generalizing the Observer Pattern using Event-Driven Design in Eiffel

    15-Observer-Pattern [Nov 22]

    15-Observer-Pattern (4-up) [Nov 22]

    BON Diagram of Observer Pattern

    Study Guide for Lab Test

    21 THU, Nov 22

    • Event-Driven Design in Eiffel

    • Program Correctness (Stronger vs. Weaker Predicates)

    Correctness of Loops

    16-Program-Correctness [Dec 4]

    16-Program-Correctness (4-up) [Dec 4]

    17-Wrap-Up [Dec 4]

    17-Wrap-Up (4-up) [Dec 4]

    Exercise on Proving Total Correctness of a Loop

    22 TUE, Nov 27

    • Weakest Precondition

    • wp rules of assignment, alternation, sequential composition

    23 THU, Nov 29

    • Loop Invariant

    • Loop Variant

    24 TUE, Dec 4

    • Proof of Loop Correctness

    Exam Review 1 THU, Dec 6

    • wp calculation (b vs. b0)

    • inheritance

    • visitor pattern

    • observer pattern vs. event-driven design

    • subcontracting

    Exam Review 2 FRI, Dec 7

    • Complete Postconditions

    • old expressions for ref vs. shallow vs. deep copies

    • Proof of Program Correctness

    • Template Design Pattern

    Back to Roadmap


    EECS1022 Programming for Mobile Computing (Winter 2018)

    Tutorials

    Lectures

    Back to Roadmap

    # Date Topics Recording iPad Notes Source Code Slides/Notes

    Playlist of All Lecture Recordings

    All Slides

    All Slides (4-up)

    All iPad Notes

    1 MON, Jan 8

    • Administrative Issues

    • Elementary Programming

    Tutorial Series on Building a BMI app

    Tester for Elementary Programming

    CircleCalculator (with user inputs)

    00-Administrative

    00-Administrative (4-up)

    01-Elementary Programming

    01-Elementary Programming (4-up)

    2 MON, Jan 15

    • Elementary Programming

    • Selections (no slides)

    3 MON, Jan 22

    • Selections (logical operators)

    • Classes and Objects (attributes, constructor)

    CircleCalculator2 (with conditional inputs)

    LogicalOperatorTester (negation, conjunction, and disjunction)

    02-Selections

    02-Selections (4-up)

    03-Classes and Objects

    03-Classes and Objects (4-up)

    Preparation Guide for Lab Test 1 ; Example Test 1

    04-Loops

    04-Loops (4-up)

    Preparation Guide for Lab Test 2 ; Example Test 2

    05-Two-Dimensional Arrays

    05-Two-Dimensional Arrays (4-up)

    06-Java API

    06-Java API (4-up)

    == vs. equals

    Example Exam Questions ; Solution

    Preparation Guide for Lab Test 3 ; Example Test 3

    4 MON, Jan 29

    • Classes and Objects (object orientation, variable scopes, constructors)

    Point

    PointTester

    VariableScopes

    5 MON, Feb 5

    • Classes and Objects (visualization)

    • Loops (for-loops)

    Person which Calls gainWeightBy (no error)

    PersonTester which Calls GainWeightBy (error)

    LoopTester

    6 MON, Feb 12

    • Selections (more if-statement examples)

    • for-loops and while-loops

    • Basic syntax of arrays

    7 MON, Feb 26

    • Short-Circuit Effects of Logical Operations

    • loops and arrays examples (e.g., allPos)

    ShortCircuit

    Simple Console App for Calculating Circle Areas

    Basic Syntax of Using Arrays and Loops

    8 MON, Mar 5

    • loops and arrays examples (e.g., read and print numbers [4 versions])

    Read and Print Numbers: Version 1 (inflexible)

    Read and Print Numbers: Version 2 (flexible, incorrect)

    Read and Print Numbers: Version 3 (flexible, correct)

    Read and Print Numbers: Version 4 (flexible, correct, alternative)

    Guarding Array Indexing using the Short-Circuit Effect

    9 MON, Mar 12

    • loops and arrays examples (e.g., hasDup)

    • Two-Dimensional Arrays (calculate distances)

    Calculate Mileages of Itinerary: Version 1 (using multiple 1-D arrays)

    Calculate Mileages of Itinerary: Version 2 (using single 2-D array)

    10 MON, Mar 19

    • Two-Dimensional Arrays (calculate distances, printAll, averageOf, maxOf, maxSumRowOf)

    11 MON, Mar 26

    • Two-Dimensional Arrays (isRectangle, isSquare, printTriangular)

    • Selections (overlapping conditions)

    • Classes and Objects (aliasing)

    Challenging Exercises on 2D Arrays

    Solution

    12 MON, Apr 2

    • Aliasing example

    • Static variables

    • Java API (Math, ArrayList, HashTable)

    Counter class with non-static and static variables

    Tester of the Counter class

    Tester of an ArrayList

    Tester of a HashTable

    Exam Review 1 FRI, Jul 20

    • Review

    • Solution to Example Lab Test 3

    Solution to Example Test 3

    Exam Review 2 THU, Aug 23

    • 2D Array - Maximum Sum, Matrix operations

    • Java Collection

    • Short-Circuit Evaluation

    • Aliasing, dot notation

    • NullPointerException vs. ArrayIndexOutOfBoundsExcpetion

    • 2D Array -

    Back to Roadmap


    EECS2030 Advanced Object Oriented Programming (Fall 2017)

    Background Studies

    Lectures

    Back to Roadmap

    # Date Topics Recording iPad Notes Source Code Slides/Notes

    Playlist of All Lecture Recordings

    All Slides

    All Slides (4-up)

    All iPad Notes

    1 THU, Sep 7

    • Administrative Issues

    • Introduction to Utility Classes

    EECS2030_F17_20170907

    00-Administrative

    00-Administrative (4-up)

    01-Utility-Classes

    01-Utility-Classes (4-up)

    02-Unit-RegressionTesting-Junit

    02-Unit-RegressionTesting-Junit (4-up)

    2 TUE, Sep 12

    • Visibility of Classes/Attributes/Methods

    • Utility Classes (Studying CircleUtilities)

    CircleUtilities

    Visibility

    3 THU, Sep 14

    • Using and Documenting Utility Classes

    • Design by Contract, Preconditions

    • Introduction to JUnit

    TestingUtilityClasses

    4 TUE, Sep 19

    • Introduction to JUnit

    • Use of breakpoints and debugger

    Solution to Exercise: Counter

    TestingUtilityClasses (extended version in Section A)

    TestingUtilityClasses (extended version in Section B)

    5 THU, Sep 21

    • Object Orientation

    • Constructors

    2-D Points (Oct. 3)

    Solutions to Some Lab Test 1 Preparation Exercises

    Call-by-Val vs. Call-by-Ref (Oct. 5)

    Preparation Exercises for Lab Test 1

    03-Classes-and-Objects

    03-Classes-and-Objects (4-up)

    Required Reading: Point and PointCollector

    Preparation Exercises for Lab Test 2

    Preparation Guide for Lab Test 2

    Solution to Lab Test 2 Preparation Exercises

    6 TUE, Sep 26

    • Mutators

    • Accessors

    7 THU, Sep 28

    • Reference-Typed Variables

    • List-Typed Variables

    • Equals Method

    8 TUE, Oct 3

    • Equals Method, Type Casting

    • Short-Circuit Effect

    • Call-by-Val vs. Call-by-Ref

    9 THU, Oct 5

    • Call-by-Val vs. Call-by-Ref

    • Map, Hash Table, Hash Code

    Map and Hash Table (Oct. 10)

    10 TUE, Oct 10

    • Hash Code

    • Aggregations vs. Compositions

    11 THU, Oct 12

    • Compositions

    • compareTo method

    • Mixing static and non-static

    Making Employee Comparable

    12 TUE, Oct 17

    • Asymptotic Analysis

    Singly Linked Lists

    04-Asymptotic-Analysis

    04-Asymptotic-Analysis (4-up)

    05-ADTs-Arrays-Linked-Lists

    05-ADTs-Arrays-Linked-Lists (4-up)

    13 THU, Oct 19

    • Asymptotic Analysis

    • ADTs, Arrays, Singly-Linked Lists

    14 TUE, Oct 24

    • Singly-Linked Lists

    15 TUE, Oct 31

    • Singly-Linked Lists

    • Stacks and Queues

    Stacks and Queues

    06-Stacks-and-Queues

    06-Stacks-and-Queues (4-up)

    16 THU, Nov 2

    • Recursion (factorial, fibonacci, palindrome, reverse)

    Recursion

    Binary Trees

    07-Recursion

    07-Recursion (4-up)

    Required Reading: Solving Problems Recursively

    Preparation Guide for Lab Test 3

    Exercises for Lab Test 3

    • Solutions to Lab Test 3 Exercises

    Recursion Tree of Tower of Hanoi

    08-Binary-Trees

    08-Binary-Trees (4-up)

    17 TUE, Nov 7

    • Recursion (occurrences, allPositive, isSorted)

    18 THU, Nov 9

    • Recursion (selectionSort, binarySearch, towerOfHanoi)

    19 TUE, Nov 14

    • Recursion (towerOfHanoi, proof of correctness)

    • Binary Trees (concepts)

    20 THU, Nov 16

    • Binary Trees (Java implementations)

    • Inheritance for Code Reuse

    Student Management System (with and without inheritance)

    Visibility: private, no modifier, protected, public

    Cast: Compilable vs. Runtime-Error-Free

    Abstract Classes: Polygon, Rectangle, Triangle

    Interfaces: Point, CartesianPoint, PolarPoint

    Book of Objects vs. Generic Book

    Generic Singly-Linked List

    Generic Stack Interface and Implementation Classes

    09-Inheritance

    09-Inheritance (4-up)

    Inheritance Hierarchy of Smartphone Classes

    Required Reading: Intuitions on Polymorphism and Dynamic Binding

    Required Reading: Static Types, Dynamic Types, Type Casts

    Preparation Guide for Lab Test 4

    10-Abstract Classes and Interfaces

    10-Abstract Classes and Interfaces-4up

    11-Generics

    11-Generics-4up

    12-Wrap Up

    12-Wrap Up-4up

    Sample Exam Questions

    Solutions to Sample Exam Questions

    Solution to Lab Test 4 (Correctness Proof)

    21 TUE, Nov 21

    • Inheritance: Polymorphism and Dynamic Binding

    22 THU, Nov 23

    • Inheritance: Type Casts

    • Inheritance: Method Arguments

    23 TUE, Nov 28

    • Inheritance: Method Return Values

    • Inheritance: Dynamic Binding and Overriding

    • Abstract Classes

    24 THU, Nov 30

    • Interfaces

    • Generics

    Back to Roadmap


    EECS3311 Software Design (Fall 2017)

    Lectures

    Back to Roadmap

    # Date Topics Recording iPad Notes Source Code Slides/Notes

    Playlist of All Lecture Recordings

    All Slides

    All Slides (4-up)

    All iPad Notes

    1 MON, Sep 11

    • Design by Contract (DbC)

    • DbC in Java (V1 to V3)

    DbCIntro Example in Java

    00-Administrative

    00-Administrative (4-up)

    01.1-DbC-and-TDD

    01.1-DbC-and-TDD (4-up)

    01.2-Eiffel Syntax

    01.2-Eiffel Syntax (4-up)

    2 WED, Sep 13

    • Design by Contract (DbC)

    • DbC in Java (V3 to V5)

    • Overview of Eiffel Syntax

    3 MON, Sep 18

    • Structures of Classes and Features

    • Overview of Eiffel Syntax

    • Writing ESpec Tests

    ARRAY and LINKED_LIST

    4 WED, Sep 20

    • Writing Boolean and Violation Tests in ESpec

    • Abstract Data Type (ADT)

    DbCIntro Example in Eiffel

    5 MON, Sep 25

    • Writing Violation Tests for Postconditions

    • Abstract Data Type (ADT)

    • Uniform Access Principle

    Lab 1 Starter Code (extended with a postcondition test)

    02-Classes-and-Objects

    02-Classes-and-Objects (4-up)

    03-Singleton-and-Iterator

    03-Singleton-and-Iterator (4-up)

    BON Diagram of Singleton Pattern

    04-Complete-Contract

    04-Complete-Contract (4-up)

    Guide to Lab Test 1

    BON Diagram of Iterator Pattern

    6 WED, Sep 27

    • Generic Parameters

    • Singleton Pattern

    Once Query (Oct. 2)

    Expanded Class

    Singleton Pattern

    7 MON, Oct 2

    • Expanded Classes

    • Once Queries

    • Singleton Pattern

    8 WED, Oct 4

    • Ref vs. Shallow vs. Deep Copies

    • Writing Complete Postconditions

    Example Tests on twin and deep_twin

    Complete Postconditions on Arrays

    9 WED, Oct 11

    • Iterator Pattern

    • across over iterable objects

    Simple Iterator

    10 MON, Oct 16

    • Inheritance

    • Polymorphism

    Bad Design without Inheritance

    Good Design with Inheritance

    05-Inheritance

    05-Inheritance-4up

    Notes on Static Types, Dynamic Types, and Casts

    06-Generics

    06-Generics-4up

    Guide to Lab Test 2

    11 WED, Oct 18

    • Polymorphism

    • Dynamic Binding

    12 MON, Oct 23

    • Type Casts

    • Polymorphism: arguments, return values

    13 WED, Oct 25

    • Generics

    • Inheritance and Contracts

    14 MON, Oct 30

    • Inheritance and Contracts

    • The State Design Pattern

    State Design Pattern

    Composite Design Pattern

    Tutorial Series on Composite/Visitor Patterns

    07-State-Pattern

    07-State-Pattern-4up

    BON Diagram of State Pattern

    08-Composite-Pattern

    08-Composite-Pattern-4-up

    BON Diagram of Composite Pattern

    09-Visitor-Pattern

    09-Visitor-Pattern-4-up

    BON Diagram of Visitor Pattern

    Required Reading: Tutorial on the Eiffel Testing Framework (ETF)

    15 WED, Nov 1

    • The State Design Pattern

    • The Composite Design Pattern

    16 MON, Nov 6

    • The Composite Design Pattern

    • The Visitor Design Pattern

    17 WED, Nov 8

    • The Visitor Design Pattern

    18 MON, Nov 13

    • Void Safety

    • The Observer Design Pattern

    No Void Safety in Java

    Void Safety in Eiffel

    Weather Station without the Observer Pattern

    Weather Station with the Observer Pattern

    10-Void-Safety

    10-Void-Safety-4-up

    11-Observer-Pattern-Event-Driven-Design

    11-Observer-Pattern-Event-Driven-Design-4-up

    BON Diagram of Observer Pattern

    19 WED, Nov 15

    • Event-Driven Design

    Generalizing the Observer Pattern using Event-Driven Design in Java

    Generalizing the Observer Pattern using Event-Driven Design in Eiffel

    20 MON, Nov 20

    • Abstractions via Mathematical Models

    Specifying a FIFO stack using the Math Model library

    12-Math-Models

    12-Math-Models-4-up

    Guide to Lab Test 3

    21 MON, Nov 27

    • Eiffel Testing Framework (ETF)

    • Hoare Triples

    • wp for Assignments

    Correctness of Loops

    13-Eiffel Testing Work (ETF)

    13-Eiffel Testing Work (ETF)-4up

    14-Program Correctness

    14-Program Correctness-4up

    15-Wrap-Up

    15-Wrap-Up-4up

    Exercise on Proving Total Correctness of a Loop

    22 WED, Nov 29

    • wp for Alternations

    • wp for Sequential Compositions

    • Loop Invariants and Loop Variants

    23 MON, Dec 4

    • Loop Invariants and Loop Variants

    • Correctness of Loops

    Back to Roadmap


    Guest Lectures

    Lectures

    Back to Roadmap

    Date Course Topics Recording iPad Notes Source Code Slides/Notes
    MON, Sep 18, 2017 EECS2030B

    • Visibility of Classes/Attributes/Methods

    • Introduction to JUnit

    TestingUtilityClasses (extended version in Section B)

    WED, Sep 20, 2017

    • Testing Exceptions in JUnit

    • Intro. to Object Orientation

    WED, Feb 28, 2018 EECS3311

    • The State Design Pattern

    • The Template Design Pattern

    State Design Pattern

    The State and Template Design Patterns

    The State and Template Design Patterns (4-up)

    WED, Sep 5, 2018 EECS3311E

    • Course Syllabus

    • Design by Contract (DbC) in Java

    DbC in Java

    Design by Contract in Java

    Design by Contract in Java (4-up)

    TUE, Oct 22, 2019 EECS4312E

    • Certification of Safety-Critical, Software-Intensive Systems

    • Function Tables

    • Programmable Logic Controllers (PLCs)

    • Verifying IEC61131-3 Annex F (Function Block Library)

    Reference: Formal Verification of Function Blocks Applied to IEC 61131-3

    Reference: Precise Documentation and Validation of Requirements

    Certification of Safety-Critical, Software-Intensive Systems

    Certification of Safety-Critical, Software-Intensive Systems (4-up)

    MON, Mar 9, 2020 EECS3311Z

    • Non-OO Design vs. OO Design

    • The State Design Pattern

    • The Template Design Pattern

    • Polymorphism and Dynamic Binding

    State Design Pattern

    The State and Template Design Patterns

    The State and Template Design Patterns (4-up)

    BON Design Diagram of the State Design Pattern

    Back to Roadmap