Course title | |||||
関数プログラミング [Functional Programming] | |||||
Course category | technology speciality courses,ets. | Requirement | Credit | 2 | |
Department | Year | 3~4 | Semester | Fall | |
Course type | Fall | Course code | 023807 | ||
Instructor(s) | |||||
BOSSARD Antoine [BOSSARD Antoine] | |||||
Facility affiliation | Graduate School of Engineering | Office | 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. |
Expected Learning |
Being able to understand what functional and logical programming are, and how to use the Haskell functional programming language to produce simple programs. |
Course schedule |
(NB. Some adjustments may be made upon needs.) Functional programming Session #1 ? Introduction to functional programming Session #2 ? GHCi environment, Haskell syntax and evaluation model, variables and types Session #3 ? Functions and currying, types (signatures, contracts), variable scope (local / global bindings) Session #4 ? Lists and tuples, infinite lists and laziness, list comprehension Session #5 ? Control structures (if, guards), recursion 1 Session #6 ? Pattern matching Session #7 ? Recursion 2, sample applications Session #8 ? Exercises Logic programming Session #9 ? Introduction to logical programming (propositional logic, first order logic, etc.) Session #10 ? Facts, rules, queries, variables Session #11 ? Recursive rules and recursive programming Session #12 ? Lists Session #13 ? Arithmetic, cuts and negation Session #14 ? Exercises Functional and logic programming Session #15 ? Examination |
Prerequisites |
None |
Required Text(s) and Materials |
Antoine Bossard, “A Gentle Introduction to Functional Programming in English ? 関数プログラミング入門, in English!” (電子書籍), 2nd edition, Ohmsha, 2018. |
References |
Assessment/Grading |
Report and final examination. |
Message from instructor(s) |
No programming experience required. |
Course keywords |
Functional, logical, programming, Haskell, Prolog |
Office hours |
Before and after each lecture. |
Remarks 1 |
Remarks 2 |
Related URL |
Lecture Language |
Language Subject |
Last update |
9/20/2018 11:16:27 AM |