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)