Back close

Course Detail

Course Name Principles of Functional Languages
Course Code 23CSE212
Program B. Tech. in Computer Science and Engineering (CSE)
Semester 4
Credits 3
Campus Amritapuri ,Coimbatore,Bengaluru, Amaravati, Chennai

Syllabus

Unit I

Why are there so many programming languages – Programming Paradigms: Imperative, Object-oriented, Functional etc. – language characteristics: compiled and interpreted, type system, static and dynamic type checking, grouping data and operations, information hiding and abstract data types etc.

Haskell Basics, Haskell Types, type classes, functions: guards, pattern matching and recursion, lambda functions, functional composition, lists and list comprehension, higher-order functions: currying etc.

Unit II

Abstract Data Types, Lazy Evaluation, Streams, IO, Applicative Functors, monad, Real World applications.

Unit III

Functional Principles in Contemporary Languages – avoiding state updating and control structures: encapsulation, comprehension, recursion – callable: named functions and lambdas, closures, multiple dispatch – lazy evaluation – higher order functions.

Objectives and Outcomes

Pre-requisite(s)

The students must have learnt programming language(s) in either of the programming paradigms – Imperative and/or Object-oriented.

Course Objectives

The objective of this course is to open one’s mind to different way of solving real-world problems with functional style as the primary reference against imperative and object-oriented paradigms. In fact, the more tools’ students have while solving real-world problems, the better they will be in picking the best tool for the job. The course will also help students gain different programming language properties which will be helpful for them when they explore new programming languages.

Course Outcomes

CO1: Apply functional programming principles while designing solutions to problems and developing functional programs.

CO2:Formulate generic abstractions with higher order procedures while solving problems.

CO3:Formulate abstractions with data especially using lists and infinite data structures like streams.

CO4: Apply functional programming principles while developing solutions in contemporary languages.

CO-PO Mapping

PO/PSO

&CO

PO1 PO2 PO3 PO4 PO5 PO6 PO7 PO8 PO9 PO10 PO11 PO12 PSO1 PSO2
CO1 2 2 2 2 2 2
CO2 2 2 2 1 2 2 2
CO3 2 2 2 1 2 2 2
CO4 3 2 3 1 2 2 2

Evaluation Pattern

Evaluation Pattern – 70:30

Assessment Internal External
Mid Term Examination 20
*Continuous Assessment – Theory(CAT) 10
*Continuous Assessment – Lab(CAL) 40
**End Semester 30 (50 Marks – 2 hours)

*CAT – Can be Quizzes, Assignments, and Reports

*CAL – Can be Lab Assessments, Project, and Report

**End Semester can be theory examination/ lab-based examination

Text Books / References

Textbook(s)

Richard Bird, “Thinking Functionally with Haskell”, Cambridge University Press, 2014.

Reference(s)

Rebecca Skinner, “Effective Haskell – Solving Real-World Problems with Strongly Typed Functional Programming”, Pragmatic Bookshelf, 2023.

Richard S. Bird and Jeremy Gibbons, “Algorithm Design with Haskell”, Cambridge University Press, 2020.

David Mertz, “Functional Programming in Python”, O’Reilly, 2015.

John De Nero, “Composing Programs”. Online https://composingprograms.com/ 

Wampler Dean, “Functional Programming for Java Developers”, O’Reilly, 2011.

DISCLAIMER: The appearance of external links on this web site does not constitute endorsement by the School of Biotechnology/Amrita Vishwa Vidyapeetham or the information, products or services contained therein. For other than authorized activities, the Amrita Vishwa Vidyapeetham does not exercise any editorial control over the information you may find at these locations. These links are provided consistent with the stated purpose of this web site.

Admissions Apply Now