Computer Science & Software Engineering,
University of Canterbury
, Christchurch, New Zealand

Wolfgang Kreutzer

Kreutzer, W., Krishnan, P. and McKenzie, B.
Functional Programming with HUGS. An Introduction to Computer Science using a Functional Programming Language.
Unpublished Draft - Christchurch (New Zealand)
~ 600 pages

Table of Contents

What is Computer Science?

  1. Science as a Rule-Following System
  2. Three Central Ideas of Computer Science: Computability, Algorithms & Complexity
  3. A Brief History of Computing, Computing Devices and Programming Languages?
  4. Teaching Computer Science
  5. Summary and References

Invitation to Functional Programming

  1. Four Paradigms of Programming
  2. A Brief History of Functional Programming
  3. A first Look at Expressions, Identifiers, Types and Operators
  4. A First Look at Functions
  5. Elementary Data Types: Numbers, Characters and Booleans
  6. A First Look at Types: How to Declare and Define Them
  7. Tuples
  8. Lists
  9. Strings
  10. Streams, Sequences, and the Generation of Random Numbers
  11. Comprehending Lists
  12. Some Comments on Method, Errors and Style
  13. Lambda Expressions and Higher-Order Functions
  14. Type Synonyms, Algebraic Types and Type Classes
  15. Simple Input and Output Streams
  16. Huggy - a simple Graphics and Animation System for Hugs
  17. Recursive Structures and Processes

Trees

  1. Introduction
  2. Binary Trees
  3. Operations on Trees
  4. Binary Search Trees
  5. Game Trees

Graphs

  1. Introduction
  2. Graphs in Hugs
  3. Graph Traversals
  4. An Application of Graphs
  5. Labelled Graphs
  6. Directed Graphs.

Algorithmic Techniques

  1. Iterative Improvement
  2. Backtracking
  3. Greedy Algorithms
  4. Divide and Conquer
  5. Specialised Techniques
  6. Further Reading

Analysis of Algorithms and Computability

  1. Introduction
  2. Deriving Time Complexity
  3. Simplification
  4. Examples
  5. Tractability
  6. Undecidability

Where do we go from here?

Appendices:

  1. Cute: a Programming Environment for Teaching
  2. An excerpt of the Hugs prelude
  3. A selection of excerpts from the Hugs libraries
References
Index


Go to top of page