Skip navigation

Contents

Acrobats

Spaghetti Code
by George W. Hart, 2004

All lectures notes are available here. It is expected that you do attend all lectures and make your own notes. An essential part of the learning process is the formation of your notes, and the comparison of your notes with the lecture slides. The provided sound track consists of trimmed takes of the lectures - they are meant as an additional option for repetition and do by no means replace the actual lectures. Also keep in mind that some parts of the lectures might not be recorded (interactive programming sessions, discussing student code, ...).

The material is constantly reviewed and refined - so it is best to download the version which you want to use for learning, after the corresponding lectures. Also: taking your own notes from scratch instead of annotating lecture notes is always the more effective learning method.

Any usage of the material supplied below (outside the scope of this course) requires explicit permission by the course organizers.

Disclaimer for any material appearing before the lecture: consider all material as a pre-view only - until a few hours after the lecture, when the exact material used in the actual lecture appears here. So check back frequently if you want to see the latest pre-views, and load after the lectures for the final versions.

 
Chapters
Lecture slides:
pdf document (pdf)
Lecture recordings:
 Movie  Video (mp4)  -  Audio  Soundtrack only (mp3)

 

 

Complete set of slides:

 
      pdf document
1:1
pdf document
1:4
pdf document
1:9
pdf document
1:16

 

               
 

 

Slides & recordings by chapter:

 
 

Organization & Contents

 

 
      pdf document
1:1
pdf document
1:4
pdf document
1:9
pdf document
1:16

 

1:13'

               
 

1.

Introduction

  • Definitions
    • Algorithm
  • Computers
    • Basic hardware concepts.
    • Basic forms and distribution.
  • Programming languages
    • Why are they needed?
    • Existing paradigms and relation to hardware.
  • Things which work and things which won’t.
    • Impossible and reliable systems.
 
      pdf document
1:1
pdf document
1:4
pdf document
1:9
pdf document
1:16

I
 

1:09'

II
 

0:37

             
 

2.

Programming Foundations

  • Functions and States
    • Definitions, meaning and separation of the two.
  • Expressions and Type systems
    • Motivation and example.
  • Continuous functions and switched alternatives
    • Examples for functions.
  • Recursion
    • First introduction to primitive recursive functions.
    • Sequential and concurrent executions.
  • Specifications, Tests & Proofs
 
      pdf document
1:1
pdf document
1:4
pdf document
1:9
pdf document
1:16

I
 

0:46'

II
 

1:26'

III
 

1:11'

IV
    Haskell source file

1:30'

V
 

1:03'

       
 

3.

Essential Programming

  • Typed expressions
  • Conditional branching
  • Repetition
 
      pdf document
1:1
pdf document
1:4
pdf document
1:9
pdf document
1:16

I
 

8'

II
 

1:18'

III
    Haskell source file

1:21'

IV
 

30'

         
 

4.

Abstract Types

  • Definition
  • Examples of abstract types
  • Basic scalar types:
    • Boolean (Bool), Characters (Char)
    • Numbers: Natural (-), Integer (Integer), Integer range (Ix), Rational (Rational), Real (Float, Double), Complex (Complex)
    • Machine related types: Bits (Bits), Words: Integer range (Word, WordN), Two’s complements
 
      pdf document
1:1
pdf document
1:4
pdf document
1:9
pdf document
1:16

 

43'

               
 

5.

Algebraic Types

  • Definition
  • Lists
    • Constructing, extraction, operations.
  • Polymorphism & Overloading
    • Examples: Mergesort, 3D vectors
  • Comprehensions (Set builder notation)
    • Example: Quicksort
  • Product types (Records)
    & Union types (Variant records)
    • Example modules: 3D vectors, Geometries
  • Trees
    • Binary search trees
    • Prefix Trees (Tries)
 
      pdf document
1:1
pdf document
1:4
pdf document
1:9
pdf document
1:16

I
 

1:08'

II
 

1:02'

III
 

54'

IV
    Haskell source file

1:20'

V
 

1:04'

       
 

6.

Modular Programming

  • Decomposition
  • Higher order functions:
    • Map, Filter, Combine & Fold
  • General recursion
  • Deriving data-structures from specifications
  • Scoping
    • Modularization
    • Abstraction (Information hiding)
    • Generics (Polymorphism revisited)
 
      pdf document
1:1
pdf document
1:4
pdf document
1:9
pdf document
1:16

I
 

1:02'

II
 

1:11'

III
    Haskell source file

1:13'

           
 

7.

Complexity & Performance

  • Striking examples
  • Big O notation (Big Omega, Omicron, Theta)
  • P, NP, NP-Complete, EXP, NEXP
  • Where to go from here to become predictable or performant?
 
      pdf document
1:1
pdf document
1:4
pdf document
1:9
pdf document
1:16

I
 

1:09'

II
 

45'

             
 

8.

Reflection

  • What can you do now?
  • Where to go from here?
 
      pdf document
1:1
pdf document
1:4
pdf document
1:9
 

I
 

1:04'

II
 

1:26'

             
 

 

Slides & recordings of Chapter 2 from
Introduction to Advanced Computer I (comp1130) :

 
 

2.

Models & Implementations

  • Lists, Stack & Queues
  • Models / Specifications
  • Implementations
  • Complexity
 
      pdf document
1:1
pdf document
1:4
pdf document
1:9
pdf document
1:16

I
 

52'

II
 

56'

III
 

1:02'

           

 

Updated:   Sunday 1 September, 2013 20:07 / Responsible Officer:   JavaScript must be enabled to display this email address. / Page Contact:   Course Webmaster