Youtube direct videos without visiting EdX

(for code related to the videos, visit: the UBCx Software Construction Github)

Software Construction 1: Data Abstraction Videos

Introduction to Software Construction

Welcome to Software Construction

Walking up to a codebase

Package Relationships

Class Relationships

Control and Data Flow: Structures

Call Graphs

Classes and Objects


Anatomy of a Class

Debugging Part 1

Debugging, Part 1 (setting values and checking output)

Data Flow

Data Flow

Passing Parameters

Returning Values


Debugging Part 2

Debugging, Part 2 (comparisons and variables)

Control Structures and Flowcharts

Execution of a Method

If and If Else

Foreach Loops

For Loops

So Much Going On

Debugging Part 3

Debugging, Part 3 (ranges and null pointers)

Data Abstraction

What is Abstraction?


Specifying a Data Abstraction




Specifying the insert() method

Using a Data Abstraction

Specification for IntegerSet

Using a Data Abstraction

Testing and Implementing a Data Abstraction


Devising Test Cases

JUnit, part 1 (@Test and Fields)

JUnit, part 2 (@Before, Asserts and Fails)


Writing Tests

Debugging Part 4

Debugging, Part 4 (bugs in tests)

Implementing a Data Abstraction

Implementing a Data Abstraction

Implementing IntegerSet

Type Hierarchies, Polymorphism, and Dispatch

Types in Java

Interfaces & Sybtyping

Interfaces, Pt. 1 (specifying and implementing)

Interfaces, Pt. 2 (actual and apparent types)

Interfaces, Pt. 3 (types and parameters)

Interfaces, Pt. 4 (implementing multiple interfaces)

IntegerSetInterface (extracting an interface)

Classes & Extending

Subclasses & Extends, Pt. 1

Subclasses & Extends, Pt. 2 (Extending)

Subclasses & Extends, Pt. 3 (Method Overriding)

Subclasses & Extends, Pt. 4 (Super calls)

Abstract Classes

Abstract Classes

Abstract IntegerSetTest (applying abstraction to reduce duplication)

Software Construction 2: Object-Oriented Design Videos