Programming Language Design

Fall 2024 @NCU

Information

Serial Number
52045
Course Number
CE6145
Class Schedule
Monday 234, E6-A303
Instructor
Prof. YungYu Zhuang
TA
Shang-Chun Tseng (email: a108502562 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

9/9
Syllabus
9/16
Design Dimensions and Code Modularity
9/23
Practice 1
9/30
Object-Oriented Programming
10/7
Practice 2
10/14
Language Support
10/21
Practice 3
10/28
no lecture (midterm exam week)
11/4
Functional Programming
11/11
Practice 4
11/18
Interface, Mixin, and Trait
11/25
Practice 5
12/2
Delegation, Polymorphism, and Multimethods
12/9
Practice 6
12/16
Aspect-Oriented Programming, Event-Driven Programming, and Context-Oriented Programming
12/23
Practice 7
12/30
Generic Programming and Metaprogramming
1/6
Practice 8
NCU eeclass course