i217 Functional Programming 

Lecturer: OGATA, Kazuhiro (email: ogata at jaist dot ac dot jp)
Term: 1-2 (June 14 - July 31, 2018)
Place: i1 room

How to tackle:
Class schedule (lecture notes)
A programming language Minila (used at 8th, 9th & 10th classes)


- June 8, Friday NO PLAGIARISM. Plagiarism is strongly prohibited. Do not plagiarize any pieces of programs and/or reports written by others, and do no let others plagiarize any pieces of programs and/or reports written by you. If the lecturer finds any pieces of plagiarism in submitted programs and/or reports, he will formally process the plagiarism. The students who have been involved in the plagiarism will never succeed in taking the credits of the course and moreover may be seriously punished.
- June 8, Friday CafeOBJ System Version 1.5.7 is used in this course. Please donwload it from here and instal it on your laptop. Please consult here on how to install CafeOBJ. Please bring your laptop with you at each class.
- June 8, Friday This website was open.

How to tackle

For each class, learn the lecture note in advance, solve the exercises found in the lecture note, clarify what you have not understood and attend the class. At the class, ask the lecturer about what you have not understood to get better understandings of them. After the class, solve the exercises you have not solved to confirm your understandings. Solving the exercises is part of the assignments, and then you are supposed to do so if you want to get the credits of the course. Programs used in the course are not to be given intentionally but required to be typed by each participant, which is part of the exercises. Please read this in advance.


- 10:50-12:30, July 31, Tuesday


The exercises found in the lecture notes are the assignment problems. Participants are supposed to write a report for each class and submit it to the lecturer. The details will be explained at classes.

Class schedule (lecture notes)

9:00-10:40, June 14, Thursday
1. Sorts, Operators, Terms and Equations (lecture note 1)

10:50-12:30, June 19, Tuesday
2. Modules, Order Sorts and Lists of Natural Numbers (lecture note 2)

9:00-10:40, June 21, Thursday
3. Tern Rewriting (lecture note 3)

10:50-12:30, June 26, Tuesday
4. Parametrized Modules (lecture note 4)

9:00-10:40, June 28, Thursday
5. Tables (lecture note 5)

13:30-15:10, June 28, Thursday
6. Infinite Lists (lecture note 6)

10:50-13:30, July 3, Tuesday
7. Multisets (lecture note 7)

9:00-10:40, June 5, Thursday
8. A Programming Language Processor - Interpreter (lecture note 8)

13:30-15:10, July 5, Thursday
9. A Programming Language Processor - Virtual Machine (lecture note 9)

10:50-12:30, July 10, Tuesday
10. A Programming Language Processor - Compiler (lecture note 10)

9:00-10:40, July 12, Thursday
11. Program Verification - Natural Numbers (lecture note 11)

10:50-12:30, July 17, Tuesday
12. Pregram Verification - Lists (lecture note 12)

10:50-12:30, July 24, Tuesday
13. Verification of Arithmetic Caclulator Compiler (lecture note 13)

9:00-10:40, July 26, Thursday
14. Proof Assistant (lecture note 14)

A Programming Language Minila (used at 8th, 9th & 10th classes)




June 07, 2018 Updated by K. Ogata