Course - Imperative Programming I and II HT23
This course was the first “standard” programming course, following from [[Course - Functional Programming MT22]]U, although they did decide to use Scala as the programming language of choice. There are whispers of a time long ago when they taught the course using Oberon which is even more obscure.
The first part of the course was about making formal proofs on the behaviour of imperative programs using a technique called [[Notes - Imperative Programming HT23, Invariants]]U, and proving the correctness of algorithms like binary search this way.
The second part of the course mainly focused on abstract data types and implementing different data structures like [[Notes - ADS HT24, Binary search trees]]U. There was a lot of overlap with [[Course - Design and Analysis of Algorithms HT23]]U.
- Course Webpage
- Course Materials
- Predecessor to: [[Course - Imperative Programming III TT23]]U
- Significant overlap with: [[Course - Design and Analysis of Algorithms HT23]]U
- Previous programming course: [[Course - Functional Programming MT22]]U
- Other courses this term: [[Courses HT23]]U
Notes
- [[Notes - Imperative Programming HT23, Abstract data types]]U
- [[Notes - Imperative Programming HT23, Binary search trees]]U
- [[Notes - Imperative Programming HT23, Bit maps]]U
- [[Notes - Imperative Programming HT23, Hash tables]]U
- [[Notes - Imperative Programming HT23, Invariants]]U
- [[Notes - Imperative Programming HT23, Linked lists]]U
- [[Notes - Imperative Programming HT23, Misc]]U
- [[Notes - Imperative Programming HT23, Object-oriented programming]]U
- [[Notes - Imperative Programming HT23, Priority queues]]U
- [[Notes - Imperative Programming HT23, Scala]]U
- [[Notes - Imperative Programming HT23, Testing]]U
Problem Sheets
Lectures
Part I
- [[Lecture - Imperative Programming HT23, I]]U
- [[Lecture - Imperative Programming HT23, II]]U
- [[Lecture - Imperative Programming HT23, III]]U
- [[Lecture - Imperative Programming HT23, IV]]U
- [[Lecture - Imperative Programming HT23, V]]U
- [[Lecture - Imperative Programming HT23, VI]]U
- [[Lecture - Imperative Programming HT23, VII]]U
- [[Lecture - Imperative Programming HT23, VIII]]U
- [[Lecture - Imperative Programming HT23, IX]]U
Part II
- [[Lecture - Imperative Programming HT23, X]]U
- [[Lecture - Imperative Programming HT23, XI]]U
- [[Lecture - Imperative Programming HT23, XII]]U
- [[Lecture - Imperative Programming HT23, XIII]]U
- [[Lecture - Imperative Programming HT23, XIV]]U
- [[Lecture - Imperative Programming HT23, XV]]U
- [[Lecture - Imperative Programming HT23, XVI]]U
- [[Lecture - Imperative Programming HT23, XVII]]U
- [[Lecture - Imperative Programming HT23, XVIII]]U
- [[Lecture - Imperative Programming HT23, XIX]]U
- [[Lecture - Imperative Programming HT23, XX]]U