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