LATEXis the tool to use for type-setting math or math-related text. Packages that I have found useful include amsmath and amssymb for generally more symbols, and math commands; and mathpartir for type-setting inference rules. The former are part of the standard tetex package. The latter you can find here, and it may come with some Linux distributions as well. The file latex_example.tex is an example file that typesets a few inference rules and derivations with the mathpartir package.
Programming assignments will be done with Haskell, here are a few pointers to get you started.
An easy way to interact with GHC is to edit your document, say, Foo.hs in your favourite editor (== Emacs, with haskell-mode), and invoke the GHC interpreter in a shell window:
> ghci -fglasgow-exts
The most commonly used commands are
:l Foo to load the module Foo (from your file Foo.hs)
:r to re-load the previously loaded module
:i x to inspect the value, type, ... x
:q to quit the interpreter
The compiler is invoked, for example as:
> ghci -fglasgow-exts --make
The --make option chases automatically which modules need to be
recompiled, so you don’t have to write a Makefile yourself.
(Also GHC’s analysis of what need to be recompiled is more fine grained,
thus faster).