Principles of Programming Languages |
College | College of Engineering |
Department | Department of Information Science and Engineering |
Year | 2nd grade |
Semester | Fall Semester |
Credit | 2 |
1. | Understanding the formal description of the semantics of programming languages and being able to describe semantics of short programs in tiny languages based on axiomatic and operational semantics |
2. | Understanding the scope rules (static and dynamic) of variables and being able to explain how the meaning of programs changes according to the scope rules |
3. | Understanding the mechanisms of parameter passing and being able to explain how the meaning of programs changes according to the mechanisms |
4. | Being able to explain the classification of programming languages based on their computational models |
5. | Being able to check whether or not simple programs in tiny C language have the type consistency according to the given simple type system |
Class schedule | HW assignments (Including preparation and review of the class.) | |
1. | Classification of programming languages and a simple example of programming languages | Section 8.1 of the reference book |
2. | Imperative languages (1) - Assignments - Structured programming - Control flow | Section 3.1, 3.2, and 3.3 of the reference book |
3. | Imperative languages (2) - Break statements, continue statements, goto statements, and return statements | Section 3.4 of the reference book |
4. | Imperative languages (3) - Compilation of sentences - Short-circuit evaluation - Assertions | p. 109 and p. 87 of the reference book |
5. | Imperative languages (4) - Hoare triple - Hoare logic | Section 3.6 of the reference book |
6. | Imperative language (5) and a small examination - Procedures - Parameter-passing mechanisms - Scope rules of variables | Section 5.2 and 5.3 of the reference book |
7. | Operational semantics (1) - An operational semantics for a tiny C language - Definition of the meaning of expressions - Definition of the meaning of sentences | Section 13.3 of the reference book provides an operational semantics, although it is for a functional language. This lecture provides one for an imperative language, but the basic ideas are similar. Since imperative languages support assignments, we have to care about the states, which the reference book does not provide the explanation for. Each student is recommended to try to consider how to define an operational semantics for an imperative language. |
8. | Mid-term examination and explanation of the answers - Paper-and-pencil test for checking the understanding of the contents of the lectures from the first to the seventh | Review the contents of all the lectures until the last one |
9. | Type system - Variable declarations in the C language - A type system for a tiny C language | Review variable declarations of the C language |
10. | Lambda calculus - Syntax of the lambda expressions - Beta transformation | Chapter 14 of the reference book |
11. | Object-oriented languages (1) - Classes | Chapter 6 of the reference book |
12. | Object-oriented languages (2) - Inheritance - Virtual functions | Chapter 7 of the reference book |
13. | Logic programming | Chapter 11 of the reference book |
14. | Functional programming and a small examination | Chapter 8 and 9 of the reference book |
15. | Final examination and explanation of the answers - Paper-and-pencil test for checking the understanding of the contents of the lectures from the first to the fourteenth | Review the contents of all lectures |
・ | Before and after each lecture or any time agreed on by email |
・ | Course that cultivates a basic problem-solving skills |