Teaching

I teach and supervise courses and labs across all four years of the Cambridge Engineering Tripos. Below is an overview with links to publicly available materials. Several courses have companion interactive tools.

Please feel free to contact me if you have questions about my teaching materials or would like to use them in your own course and need problem sheets or solutions.

Part IA (1st Year)

Information Theory (new course)

Part IA — in development

A new first-year introduction to information theory. Materials currently being developed and will be available within the coming weeks.

Related material: IZS paper

1P3 Microprocessor Lab

Part IA — Lent Term

Hands-on lab using the PIC12F675 microprocessor. I developed the browser-based emulator and assembler (MicroPX & GPASM) during Covid to allow students to work remotely. The lab is assessed via a Moodle-based quiz available to Cambridge students only.

Part IB (2nd Year)

2P6 Communications

Part IB — Lent Term · syllabus

I used to teach this course and will be teaching it again next year. Materials will be posted here in due course.

2P7 Probability

Part IB · syllabus

I used to teach this course. The lecture notes below have been helpful for students who prefer reading to decrypting bullet-point slides.

Lecture notes (PDF)

Part IIA (3rd Year)

3F1 Signals & Systems

Part IIA — Michaelmas Term — 16 lectures · syllabus

Click on a lecture number to access its slides.

z-Transform
1 2 3
System Response & Stability
4 5 6 7
Digital Filtering & Design
8 9 10
Discrete Fourier Transform
11 12 13
Continuous-Time Stochastic Signals
14 15 16

I also have a partial set of lecture notes covering the z-transform material:

z-Transform notes (PDF)

3F7 Information Theory and Coding — Lab

Part IIA — Michaelmas Term · syllabus

I run the lab for this course (lectures are given by Dr Venkataramanan). Lab materials:

Python/Jupter package Lab guidance

Related tools: Shannon's Twin-O-Meter, Arithmetic Coding Playground

3F4 Data Transmission — Convolutional Coding

Part IIA — Lent Term — 4 lectures · syllabus

I teach four lectures on convolutional coding within this course.

Convolutional Coding
1 2 3 4

I am also preparing video material on applications of the Viterbi and forward-backward algorithms beyond coding: DNA sequence alignment, computing permanents of matrices, and trellis representations of block codes.

Lab materials:

Colab notebook

Part IIB (4th Year)

4F5 Advanced Information Theory and Coding

Part IIB — Michaelmas Term

I teach half of this course. A full set of lecture notes is available:

Lecture notes (PDF)

The course is taught on the blackboard except for one lecture, an introduction to cryptology, which is taught from slides:

Crypto slides (PDF)

Other Materials

Turbo and LDPC Coding

Tutorial / short course

In 2004 and 2005 I taught a 13 lecture course at TU Vienna together with Gottfried Lechner. This course also served as a base for a tutorial mini-course, delivered in Aalborg in 2005 in collaboration with Ingmar Land, in Adelaide in 2007 with Gottfried, then in Bremen (2007), at Ericssion Stockholm (2007), at the Peyresq summer school (2007, in French), and at Robotiker in Bilbao (2008).

The slides of the 2005 course and one extra set of slides from the Aalbort mini-course are provided here:

Linear coding
1 2 3
LDPC codes
4 5 6
Convolutional and Turbo codes
7 8 9
Repeat-Accumulate codes
10
EXIT charts and applications
11 12 13
Information Combining (Aalborg mini-course)
14

Gottfried's video animations illustrating the convergence of short codes:

Good regular code Frozen regular code Oscillating regular code Good irregular code

Jim Massey's Lecture Notes

Translation project — in progress

I am translating selected lecture notes of my PhD adviser James L. Massey back into English from the German versions used at ETH Zurich. He gave me permission to use all of his materials before he passed away.

Materials will appear here as they are completed.