2025 (Current Year) Faculty Courses School of Computing Department of Mathematical and Computing Science Graduate major in Mathematical and Computing Science
Programming Language Design
- Academic unit or major
- Graduate major in Mathematical and Computing Science
- Instructor(s)
- Hidehiko Masuhara
- Class Format
- Lecture (Face-to-face)
- Media-enhanced courses
- -
- Day of week/Period
(Classrooms) - 5-6 Mon (W8E-306(W832)) / 5-6 Thu (W8E-306(W832))
- Class
- -
- Course Code
- MCS.T503
- Number of credits
- 200
- Course offered
- 2025
- Offered quarter
- 4Q
- Syllabus updated
- Dec 4, 2025
- Language
- English
Syllabus
Course overview and goals
There are various kinds of programming languages. There are also various kinds of linguistic mechanisms. Those mechanisms are strongly motivated by requirements to improve modularity, reusability, safety, and son on, and are supported by theories of semantics, modularization, and type systems. This course aims at understanding those linguistic mechanisms at a glance so that the participants will acquire not only important points in the language designs, but also hints for software development with those programming languages.
Course description and aims
The goal of the course is to acquire an overview of the concepts in programming language designs by understanding the theoretical foundations of programming language constructs and the variations of those constructs in concrete programming languages. The course also aims at understanding the essence of programming independent of particular programming languages, by learning deep knowledge on programming languages as applications of theories of computer science.
The course focuses on "surface" language features, which are the mechanisms that the programmer directly use. In particular, the features found in object-oriented programming languages and their derivations.
Keywords
Parnas' Principle of Modularization, Information Hiding, Abstract Datatype, Liskov's Substitution Principle, Object-Orientation, Class, Inheritance, Delegation, Reusability, Design Patterns, Multiple Inheritance, Traits, Feature-Oriented Programming, Aspect-Oriented Programming, Crosscutting Concerns, Advice, Dependency Injection, Context-Oriented Programming, Layer Activations, Type Safety, Algebraic Datatypes, Subtyping, Type Inference, Polymorphic Types, The Expression Problem, Module Types, Generic Types, Templates, Metaprogramming, Macro
Competencies
- Specialist skills
- Intercultural skills
- Communication skills
- Critical thinking skills
- Practical and/or problem-solving skills
Class flow
A simple quiz is given in each class to aid students' understanding of the issues to be discussed in the class. The class will cover the background of language functions being designed, basic functions, and variation. Lecture will be held mainly in debate format. The simple quizzes are not intended for grading.
For helping non-Japanese speakers, the slides are written in English. Questions in English and request for English clarifications are welcome in the class.
Course schedule/Objectives
| Course schedule | Objectives | |
|---|---|---|
| Class 1 | Course Introduction |
not specified |
| Class 2 | Modularity, Parnas' Modularization Principle, Dependency, Information Hiding |
Confirm your understandings of the features introduced in the class by using actual programming languages |
| Class 3 | Abstract Datatypes, Interface and Implementation, CLU, Liskov's Substitution Principle, Encapsulation |
Confirm your understandings of the features introduced in the class by using actual programming languages |
| Class 4 | Object-Oriented Programming, Class, Inheritance, Instance, Methods |
Confirm your understandings of the features introduced in the class by using actual programming languages |
| Class 5 | Object-Oriented Programming, Delegation, Instance-based Objects, Multiple Inheritance, Multimethods |
Confirm your understandings of the features introduced in the class by using actual programming languages |
| Class 6 | Reusability, Library and Framework, Design Patterns |
Confirm your understandings of the features introduced in the class by using actual programming languages |
| Class 7 | Reusability: Mixins, Traits |
Confirm your understandings of the features introduced in the class by using actual programming languages |
| Class 8 | Virtual Machines: machine language, bytecode language, optimizations |
Confirm your understandings of the features introduced in the class by using actual programming languages |
| Class 9 | Virtual Machines: dynamic compilation, method dispatching, optimizations |
Confirm your understandings of the features introduced in the class by using actual programming languages |
| Class 10 | Language Frameworks: meta-circular interpreter, compiler-compiler, language frameworks, partial evaluation |
Confirm your understandings of the features introduced in the class by using actual programming languages |
| Class 11 | Meta-Language Frameworks: Futamura projections, RPython, Graal/Truffle |
Confirm your understandings of the features introduced in the class by using actual programming languages |
| Class 12 | Followups 1 |
Confirm your understandings of the features introduced in the class by using actual programming languages |
| Class 13 | Followups 2 |
Confirm your understandings of the features introduced in the class by using actual programming languages |
| Class 14 | Followups 3 |
Confirm your understandings of the features introduced in the class by using actual programming languages |
| Class 15 | . |
. |
Study advice (preparation and review)
To enhance effective learning, students are encouraged to spend approximately 100 minutes preparing for class and another 100 minutes reviewing class content afterwards (including assignments) for each class.
They should do so by referring to textbooks and other course material.
Textbook(s)
Not specified
Reference books, course materials, etc.
Not Specified
Evaluation methods and criteria
Students are evaluated by the end-of-term assignments and an oral examination. The assignments require to experiment the concepts taught is the course by using concrete programming languages. The evaluation criteria is the degree of understandings of those concepts with respect to applications to actual programming. The oral examination questions based on the submitted report.
Related courses
- .
Prerequisites
None
Other
Students who do not speak Japanese are also welcome. The instructor will talk in Japanese, but the slides are written in English, and students can ask questions in English. Every year taught in Japanese, there were a few non Japanese speakers successfully took this class.