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