[The University of New South Wales]

COMP 1711
Hey! Das ist mein Haskell!
2005 Session 1

School of Computer Science and Engineering
The University of New South Wales
Sydney Australia

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 Lectures
Exercises
Solutions
Extension Lecture* Other

Programming in the Small

1
(28 Feb)
Intro
Intro to course
GHCi as a calculator.
Functions, functional programming. Setting up a PC at home. Simple haskell scripts, modules, comments, basic types.
 notes | files    create/activate wiki, forum, & unix accounts.
2
(7 March)
Recursion
Style, offside rule, local definitions (aka where clauses), Alternatives, simple types, compound types, lists, [..] notation, head, tail. Recursion on lists.
 notes | files 
tute | lab
  Tutorials and Labs commence
Task 1 issued (end of week)
3
(14 March)
Lists
: ++ , more programming with lists, Haskell list functions. Unit testing. More style. Multiple definitions of a function, simple pattern matching
 notes | files 
tute | lab
   
4
(21 March)
Design
patterns, multiple definitions of a function. Referential transparency. Task 1.
 notes | files 
tute | lab
Alan Turing
(AI, crypto, computability)
Task 1 due
-
(28 March)
Midsession break
5
(4 April)
Algorithms and Data Structures
Algorithms, Data structures. Intro to languages. trees, graphs. simulation, state space searching. brute force, dfs, bfs, others... Top Down design. Compilation. Pattern matching with list and tuples. Pattern matching in where clauses.
 notes | files 
tute | lab
Security (julius caesar, cliff stoll, kevin mitnick) Big lab: HTML & CGI (1)
6
(11 April)
Types
User-defined data types, pattern matching on data types, deriving Eq, Ord, Show. polymorphism, classes Exception handling, flag values.
 notes | files 
tute | lab
  Big lab: CGI (2)
7
(18 April)
Algorithms
Sorting, Searching, Efficiency, Complexity. Task 2 hints.
 notes | files 
tute | lab
Advanced State Space Searching Yellow Network

Programming in the Large

8
(25 April )
Introduction
Programming in the large: Interfaces. Bugs. Why types? Modules.
 notes | files 
tute | lab
More searching: branch and bound. Heuristics Black Network
Task 2 due
9
(2 May)
ADTs
Breaking into modules Importing. Exporting. What is abstraction? Why use abstraction? How to enforce abstraction in Haskell. Designing the ADT interface. Implementing the ADT type. Implementing the ADT interface functions.
 notes | files 
tute | lab
Week 8 revision Project: your group's interface due (friday)
10
(9 May)
Advanced Types
Recursive types. I/O vs Input/Output, side effects. Programming Languages
 notes | files 
tute | lab
Douglas Hofstadter
(recreational mathematics, godel, escher, bach)
 
11
(16 May)
Higher Order Functions
 notes | files 
tute | lab
Ada Lovelace
(babbage, the analytical engine)
Project inital submission
(earlybird competition starts)
12
(23 May)
Fun Stuff
Random numbers, Extreme Programming
 notes | files 
tute | lab
Nancy Rutherford
(some thoughts about teaching and learning)
 
13
(30 May)
Law, Risks, Ethics
 notes | files 
tute | lab
Thomas Jefferson
(intellectual property, censorship, scholarship)
Project individual submission (monday) - no extensions
Project presentations and marking (in tute-labs)
14
(6 June)
Review & revision  notes | files 
tute | lab
   
* Extension lectures are optional lectures for interested students. Non 1711 students may also attend. The material covered is not examinable. Schedule 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: Cryptography, security, algorithms, famous computer scientists, folklore, godel, oo programming, random number generators, networking, web programming, unix scripting, category theory, concurrency, malware: virii/worms/trojans, quantum computing.

This is only a provisional timetable with some vacent spots. I'm happy to change this to cover the interests of 1711 students as they progress thru the subject. Timetable subject to change at short notice. Check back here and in stopPress shortly before each scheduled extension lecture for the latest info. You can suggest or register an interest in a topic on the forum.

1711 Homepage last modified 28 April 2005 | maintained by richard buckland