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
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
|