i217 Functional Programming 

Lecturer: OGATA, Kazuhiro (email: ogata at jaist dot ac dot jp)
Term 1-2: Jun 12 - Aug 3, 2020

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


News

- July 28 (Important) The submission deadline for the final assignment is Midnight of July 30, Thursday, 2020 (JST).
- July 27 (Important) A review class will be held at 10:50-12:30, July 29, Wednesday, when you will be given final assignment problems. The review class video will NOT be available and then you should participate in the review class live if you will tackle the final assignment.
You are supposed not to cooperate with any others so as to tackle the final assignment problems. If I find that two or more solutions submitted by different students are surprisingly the same, I may ask those students to explain their solutions.
You are allowed to submit your solutions of the final assignment at most once.
So, please check your solutions several times before the submission. You are supposed to write your solutions on paper by hand, scan solutions, prepare one pdf file on which you should write your name and student number, and submit it to the lecturer by email. The email subject should be i217 final assignment. You should write your name and student number in the email.
- July 8: I have corrected some mistakes found on around p.33 of lecture note 9. Please see the revised version.
- June 25: For Assignment 3, you are supposed to write all traces manually, scan them, make a pdf file and submit it to the lecturer by the deadline. As usual, you shoudl write the title of the report, your name and your student number in your report. You can write them manually. 
- June 8:  All classes will be held ONLINE.
- June 8: 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.
- Jun 8: 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.
- Jun 8: 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.


Exam


Insetad of a written exam, each student will tackle a final assignment for the period:
- 12:30, Jul 29 - 23:59, Jul 30
and submit his/her solutions by the end of the peirod to the lecturer by email.
Details will be explaiend at some class later. 


Assignment

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, Jun 15, Monrday
1. Sorts, Operators, Terms and Equations (lecture note 1)
Submission deadline of assignment: Midnight of Jun 22

10:50-12:30, Jun 17, Wednesday
2. Modules, Order Sorts and Lists of Natural Numbers (lecture note 2)
Submission deadline of assignment: Midnight of Jun 24

9:00-10:40, Jun 22, Monday
3. Tern Rewriting (lecture note 3)
Submission deadline of assignment: Midnight of Jul 29

13:30-15:10. Jun 22, Monday
Laboratory (Tutorial Hour)

10:50-12:30, Jun 24, Wednesday
4. Parametrized Modules (lecture note 4)
Submission deadline of assignment: Midnight of Jul 1

9:00-10:40, Jun 29, Monday
5. Tables (lecture note 5)
Submission deadline of assignment: Midnight of Jul 6

10:50-12:30, Jul 1, Wednesday
6. Infinite Lists (lecture note 6)
Submission deadline of assignment: Midnight of Jul 8

9:00-10:40, Jul 6, Monday
7. Multisets (lecture note 7)
Submission deadline of assignment: Midnight of Jul 13

13:30-15:10. Jul 6, Monday
8. A Programming Language Processor - Interpreter (lecture note 8)
Submission deadline of assignment: Midnight of Jul 27

10:50-12:30, Jul 8, Wednesday
9. A Programming Language Processor - Virtual Machine (lecture note 9)
Submission deadline of assignment: Midnight of Jul 27

9:00-10:40, Jul 13, Monday
10. A Programming Language Processor - Compiler (lecture note 10)
Submission deadline of assignment: Midnight of Jul 27

13:30-15:10. Jul 13, Monday
11. Program Verification - Natural Numbers (lecture note 11)
Submission deadline of assignment: Midnight of Jul 29

10:50-12:30, Jul 15, Wednesday
12. Pregram Verification - Lists (lecture note 12)
Submission deadline of assignment: Midnight of Jul 29

10:50-12:30, Jul 22, Wednesday
Laboratory (Tutorial Hour)

9:00-10:40, Jul 27, Monday
13. Verification of Arithmetic Caclulator Compiler (lecture note 13)
Submission deadline of assignment: Midnight of Aug 3

13:30-15:10. Jul 27, Monday
14. Proof Assistant (lecture note 14)
Submission deadline of assignment: Midnight of Aug 3

10:50-12:30, Jul 29, Wednesday
Laboratory (Tutorial Hour)


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

ast.cafe
misc.cafe
interpreter.cafe
vm.cafe
compiler.cafe


Links

CafeOBJ


Jun 8, 2020 Updated by K. Ogata