Course title | |||||
関数プログラミング [Functional Programming] | |||||
Course category | technology speciality courses | Requirement | Credit | 2 | |
Department | Year | 3~4 | 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 |