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 logic programming and the Prolog language.

Expected Learning
Being able to understand what functional and logic 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
Session #8 ? Exercises

Logic programming
Session #9 ? Introduction to logic programming (evaluation model, etc.)
Session #10 ? Syntax, sentences, rules
Session #11 ? Recursive rules, variables
Session #12 ? Lists
Session #13 ? Arithmetic
Session #14 ? Cuts and negation
Session #15 ? Examination


Prerequisites
None

Required Text(s) and Materials
Antoine Bossard, A Gentle Introduction to Functional Programming in English ? 関数プログラミング入門, in English! (電子書籍), Ohmsha, Ltd. 2017
https://estore.ohmsha.co.jp/titles/978427499992P

References
Assessment/Grading
Examination: 100%

Message from instructor(s)
No programming experience required.

Course keywords
programming, Haskell, functional
Office hours
Before and after each lecture.
Remarks 1
Remarks 2
Related URL
Lecture Language
Language Subject
Last update
10/3/2017 10:15:01 AM