148
all course links
Syllabus
Download PDF:
LEC9101
|
LEC9102
Tools/Resources
details
here
Weekly Prep
detail
HERE
Weekly labs
detail
HERE
Assignments
details
here
Submissions
on
markus
Discussions
on
piazza
Feeling lonely?
chat on our
discord
Course Notes
detail
HERE
Past tests
detail
HERE
Lecture Notes
More notes will be made available as the course progresses.
Instructions:
Each section is a browser page of note materials, you may also print out the page.
At any point, you can use your browser's back button to return to this main page.
Recapping and Extending Some key Prerequisite Material
The Python Memory Model: Introduction
The Python Memory Model: Functions and Parameters
The Function Design Recipe
Python Type Annotations
Testing Your Work
Choosing Test Cases
Introduction to Property-based Testing
Object-Oriented Programming
2.1~2.3
2.4~2.7
Introduction to Object-Oriented Programming
Representation Invariants
Designing Classes
Inheritance: Introduction and Methods
Inheritance: Attributes and Initializers
Inheritance: Thoughts on Design
The
object
Class and Python Special Methods
Abstract Data Types
Introduction to Abstract Data Types
Stacks and Queues
Exceptions
Analysing Program Running Time
Linked Lists
Introduction to Linked Lists
Traversing Linked Lists
Mutating Linked Lists
Linked Lists and Running Time
Introduction to Recursion
Motivation: Adding Up Numbers
Nested Lists: A Recursive Data Structure
Trees and Binary Search Trees
Part 1
Part 2
Part 3
Introduction to Trees
A Tree Implementation
Mutating Trees
Introduction to Binary Search Trees
Binary Search Tree Implementation and Search
Mutating Binary Search Trees
Binary Search Trees and Running Time
Expression Trees
Recursion Wrap-up
Recursive Sorting Algorithms
Efficiency of Recursive Sorting Algorithms