Programming Language Design

Fall 2022 @NCU

Information

Serial Number
52048
Course Number
CE6145
Class Schedule
Thursday 234, E6-A303
Instructor
Prof. YungYu Zhuang
TA
You-Zhan Lin (email: qianmanage.lyz at gmail.com) and Hong-Wei Chen
Office Hours
by appointment
Course Objective
To learn the essentials and design philosophy of programming languages. By comparing similar concepts in different programming languages to understand why they were invented, see the differences between them, and know how to benefit from them even when they are supported by different syntax in various languages.
Course Description
This course will start by explaining the design dimensions in programming languages and discuss many programming paradigms along with their language constructs. We will talk about their origins, applications, merits, as well as demerits from the viewpoint of functionality and code modularity. Some relevant design patterns will also be mentioned and compared. Since these topics are hardly mentioned in existing textbooks, we will use our slides as the teaching materials. This year we will have many exercises for you to program in the classroom, so you will need to bring your laptop in these weeks.
Score
Attendance 30%, Exercise 40%, Final Project 30%

Outline

9/15
Syllabus
9/22
Design Dimensions and Code Modularity
9/29
Object-Oriented Programming
10/6
Language Support
10/13
Exercise 1
10/20
Functional Programming
10/27
Exercise 2
11/3
no lecture (midterm exam week)
11/10
Interface, Mixin, and Trait
11/17
no lecture (sports day)
11/24
Delegation, Polymorphism, and Multimethods
12/1
Exercise 3
12/8
Aspect-Oriented Programming, Event-Driven Programming, and Context-Oriented Programming
12/15
Exercise 4
12/22
Generic Programming and Metaprogramming
12/29
Exercise 5
1/5
no lecture (Project Implementation, Q&A)
1/12
no lecture (final exam week)
NCU eeclass course