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 |
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. |