i217 Functional Programming 

Lecturer: OGATA, Kazuhiro (email: ogata at jaist dot ac dot jp)
Term: 1-2 (June 6 - June 28, 2016)

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


- June 28, Tuesday The class schedule has been changed. Please take a look at Class Schedule.  No class and no office hour on July 12 and 14.
- June 17, Friday A mailing list for i217 has been made. If you have not received any emails via the mailing list and you would like to join it, please let the lecturer know.
- June 17, Friday All schedules have been fixed. Note that no class on June 23, Thursday. All OH slots will be used for ordinary classes and laboratories.
- June 7, Tuesday 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 7, Tuesday The latest version of CafeOBJ 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 7, Tuesday This website was open.

Ho 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.


- 13:30-15:10, July 28, Tuesday


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

Class schedule (lecture notes)

10:50-12:30, June 9, Thursday
1. Sorts, Operators, Terms and Equations (lecture note 1)

9:00-10:40, June 14, Tuesday
2. Modules, Order Sorts and Lists of Natural Numbers (lecture note 2)

13:30-15:10, June 14, Tuesday
3. Tern Rewriting (lecture note 3)

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

9:00-10:40, June 21, Tuesday
5. Tables (lecture note 5)

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

9:00-10:40, June 28, Tuesday
7. Multisets (lecture note 7)

10:50-12:30, June 30, Thursday
8. A Programming Language Processor - Interpreter (lecture note 8)

9:00-10:40, July 5, Tuesday
9. A Programming Language Processor - Virtual Machine (lecture note 9)

13:30-15:10, July 5, Tuesday
10. A Programming Language Processor - Compiler (lecture note 10)

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

10:50-12:30, July 14, Thursday
9:00-10:40, July 19, Tuesday
12. Pregram Verification - Lists (lecture note 12)

9:00-10:40, July 19, Tuesday
13:30-15:10, July 19, Tuesday
13. Verification of Arithmetic Caclulator Compiler (lecture note 13)

12:30-15:10, July 19, Tuesday
10:50-12:30, July 21, Thursday
14. Proof Assistant (lecture note 14)

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