IT-Universitetet i København
 
  Tilbage Kursusoversigt
Kursusbeskrivelse
Kursusnavn (dansk):Funktionelt design og programmering 
Kursusnavn (engelsk):Functional Design and Programming 
Semester:Efterår 2004 
Udbydes under:cand. it, softwareudvikling (swu) 
Omfang i ECTS:7,50 
Kursussprog:Engelsk 
Kursushjemmeside:https://learnit.itu.dk 
Min. antal deltagere:
Forventet antal deltagere:25 
Maks. antal deltagere:60 
Formelle forudsætninger:

You should be able to design and implement small programs in an imperative or object-oriented programming language, e.g., in Java. In particular, you should be able to program with simple data types using loops, procedures / methods, and you should understand what an interface is. You could, e.g., have acquired these competences by following the course Introductory Programming (GP) or the course Introduction to Programming - Concepts and Tools (IPBR) at the IT University. 

Læringsmål:

Upon completion of this course, you will have acquired the following qualitifications:


  • You will be able to explain and implement programs in the Standard ML programming language.
  • You will understand and be able to use recursive data types and functions; higher-order functions; and data types such as tuples, lists, trees, and vectors.
  • You will be able to explain and apply parameterization and polymorphism.
  • You will understand the concepts of binding, environment, type and type inference.
  • You will be able to build modular programs, by dividing larger programming tasks into seperate modules with well-defined functional interfaces.
  • You will be able to use ML for modern programming tasks, e.g. for building web services, for transforming XML documents, or for implementing location-based services.
 
Fagligt indhold:

In traditional programming languages, computation takes place by destructively changing the values of variables and fields of objects, etc. This can be efficient, but makes it difficult to combine general solutions to subproblems to solutions to larger problems.

In functional programming, the topic of this course, computation is instead value-oriented. That means that computation takes place by analysing values and creating new values, rather than destructively updating individual bits of the computer memory.

The value-oriented programming style makes it easier to make robust and maintanable programs with well-defined functional interfaces.

The idea of functional design and programming thus is to express programs by composition of suitable functions. Every function works similarly to a mathematical function: it takes an argument, conducts a computation, and returns a result. Thus the focus is on what the function does, rather than on how it does it.

In this course we will use the functional programming language Standard ML, which is a widely-used functional programming language and which several researchers at the IT University have helped develop.
The two main topics of the course are:


  1. Programming in the small. How can a specific problem be solved by combining simple functions.
  2. Programming in the large. How can a big system by split into modules with well-defined functional interfaces.

In addition we will also focus on how to use functional programming for modern programming tasks, e.g., for building web services, for transforming XML documents, or for implementing location-based services.

The course is a natural successor to Introductory Programming in Java (GP/IPBR) and serves as good preparation for the course Programming Languages: Interpreters and Compilers.


There will be weekly assignments, both pencil-and-paper and programming assignments. 

Læringsaktiviteter:

Weekly lectures, exercise labs with an instructor.






NB! In the intro-week, i.e., from August 27 to September 2, there are no exercise classes, but only lectures from 9-12. 

Eksamensform og -beskrivelse:X. experimental examination form (7-scale; external exam), 13-skala, Ekstern censur

4-timers skriftlig eksamen  

Litteratur udover forskningsartikler:Will be announced later. (If you want to browse in an ML book before choosing the course, see e.g.,
Introduction to Programming using SML. Michael R. Hansen & Hans
Rischel. Addison-Wesley. 1999. ISBN NR.: 0-201-39820-6
or
ML for the Working Programming. Larry Paulson, Cambridge University Press. 1994. ISBN 0-521-42225-6.)