Course title
L09303002
Principles of Programming Languages

SASANO Isao Click to show questionnaire result at 2018
Course description
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.
Purpose of class
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.
Goals and objectives
  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
Language
Japanese(English accepted)
Class schedule

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.
Feedback on exams, assignments, etc.
ways of feedback specific contents about "Other"
Feedback in the class
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.
Prerequisites
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
Regionally-oriented
Non-regionally-oriented course
Development of social and professional independence
  • Course that cultivates a basic problem-solving skills
Active-learning course
N/A
Course by professor with work experience
Work experience Work experience and relevance to the course content if applicable
N/A
Education related SDGs:the Sustainable Development Goals
    Last modified : Sat Sep 09 05:41:31 JST 2023