CS 451: Language, Logic and Computation homepage
News (for Wed 8 Feb 06)
You can look up Haskell functions (functionality?) with Hoogle
(thanks to Neil Mitchell).
You can also read an unfinished explanation of Haskell type classes.
Here's (a revised version, now with CSS!, of) the lecture on natural numbers.
Here's a completely unfinished lecture on positional notation.
Math review (for lecture, Jan 23-25)
We will need some basic background in set theory and related topics
(orderings, functions, relations and some basic logic) as a foundation for later work.
You should have some exposure to this material already, but I will work (quickly)
through
this set of review notes
in lecture. I note that the HTML for these lectures suffers from some bit-rot: the math
symbols no longer appear quite as they should on recent-model Macintoshes. Try using a
Wintel box instead to view them. (Sorry about that: I use Macs myself.)
You can also read about some of these topics at Wikipedia:
(Note that there is more material in these articles than we need, but they make for good references.)
Some references on symbols (Unicode and semiotics)
Some references on the Collatz ("3n+1") problem
Sets, domains and types
Tries and related data structures (reifying functions on strings)
Formal languages, finite automata and regular expressions
Folds, maps and Google
You can read a paper (with lots of source code) by Ralf Lämmel on
how Google uses FP techniques.
Haskell, Epic Games and Unreal Tournament
Just for fun, read this presentation on the next mainstream programming language by Tim Sweeney,
CEO and Chief Architect of Epic Games, creator of Unreal Tournament and the Unreal game engine, about how
Haskell, advanced type systems, proofs of programs and other topics in this class
are crucial to the gaming architectures of the future. You might also want to
read one of the Haskell designer's talks to the same audience, a few years before,
giving a retrospective on the Haskell language.
And, just for good meaure, here's an interview Sweeney did about
programming language issues for games (this was in January 2000, before he'd been
completely bitten by the Haskell bug ☺ ).
The Haskell tutorial (for lab, Jan 16-23)
We will be working through
this tutorial
for the first few lab sessions (i.e., there won't be specific lab exercises; but you may want
to start getting used to Haskell anyway).
Labs
- Some Basic Haskell Exercises
Due Mon 30 Jan 2006
- Some compound symbols and their semantics
Due Mon 6 Feb 2006
- Processing positional notation
Due Wed 22 Feb 2006
- Working with terms and folds
Due Wed 6 Mar 2006
Other resources
The abyss (in Alan Moore's Promethea comic,
as analyzed in Eroom Nala's exegesis.
You may also want to take a look at a tutorial or two from
the Learning Haskell
portion of the online Haskell Wiki pages.
From last year's CS 454 class, a list of useful Haskell documentation.
To run the Hugs system in the Collins 411 lab, double-click on the "WinHugs"
desktop shortcut.
You might want to download a version of the Hugs compiler
for use on your own machine. If you use a Mac, get
this version
and run it from the command line (Terminal app) under Mac OS X. (There is also a
Darwin port for Mac OS X,
but it is rather more trouble to install.)
There is also a binary distribution for Wintel machines
available.
If you want a more high-powered Haskell implementation, try the GHC compiler,
but we probably won't need all this power for our purposes (maybe later in the semester).
A proposed draft syllabus for a CS Discrete Math course.