Programming Language Design

Spring 2024 @NCU

Information

Serial Number
52045
Course Number
CE6145
Class Schedule
Monday 234, E6-A303
Instructor
Prof. YungYu Zhuang
TA
Yin-Jung Huang (email: eo1141495 at gmail.com)
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
Practice 60%, Project 40%

Tentative Schedule

2/19
Syllabus
Design Dimensions and Code Modularity
2/26
Practice 1
3/4
Object-Oriented Programming
3/11
Practice 2
3/18
Language Support
3/25
Practice 3
4/1
Functional Programming
4/8
Practice 4
4/15
Interface, Mixin, and Trait
4/22
Practice 5
4/29
Delegation, Polymorphism, and Multimethods
5/6
Practice 6
5/13
Aspect-Oriented Programming, Event-Driven Programming, and Context-Oriented Programming
5/20
Practice 7
5/27
Generic Programming and Metaprogramming
6/3
Practice 8
6/10
holiday (no lecture)
6/17
Q&A (no lecture)
NCU eeclass course