L0930300
2 Principles of Programming Languages
Computers run according to programs, which are described in programming languages. Programming languages are defined by giving
their syntax and semantics. We illustrate how to give the semantics of programs (the results of executing the programs) by
showing operational semantics and axiomatic semantics to tiny languages. In general, semantics of programs are not known (to
computers) without executing the programs. As the classification of programming languages by their computational models we
illustrate imperative, functional, logic, and object-oriented languages. We also present major concepts of programming languages
such as the scope rules of variables and the mechanisms of parameter passing.
A programming language is a system for describing computations. Each language abstracts computations from various viewpoints
and provides ways for describing compuations. For example, languages typically provide variables, functions, and types. The
way a language abstracts compuations has a profound effect on programming in the language. We learn typical abstractions provided
by languages being used now so that we can select an appropriate language by taking into account such abstractions. We also
learn major concepts of programming languages such as the scope rules of variables and the mechanisms of parameter passing
so that we know the differences of such concepts among languages. Semantics form a basis for analyzing or verifying programs.
We learn semantics so that we have means for precisely specifying behaviors of programs.
- 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
- 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
- Understanding the mechanisms of parameter passing and being able to explain how the meaning of programs changes according
to the mechanisms
- Being able to explain the classification of programming languages based on their computational models
Japanese(English accepted)
|
Class schedule |
HW assignments (Including preparation and review of the class.) |
Amount of Time Required |
1. |
Classification of programming languages and a simple example of programming languages |
Section 8.1 of the reference book |
185minutes |
2. |
Imperative languages (1) - Assignments - Structured programming - Control flow
|
Section 3.1, 3.2, and 3.3 of the reference book |
190minutes |
3. |
Imperative languages (2) - Break statements, continue statements, goto statements, and return statements
|
Section 3.4 of the reference book |
190minutes |
4. |
Imperative languages (3) - Compilation of sentences - Short-circuit evaluation - Assertions - Hoare triple - Hoare logic
|
p. 109, p. 87 and Section 3.6 of the reference book |
190minutes |
5. |
Imperative languages (4) - Procedures - Parameter-passing mechanisms - Scope rules of variables
|
Section 5.2 and 5.3 of the reference book |
190minutes |
6. |
Operational semantics and a small examination - 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.
|
190minutes |
7. |
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 seventh
|
Review the contents of all the lectures until the last one. |
190minutes |
8. |
- |
- |
0minutes |
9. |
- |
- |
0minutes |
10. |
- |
- |
0minutes |
11. |
- |
- |
0minutes |
12. |
- |
- |
0minutes |
13. |
- |
- |
0minutes |
14. |
- |
- |
0minutes |
15. |
|
|
|
Total. |
- |
- |
1325minutes |
Relationship between 'Goals and Objectives' and 'Course Outcomes'
|
small exam |
final exam |
Total. |
1. |
2% |
18% |
20% |
2. |
2% |
18% |
20% |
3. |
2% |
18% |
20% |
4. |
2% |
18% |
20% |
5. |
2% |
18% |
20% |
Total. |
10% |
90% |
- |
Evaluation method and criteria
Final exam is evaluated on a 50-point and small exams a 10-point. When the final exam is F point and the small exam S point,
the overall score is S+F*(100-S)/90.
If you can solve simple problems that ask you about basic things of the topics covered in this class,
you are in the level of obtaining 60-point.
Textbooks and reference materials
We make materials public on a web page.
A reference book is:
- Programming languages concepts & constructs 2nd edition, Ravi Sethi, Addison-Wesley, 1996.
This class is largely based on this book. Currently it takes time to purchase this book.
A recommended book is:
- Concepts in programming languages, John C. Mitchell, Cambridge University Press, 2001.
Two copies of this book is available in the library in Omiya Campus.
Introduction to computer science and introduction to programming 1 and 2.
Office hours and How to contact professors for questions
- Monday 12:30-12:40 or any time agreed on by slack via zoom
Non-regionally-oriented course
Development of social and professional independence
- Course that cultivates a basic problem-solving skills
Course by professor with work experience
Work experience |
Work experience and relevance to the course content if applicable |
N/A |
N/A |
Education related SDGs:the Sustainable Development Goals
Last modified : Fri Mar 18 22:22:52 JST 2022