Home - Courses - F - Content

Functional Programming

ProgramTeacherCreditDuration

Computer science

Jianrong Wang

2

40

Course Name: Functional Programming

Course Code: S2293227

Semester: 5

Credit: 2

Program: Computer science

Course Module: Optional

Responsible: Jianrong Wang

E-mail: wjr@tju.edu.cn

Department: Tianjin International Engineering Institute

Time Allocation (1 credit hour = 45 minutes)

Exercise

Lecture

Lab-study

Project

Internship

(days)

Personal

Work

8

12

20

10

Course Description

Functional programming is one of the courses designed for Engineering Master of Computer Science in TIEI, and has become more and more popular in recent years because it promotes code that’s safe, concise, and elegant. This course introduces the theory and practice of functional programming (FP), which aims to develop a broad understanding of the functional programming style. Upon the completion of this course, students will think differently about programming and software engineering.

Prerequisite

  • Basic mathematical background, such as the ability to do a proof by mathematical induction, in order to reason about program correctness

  • Developed abstraction skills

  • Familiarity with the core mathematical structures of CS, such as sets, relations, graphs, and trees

Course Objectives

  • To develop a thinking of functional programming

  • To improve the cognition of programming and software engineering

  • To implement (simple) algorithms and data structures as functional programs

  • To design functional programs that are modular and have reusable components

CourseSyllabus

  • Functional language paradigm:

Uses; implementation; history; main features; advantages and disadvantages; languages (e.g., Lisp, ML, OCAML, Haskell)

  • Fundamental ideas (higher-order functions; curring; uncurring; function composition; recursion; local definitions); programming style; type systems

  • Lambda Calculus

  • Types and strong-typing. Basic types: Booleans and truth values. Simple programs involving pattern matching. Polymorphism and type classes. More types: characters, strings, tuples

  • Lists and their operations; list comprehensions

  • Recursion, Induction and Reasoning

  • Non-linear data structures. Binary trees, Binary search trees and their operations

  • Advanced features:

E.g., Modules; interactive programs; lazy evaluation; proving properties possessed by programs

Textbooks & References

  • Graham Hutton.Programming in Haskell. Cambridge University Press, 2007.

  • Richard Bird.Thinking Functionally With Haskell. Cambridge University Press, 2014.

  • Peyton-Jones.The Implementation of Functional Programming Languages. Prentice-Hall, 1986.

  • DoraiSitaram.Teach Yourself Scheme in Fixnum Days. 1998.

Capability Tasks

CT1: To know the differences among FP, IP and OOP.

CT2: To understand the main principles of FP and the basics scheme.

CT3: To master the Lambda Calculus and Types, which are very important in FP.

CS1: To understand the fundamental theories about FP.

CS2: To grasp the key points about FP, to be able to could program in FP style.

Achievements

  • To know how the FP differs from IP and OOP. - Level: N

  • To read and understand the research and technical literature about functional programming. - Level: N

  • To understand the basics of the lambda calculus and its uses in the implementation of functional languages. - Level: A

  • To grasp polymorphism and higher-order functions. - Level: A

  • To write programs in a functional style. - Level: M

Students: Computer science,Year 3