Course syllabus for Introduction to functional programming

Course syllabus adopted 2024-01-26 by Head of Programme (or corresponding).

Overview

  • Swedish nameIntroduktion till funktionell programmering
  • CodeTDA555
  • Credits7.5 Credits
  • OwnerTKDAT
  • Education cycleFirst-cycle
  • Main field of studyComputer Science and Engineering, Software Engineering
  • DepartmentCOMPUTER SCIENCE AND ENGINEERING
  • GradingTH - Pass with distinction (5), Pass with credit (4), Pass (3), Fail

Course round 1

  • Teaching language English
  • Application code 49114
  • Open for exchange studentsNo
  • Only students with the course round in the programme overview.

Credit distribution

0104 Laboratory 3 c
Grading: UG
3 c0 c0 c0 c0 c0 c
0204 Examination 4.5 c
Grading: TH
4.5 c0 c0 c0 c0 c0 c
  • 29 Okt 2024 pm J
  • 07 Jan 2025 pm J
  • 19 Aug 2025 am J

In programmes

Examiner

Go to coursepage (Opens in new tab)

Eligibility

General entry requirements for bachelor's level (first cycle)
Applicants enrolled in a programme at Chalmers where the course is included in the study programme are exempted from fulfilling the requirements above.

Specific entry requirements

The same as for the programme that owns the course.
Applicants enrolled in a programme at Chalmers where the course is included in the study programme are exempted from fulfilling the requirements above.

Aim

This is an introductory course in programming, using the functional language Haskell as the medium of instruction. The primary goal is to enable students to write realistic (small) programs for real world applications, while introducing some of the fundamental concepts of computer science. Secondary goals are to provide orientation regarding the courses to come (particularly data structures, algorithms, digital circuits, formal methods and programming language courses), and to offer insight into careers in computing via invited speakers.

Learning outcomes (after completion of the course the student should be able to)

  • describe the basic concepts of modern functional programming languages, such as: data types, first- and higher-order functions, lazy evaluation, infinite data structures
  • describe a basic repertoire of functional programming techniques, such as: recursion, testing, the role of data types in modelling and problem solving
  • write small functional programs for various applications
  • structure programs in a way that makes them easy to understand and modify, by appropriate application of data types, abstraction, and code reuse
  • implement effective tests for functional programs with help of suitable tools
  • show the ability, in various contexts, to judge which programming techniques are most appropriate for solving the problem at hand
  • describe the history of computer science and its key figures, with consideration of equality, diversity, and inclusion, to understand how these aspects have influenced and continue to shape the field.

Content

This is an introductory course in programming, and uses a functional language. The primary goal is to enable students to write small programs, while introducing some of the fundamental concepts of computer science. Secondary goals are to provide orientation regarding the courses to come (particularly data structures, algorithms, formal methods and programming language courses).

Concrete topics encountered in the course include:
  • values, types and functions
  • compound data types (lists, tuples, and user-defined types)
  • higher-order functions
  • using abstraction to avoid repetitive programming
  • recursion and recursive data types
  • efficient and inefficient programs
  • input-output
  • verification with the help of testing

Organisation

The teaching is based on lectures, group meetings, and supervised lab sessions. The course might be taught in Swedish or English. 

Additional information

Students who already have knowledge in programming are advised to select the course DIT143/TDA452 Functional programming instead of TDA555. The course TDA555 cannot be included in a degree where DIT143/TDA452 is included, neither in a degree which is based on another degree where DIT143/TDA452 is included.

Literature

  • Slides and other material from the lectures
  • Book: 'Programming in Haskell' by Graham Hutton (2nd edition)
See the course home page for details.

Examination including compulsory elements

The course is examined by an individual written exam carried out in an examination hall at the end of course, and a number of compulsory assignments typically carried out in groups of 2-3 students.

The course examiner may assess individual students in other ways than what is stated above if there are special reasons for doing so, for example if a student has a decision from Chalmers on educational support due to disability.