Course title
関数プログラミング   [Functional Programming]
Course category technology speciality courses  Requirement   Credit 2 
Department   Year 34  Semester 3rd 
Course type 3rd  Course code 023680
Instructor(s)
田中 雄一, BOSSARD Antoine   [TANAKA Yuichi, BOSSARD Antoine]
Facility affiliation Graduate School of Engineering Office afjgxte/L1151  Email address

Course description
Software engineers are usually familiar with imperative programming (C/C++, Java…). In this course, we will introduce another programming model, functional programming, using the Haskell language. While imperative programming is based on the state of a program, functional programming is based on the evaluation of functions. This different computational approach, or paradigm, has many advantages and applications. Also, it has been gaining more and more attention from software engineers as it enables high-level object manipulation and easy program logic description. One could speak of modern programming. The second half of this course will be dedicated to logical programming, using the Prolog language for concrete examples. The relation and transition between the two paradigms (i.e., functional and logical) will be at the centre of discussions.


Google Classroom Code【4yfbbdj】
Expected Learning
Being able to understand what functional and logic programming are and how to use the Haskell and Prolog programming languages to produce short programs. Regarding the diploma policy, see the curriculum maps.

Course schedule
(NB. Some adjustments may be made upon needs.)

Functional programming
Lecture #1 Introduction to functional programming
Lecture #2 GHCi environment, Haskell syntax and evaluation model, variables and data types
Lecture #3 Functions and currying, signatures and contracts, binding scope
Lecture #4 Lists and tuples, infinite lists and laziness, list comprehension
Lecture #5 Augmenting and tail recursion, list recursion
Lecture #6 Pattern matching, sample applications
Lecture #7 Exercises

Logic programming
Lecture #8 Introduction to logic programming (propositional logic, first order logic, etc.)
Lecture #9 Facts, rules, queries, variables
Lecture #10 Recursive rules and recursive programming
Lecture #11 Lists
Lecture #12 Arithmetic, cuts and negation
Lecture #13 Sample application
Lecture #14 Exercises

Functional and logic programming
Session #15 Examination and explanation
Prerequisites
In addition to 30 hours that students spend in the class, students are recommended to prepare for and revise the lectures, spending the standard amount of time as specified by the University and using the lecture handouts as well as the references specified below.

Required Text(s) and Materials
Antoine Bossard, "A Gentle Introduction to Functional Programming in English
- 関数プログラミング入門, in English!", 第3版 (third edition), オーム社
(Ohmsha), 2020. 電子書籍(ISBN: 978-4-274-80409-0)と紙版(POD=オンデマンド印刷。
ISBN: 978-4-274-70106-1)あり
References
Some will be specified if needed.
Assessment/Grading
Final examination, which checks ability to understand what functional and logic programming are and how to use the Haskell and Prolog programming languages to produce short programs.
Message from instructor(s)
No programming experience required.

Course keywords
Functional, logic, programming, Haskell, Curry, Prolog
Office hours
Before and after each lecture.
Remarks 1
Remarks 2
Related URL
Lecture Language
Japanese
Language Subject
Last update
9/30/2021 7:12:19 PM