Subject Schedule

The subject has two main threads: programming in the small, and programming in the large. Although programming in the large uses skills you'll acquire in the programming in the small section it is a whole new discipline. If you have done computing at school or taught yourself programming most probably you will only have been doing programming in the small.

Week
(starting monday)
Topics Notes Extension Lecture*
Time A: Thur 2-3
Time B: Thur 12-1
Other

Programming in the Small

1
(3 March)
Intro
Intro to course
GHCi as a calculator.
Functions, functional programming. Setting up a PC at home. Simple haskell scripts, modules, comments, basic types.
Wed
Thur
files
  Scavenger hunt
2
(10 March)
Recursion
Style, offside rule, local definitions (aka where clauses), Alternatives, simple types, compound types, lists, [..] notation, head, tail. Recursion on lists.
Wed
Thur
files
  Tutorials and Labs commence
Task 1 issued (end of week)
3
(17 March)
Lists
: ++ , more programming with lists, Haskell list functions, sorting, patterns, multiple definitions of a function.
Wed
Thur
files
  Teaching Consultations Commence
4
(24 March)
Design
Top down design, Associativity, precedence, side effects, I/O vs Input/Output, side effects, tuples, pattern matching with list and tuples.
Wed
Thur
files
  Task 1 due (end of week)
5
(31 march)
Types
User-defined data types, pattern matching on data types, deriving Eq, Ord, Show. Recursive types. Graphs, Finite State Automata.
Wed
Thur
files
   

Programming in the Large

6
(7 April)
Interfaces
Why types? Modules. Importing. Exporting. Interfaces.
Wed
Thur
files
Alan Turing
Preparation: watch "Bladerunner"
[Time A]
 
7
(14 April)
ADTs
What is abstraction? Why use abstraction? How to enforce abstraction in Haskell.
Wed
Thur
files
Alice & Bob
Cryptography
[Time A]

cancelled - richard flu
Task 2 released (end of week)
-
(21 April)
Midsession break
8
(28 April )
Designing Useful Types Wed
Thur
files
Alice & Bob
Cryptography
[Time A]
Task 2 due (Start of week)
Project released (start of week)
9
(5 May)
Polymorphism
polymorphic types, classes, polymorphic types
Wed
Thur
files
  Project interface due (must be finalised by end of week)
10
(12 May)
Testing, Extreme Programming
Wed
Thur
files
Web Programming [Time A]  
11
(19 May)
Higher order functions
Wed
Thur
files
Benoit Mandelbrot (bio)
Graphics & Fractals
[Time A]
Guest HOF lecture by Margaret Mitchell, Guest Graphics lecture by Tim Lambert
12
(26 May)
Fun Stuff
Wed
Thur
files
Kurt Godel, MC Escher
Self-reference & Puzzles
[Time A]
13
(2 June)
Law and Ethics
Wed
Thur
files
Subject revision & Q&A
[Time A]
Guest lecture on law: Intellectual property, copyright, and patents

Project due (start of week) late submissions not accepted

14
(9 June)
Review & revision Wed
#Thur
files
Subject revision & Q&A
[Time B]
Project presentations and marking in labs this week.
* Extension lectures are optional lectures for interested students. Non 1711 students may also attend. The material covered is not examinable. Times and topics are provisional. Further lectures may be added depending on demand and what other interesting things come up over the duration of the session. Current ideas for topics include: Random number generators, web programming, unix scripting, category theory, concurrency, virii/worms/security, quantum computing