Programming from first principles - Bornat, Richard (Prentice Hall international series in computer science, 1987)