<< 2011-2 >>
Department of
Computer Science
 

Lectures for COMS12100
Intro to Software Engineering

The lecturers are Ian Holyer for weeks 13-18, James Marshall for weeks 19-24.
See notes on rooms and books.

Chapter View Print Edit
1 Introduction intro.pdf intro6.pdf intro.odp
2 Straight Line Programming straight.pdf straight6.pdf straight.odp
3 Structured Code code.pdf code6.pdf code.odp
4 Classes and Objects classes.pdf classes6.pdf classes.odp
5 Object Oriented Design ood.pdf ood6.pdf ood.odp
6 Reports reports.pdf reports6.pdf reports.odp
7 Library Classes libraries.pdf libraries6.pdf libraries.odp
8 Graphics graphics.pdf graphics6.pdf graphics.odp
9 Structures structures.pdf structures6.pdf structures.odp
Programming Challenge challenge
10 Complexity Intro to complexity Print version Latex

The slides in .odp format were written using Open Office at www.openoffice.org

To view a pdf file in Unix, use acroread (Acrobat Reader) command; on a PC install Acrobat Reader direct. To print, use the print option in Acrobat Reader.

Chapter Monday Thursday Friday
I Meet Haskell Introduction. What is functional programming? Why do it? (Thompson chapter 1) What's in Haskell? The Prelude. Basic types and syntax (Thompson chapters 2 and 3) Designing a functional program, primitive and general recursion, testing (Thompson chapter 4)
II Basic Data Types Tuples, lists and strings, list comprehensions, polymorphic lists and overloading (Thompson chapter 5) Functions over lists: primitive and general recursion, sorting (Thompson chapter 7) Lazy programming: lazy evaluation, infinite lists, Sieve of Erastosthenes (Thompson chapter 17)
III Advanced Haskell Postponed previous lecture Patterns of computation over lists: maps, filtering, folding, splitting (Thompson chapter 9) Functions as values: composition, partial application, lambda notation (Thompson chapter 10)
III Advanced Haskell (cont) Classes, types and algebraic types (Thompson chapters 12-14) See Chapter IV See Chapter IV
IV Reasoning About Programs See Chapter III Proof: definedness, termination and finiteness, induction and structural induction (Thompson chapter 8) Complexity: notation recap, divide-and-conquer, the Master Theorem (notes)
V Graph Theory Bank Holiday Graph theory and algorithms (slides) (Prim's demo) Lecture cancelled
V Graph Theory (cont) Graph theory and algorithms (cont) (Dijkstra's demo) See Chapter VI See Chapter VI
VI Theory of Computation See Chapter V Computational equivalence, uncomputability, complexity classes P and NP, NP-complete problems (Turing Machine demo) Lecture cancelled

James Marshall's lectures on functional programming will be a fusion of the old-fashioned (writing on OHP slides) and the new (live demonstrations of Haskell programming). There will be almost no printed handouts or slides; students are expected to take notes. The lectures will closely follow the structure and content of the course text 'The Craft of Functional Programming' by Simon Thompson. For each lecture the appropriate chapter(s) in Thompson will be indicated. There are several copies of this book available from the library, or you can buy your own (new or used) for quite a reasonable price.

We will use the Glasgow Haskell Compiler (GHC) for this course, rather than the Haskell User's System (Hugs) used in Thompson. GHC is installed in the Linux labs: interactive mode should suffice for all your development, just type ghci filename in a terminal window to run functions in the file filename.hs. To download GHC for your own computer consult our Haskell Online Tutorial (H.O.T.)

The Haskell programs used in the course text, and during the lectures, are available from Simon Thompson's web-pages:

The documentation for the Prelude is available from the GHC page:

To supplement the lectures, by kind permission of Dr Tony Field and the Department of Computing, Imperial College London, you can work through the following notes in your own time and during the timetabled labs. These will help you with the more technical details of writing Haskell programs. The lectures will concentrate more on the concepts of functional programming. You might also work through our own Haskell Online Tutorial

Haskell in the real world: issue 7 of The Mondad Reader has an article on Haskell in the world of finance:

Worksheets:

Interesting Books (available from the library):

Previous years' lecture notes:

Lecture notes 2006-7
Lecture notes 2005-6
Lecture notes 2004-5
Lecture notes 2003-4
Lecture notes 2002-3
© 1995-2012 University of Bristol  |  Terms and Conditions
About this Page