Kreutzer, W., Krishnan, P. and McKenzie, B. |
Table of Contents
What is Computer Science?
- Science as a Rule-Following System
- Three Central Ideas of Computer Science: Computability, Algorithms & Complexity
- A Brief History of Computing, Computing Devices and Programming Languages?
- Teaching Computer Science
- Summary and References
Invitation to Functional Programming
- Four Paradigms of Programming
- A Brief History of Functional Programming
- A first Look at Expressions, Identifiers, Types and Operators
- A First Look at Functions
- Elementary Data Types: Numbers, Characters and Booleans
- A First Look at Types: How to Declare and Define Them
- Tuples
- Lists
- Strings
- Streams, Sequences, and the Generation of Random Numbers
- Comprehending Lists
- Some Comments on Method, Errors and Style
- Lambda Expressions and Higher-Order Functions
- Type Synonyms, Algebraic Types and Type Classes
- Simple Input and Output Streams
- Huggy - a simple Graphics and Animation System for Hugs
- Recursive Structures and Processes
Trees
- Introduction
- Binary Trees
- Operations on Trees
- Binary Search Trees
- Game Trees
Graphs
- Introduction
- Graphs in Hugs
- Graph Traversals
- An Application of Graphs
- Labelled Graphs
- Directed Graphs.
Algorithmic Techniques
- Iterative Improvement
- Backtracking
- Greedy Algorithms
- Divide and Conquer
- Specialised Techniques
- Further Reading
Analysis of Algorithms and Computability
- Introduction
- Deriving Time Complexity
- Simplification
- Examples
- Tractability
- Undecidability
Where do we go from here?
Appendices:
- Cute: a Programming Environment for Teaching
- An excerpt of the Hugs prelude
- A selection of excerpts from the Hugs libraries
References
Index
