2017 Programming Language Design

Font size  SML

Register update notification mail Add to favorite lecture list
Academic unit or major
Graduate major in Mathematical and Computing Science
Instructor(s)
Masuhara Hidehiko  Wakita Ken 
Course component(s)
Lecture
Day/Period(Room No.)
Tue5-6(W332)  Fri5-6(W332)  
Group
-
Course number
MCS.T503
Credits
2
Academic year
2017
Offered quarter
2Q
Syllabus updated
2017/4/9
Lecture notes updated
2017/8/1
Language used
English
Access Index

Course description and aims

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.

Student learning outcomes

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 that will be developed

Intercultural skills Communication skills Specialist skills Critical thinking skills Practical and/or problem-solving skills
- - -

Class flow

A simple test 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.

Course schedule/Required learning

  Course schedule Required learning
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 Aspect-Oriented Programming: Crosscutting Concerns, Pointcut, Advice Confirm your understandings of the features introduced in the class by using actual programming languages
Class 9 Type System: Type Safety, Type Checking Confirm your understandings of the features introduced in the class by using actual programming languages
Class 10 Type System: Templates, Generic Types, Type Constraints Confirm your understandings of the features introduced in the class by using actual programming languages
Class 11 Type Inference: Basics, for Object-Oriented Languages, Soft Typing, Gradual Typing, Implicit Typing Confirm your understandings of the features introduced in the class by using actual programming languages
Class 12 The Expression Problem, Mixin Layers Confirm your understandings of the features introduced in the class by using actual programming languages
Class 13 Product Lines, Feature-Oriented Programming, Context-Oriented Programming, Features, Layers, Partial Methods Confirm your understandings of the features introduced in the class by using actual programming languages
Class 14 Metaprogramming, Macros Confirm your understandings of the features introduced in the class by using actual programming languages
Class 15 Metaobject Protocols, Computational Reflection, Mirrors Confirm your understandings of the features introduced in the class by using actual programming languages

Textbook(s)

Not specified

Reference books, course materials, etc.

Not Specified

Assessment criteria and methods

Students are evaluated by the end-of-term assignments. 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.

Related courses

  • .

Prerequisites (i.e., required knowledge, skills, courses, etc.)

None

Page Top