一、課程說明(Course Description)
This course introduces the fundamental concepts of programming languages
by discussing the design issues of the various language constructs, examining
the design choices for these constructs in some of the most common
languages, and comparing design alternatives. The course also prepare
students for the study of compiler design, by providing an in-depth discussion
of programming language structures, presenting a formal method of describing
syntax, and introducing approaches to lexical and syntatic analysis.

二、指定用書(Text Books)
R. Sebesta, Concepts of Programming Languages, 10th Edition

三、參考書籍(References)
* Kenneth C. Louden, Programming Languages: Principles and Practices,
Second Edition, Thomson Brooks/Cole,2003. (歐亞書局)
* John C. Mitchell, Concepts in Programming Languages, Cambridge
University, 2002, (新月書局)

四、教學方式(Teaching Method)
Lecture

五、教學進度(Syllabus)
Course Info (課程簡介)
Foundational Concepts of Programming Languages (程式語言簡介)
Syntax review;Syntactic ambiguity (語法誤謬)
Semantics (語意概念)
Names, Bindings, Type Checking, and Scopes (變數型態與範圍)
Expression (程式表達)
Control Structures (控制結構)
Subprogram (子程式)
Exception handling (例外處理)
Encapsulation (類型別)
Functional Programming (功能性程式)
Scheme programming (邏輯綱要程式)

六、成績考核(Evaluation)
出席 (10%)
作業 (50%)
期中考 (20%)
期末考 (20%)