-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathoverview.tex
More file actions
18 lines (14 loc) · 2.36 KB
/
overview.tex
File metadata and controls
18 lines (14 loc) · 2.36 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% LaTeX sources for The Guide to Functional Programming
%% Michael B. Gale (m.gale@warwick.ac.uk)
%%
%% This work is licensed under the Creative Commons
%% Attribution-NonCommercial-ShareAlike 2.0 UK: England & Wales License. To
%% view a copy of this license, visit
%% http://creativecommons.org/licenses/by-nc-sa/2.0/uk/ or send a letter to
%% Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{The Module}
Functional Programming is an optional module which follows on from modules such as CS118 or equivalents in other departments where you have learnt to write programs in the imperative style in languages such as Java, C, or Python. However, Java, C, and Python are just three of many programming languages. Similarly, object-oriented programming is just one of many programming paradigms. You can think of programming languages as tools: a hammer is different from a screwdriver and both serve different purposes which they are good at. Programming languages are the same: different languages exist for different purposes and it is easier or harder to accomplish certain tasks in one or the other. To be a good programmer, you need to know which tools are at your disposal and when to use them.
In this module, you will learn about the \emph{functional programming} paradigm. No prior programming knowledge is required and this module is suitable for most scientists. We use Haskell, which is a lazy, purely functional programming language. Haskell is one of many functional programming languages and writing programs in these languages is very different from writing programs in languages like Java. Over the course of this module you will learn how to do that. In turn, this adds a powerful tool to your programming arsenal and you will gain a much deeper understanding of programming. Skills from this module can be applied in other languages, functional or not. In other words, you will become a better programmer!
This guide serves as a companion to the module by giving you an overview of all the major components, including guidance on how to use the different tools you will encounter as part of this module. You can also find the coursework specifications as well as exercises for all of the labs in this guide.