1. Course number and name: CS 4850, Programming Languages 2. Credits and contact hours 3 cr. hrs, 3 contact hrs. 3. Instructor’s or course coordinator’s name: Dr. Wuwei Shen 4. Text book, title, author, and year: Programming Languages Principles and Paradigms, 2nd Edition by Allen Tucker and Robert Noonan. McGraw Hill, ISBN-10: 0-07-2866098. a. other supplemental materials None 5. Specific course information a. brief description of the content of the course (Catalog Description) This course will introduce some basic concepts related to programming languages. First, students will learn how to describe the syntax of a programming language. Based on the syntax, the type system and semantics of a programming language will be covered. As a best way to learn these concepts, students are going to apply these techniques in a C-like programming language. In addition, students are going to learn the run-time organization for a programming language andn in particularly some garbage collection algorithms will be introduced during the class. Last, students will concentrate on the object-oriented programming langauges and learn the advantages and disadvantages of object-oriented programming languages when developing a software system. b. prerequisites or co-requisites: Prerequisite: CS 3310 c. indicate whether a required, elective, or selected elective (as per Table 5-1) course in the program: Required Course 6. Specific goals for the course a. specific outcomes of instruction, ex. The student will be able to explain the significance of current research about a particular topic. 1. 2. 3. 4. 5. 6. 7. 8. 9. use BNF to define the syntax for a programming langauge use some formal method to describe the semantics of a programming language use parsing techniques to find syntax errors in a program based on the BNF notation understand the memory management in a computer understand the scope, type checking and name binding in modern programming languages understand some garbage collection algorithms used in modern programming languages explain how a compiler is implemented and be ready to implement a compiler with the aid of some tools compare different paradigms of modern programming languages describe and understand the advantages and disadvantages of the object-oriented languages when developing a software system. b. explicitly indicate which of the student outcomes listed in Criterion 3 or any other outcomes are addressed by the course. An ability to apply knowledge of computing and mathematics appropriate to the discipline (a1-a6, a8) (a) (b) An ability to analyze a problem, and identify and define the computing requirements appropriate to its solution (a6, a7 and a9) (c) An ability to design, implement, and evaluate a computer-based system, process, component, or program to meet desired needs (a6, a7 and a9) (d) An ability to function effectively on teams to accomplish a common goal (a7 and a9) (e) An understanding of professional, ethical, legal, security and social issues and responsibilities (not applicable) (f) An ability to communicate effectively with a range of audiences (a7 and a9) (g) An ability to analyze the local and global impact of computing on individuals, organizations, and society (a9) (h) Recognition of the need for and an ability to engage in continuing professional development (a9) (i) An ability to use current techniques, skills, and tools necessary for computing practice. (a7) (j) An ability to apply mathematical foundations, algorithmic principles, and computer science theory in the modeling and design of computer-based systems in a way that demonstrates comprehension of the tradeoffs involved in design choices. (a9) (k) An ability to apply design and development principles in the construction of software systems of varying complexity. (a9) be able explain how a compiler is implemented and be ready to implement a compiler with the aid of some tools compare different paradigms of modern programming languages describe and understand the advantages and disadvantages of the object-oriented languages when developing a software system. 1. 7. Brief list of topics to be covered Syntax and semantics of Programming Langauges, Context free grammar, Regular grammar, regular expression, name, scoping, runtime organization, object-oriented programming languages, and the LSP principle etc.