lunduniversity.lu.se

Computer Science

Faculty of Engineering, LTH

Denna sida på svenska This page in English

EDAF95 syllabus

Introduction

With mainstream programming languages we understand programs by understanding how the computer sequentially executes the program. Functional programming represents a different approach to programming. By interpreting variables in the mathematical sense the program semantics can be understood by simple rewrite rules. Higher order functions become natural building blocks, and you can work with infinite data structures. As a consequence, programs can be made much shorter and easier to understand. The importance of functional programming is further elaborated in the essay Why functional programming matters.

This course aims to make functional techniques and thought patterns part of your programming repertoire. In order to establish these skills the course emphasizes practical programming exercises using the functional language Haskell. Not only do they exercise programming with a more mathematical mindset, they also demonstrate how functional programming can be used in some practical applications.

Prerequisites

Programming, Algorithms and data structures (e.g., EDAA01 suffices).
Additional recommendation: Discrete structures EDAA40, Mathematics 15 ECTS

Course structure

During the first two weeks of the course you will get acquainted with the Haskell language, primarily by yourself, using any of the tutorials or textbooks available. Some possibilities are listed on the Literature and links page. This phase will be supported by the first five lectures, first labs and the first class.

Then the main part of the course begins. It consists of two two programming assignments. Each assignment is preceded by two labs guiding you towards solving the assignment. However, the labs and the assignments are separate, and will be graded separately.

A number of lectures will be given throughout the course on topics needing a more in-depth treatment. See the lecture material page for more details. Generally speaking, common (EDAF95 and EDAN40) lectures focus more on practice of functional programming, while the extra four (EDAN40 only) augment it with the necessary theory and higher-level concepts.

Aditionally, there will be three class sessions devoted to practical exercises and problem solving on several course topics. See the class page for details.

Finally, there will be two help sessions (common to both courses) devoted to anything you want, during the last two weeks of the course (Tue 7/5 15-17, and Wed 15/5 15-17), both in E:Mars. Besides that, most of us are checking the course dicord server quite often.

Examination

To pass on this course you need to have four labs and two assignments approved. Deadlines are strict in the sense that solutions which are handed in too late will be disregarded unless an agreement has been made in advance with a teacher. Obviously inadequate solutions will also fail immediately.

Moreover, there will be a written exam at the end of the course. The earlier exams may be found on the exams page. You need to have the assignments passed in order to get the permission to write the exam.

The written exam will take place on May 30th, 2024.

Literature and online resources

A couple of possible textbooks for this course, together with more reading hints, can be found on the literature and links page.

You will (hopefully:-) also study various papers and manuals which accompany the libraries used in the programming assignments.

Teaching days

Lectures: normally Mondays and Wednesdays, 13-15.
Classes: Thursdays, weeks 2, 4 and 6, with exceptions.
Labs: weeks 2, 3, 4, and 5 of the course. Sign up in Canvas to a particular occasion!

Page Manager: Jacek Malec