2017 Functional Programming Fundamentals

Font size  SML

Register update notification mail Add to favorite lecture list
Academic unit or major
Undergraduate major in Computer Science
Instructor(s)
Tokunaga Takenobu  Nishizaki Shin-Ya  Inoue Nakamasa 
Course component(s)
Lecture / Exercise
Day/Period(Room No.)
Mon7-8(W321)  Thr7-8(W321)  
Group
-
Course number
CSC.T263
Credits
2
Academic year
2017
Offered quarter
3Q
Syllabus updated
2017/3/17
Lecture notes updated
-
Language used
Japanese
Access Index

Course description and aims

Following the procedural programming paradigm delivered in "Procedural Programming Fundamentals" and "Advanced Procedural Programming", this course introduces different types of programming paradigm, namely functional programming. The course will present the principles behind the functional programming paradigm and its computational mechanism. The course will use a programming language Scheme.
Using an appropriate programming paradigm and a programming language for a given problem is essential for realising software in terms of its description ease, understandability and maintainability. The aim of this course is to provide students with the ability to choose an appropriate programming paradigm for a given problem on the basis of deep understanding of common and different concepts among various programming paradigms.

Student learning outcomes

At the end of the course students should
(1) be able to write recursive programs
(2) be able to write programs in a functional programming language (scheme)
(3) be able to write programs handling list data structures
(4) be able to write programs using the higher order concept

Keywords

procedure abstraction, variable data structures, stream, list operations, higher-order procedures, continuation

Competencies that will be developed

Intercultural skills Communication skills Specialist skills Critical thinking skills Practical and/or problem-solving skills
- - -

Class flow

The course is twofold: classes for understanding fundamental concepts in the functional programming paradigm through the lectures, and classes for acquiring skills to utilise those fundamental concepts through programming practices. Two types of classes will be interleaved through the course.

Course schedule/Required learning

  Course schedule Required learning
Class 1 Typology of programming languages and overview of Scheme Specified in the class
Class 2 Programming practices corresponding to the previous lecture Specified in the class
Class 3 Recursive programs, scope of names and higher-order procedures Specified in the class
Class 4 Programming practices corresponding to the previous lecture Specified in the class
Class 5 Compound data and data abstraction Specified in the class
Class 6 Programming practices corresponding to the previous lecture Specified in the class
Class 7 List processing (transformation, filtering and folding) Specified in the class
Class 8 Programming practices corresponding to the previous lecture Specified in the class
Class 9 Assignment and closure Specified in the class
Class 10 Programming practices corresponding to the previous lecture Specified in the class
Class 11 The environment model Specified in the class
Class 12 Delayed objects and stream Specified in the class
Class 13 Programming practices corresponding to the previous lecture Specified in the class
Class 14 Continuation Specified in the class
Class 15 Programming practices corresponding to the previous lecture Specified in the class

Textbook(s)

Not specified

Reference books, course materials, etc.

・Harold Abelson and Gerald Jay Sussman,Structure and
Interpretation of Computer Programs, 2nd Edition, The MIT Press,
1996. (http://mitpress.mit.edu/sicp/)
・Revised5 Report on the Algorithmic Language Scheme
(http://www.schemers.org/Documents/Standards/R5RS/)

Assessment criteria and methods

Programming practices (30%)
Final exam (70%)

Related courses

  • CSC.T241 : Fundamentals of Computing
  • CSC.T243 : Procedural Programming Fundamentals
  • CSC.T253 : Advanced Procedural Programming
  • CSC.T273 : Object-Oriented Programming

Prerequisites (i.e., required knowledge, skills, courses, etc.)

Finishing the following courses is highly recommended.
CSC.T241 : Fundamentals of Computing
CSC.T243 : Procedural Programming Fundamentals
CSC.T253 : Advanced Procedural Programming

Contact information (e-mail and phone)    Notice : Please replace from "[at]" to "@"(half-width character).

take[at]c.titech.ac.jp

Other

None

Page Top