COMPUTER SCIENCE


Course Credits: 3 Units

Prerequisites: CMSC 123

CMSC 124: Design and Implementation of Programming Languages

Course Description

This course covers the fundamental concepts in the design and implementation of current high-level programming languages; syntax and translation; language definition structures; elementary and structured data types; abstraction mechanisms; sequence and data control; and run time considerations.

Course Learning Outcomes

After completion of the course, the student should be able to:

  1. Compare the run time behavior of programs written in different languages.
  2. Evaluate the structure of programming language specification, analysis, and implementation.
  3. Analyze and solve programs related to lexical analysis, parsing and translation problems.
  4. Develop the skills necessary to learn new programming languages quickly.
  5. Attain reasonable proficiency in the Git, GitHub, CLISP, Prolog, and R languages.
Course Outline

UNIT 1. Introduction to Programming Languages

  1. Preliminaries
  2. Evolution of the Major Programming Languages

UNIT 2. Describing Syntax and Semantics

  1. The General Problem of Describing Syntax
  2. Formal Methods of Describing Syntax
  3. Attribute Grammars
  4. Describing the Meanings of Programs: Dynamic Semantics

UNIT 3. The Structure of a Compiler

  1. Lexical Analysis
  2. Syntax Analysis
  3. Semantic Analysis
  4. Intermediate Code Generation
  5. Code Optimization
  6. Code Generation
  7. Symbol-Table Management

UNIT 4. Names, Bindings, and Scope

  1. Names
  2. Variables
  3. The Concept of Binding
  4. Scope and Lifetime
  5. Referencing Environment
  6. Named Constant

UNIT 5. Data Types

  1. Primitive Data Types
  2. Character String Types
  3. Enumeration Types
  4. Array Types
  5. Associative Arrays
  6. Record Types
  7. Tuple Types
  8. List Types
  9. Union Types
  10. Pointer and Reference Types

UNIT 6. Expressions and Assignment Statements

  1. Arithmetic Expressions
  2. Overload Operators
  3. Type Conversions
  4. Relational and Boolean Expressions
  5. Short-Circuit Evaluation
  6. Assignment Statements
  7. Mix-mode Assignment

UNIT 7. Statement-Level Control Structures

  1. Selection Statements
  2. Iterative Statements
  3. Unconditional Branching

UNIT 8. Subprograms

  1. Fundamentals of Subprograms
  2. Design Issues for Subprograms
  3. Local Referencing Environments
  4. Parameter-Passing Methods
  5. Overloaded Subprograms
  6. Generic Subprograms
  7. UNIT 9. Implementing Subprograms

    1. The General Semantics of Calls and Returns
    2. Implementing “Simple” Subprograms
    3. Implementing Subprograms with Stack-Dynamic Local Variables
    4. Nested Subprograms
    5. Blocks
    6. Implementing Dynamic Scoping