CSCI 3210: Theory of Programming Languages

Sect. 001



1420 - 1545

KOM 320

Tentative Schedule



Lecture Topic

Homework & Projects

Links to Documents

Week 1

Jan. 16




Jan. 17

Introduction: (Canceled. Please check your MTMail)

Week 2

Jan. 22

Introduction: Syllabus, SVN Tutorial

 Presentation Assignment (Due: Feb. 5)
Presentation Requirement
Project1 (Due: Feb. 5)
Project2 (Due: Apr. 9)

How to access repository
Tortoise SVN Tutorial

Jan. 24

Introduction: language evaluation criteria, language classification


Presentation Group

Week 3

Jan. 29

Syntax and Semantics: Tokens, Lexemes, Regular Expression, CFG



Jan. 31

Syntax and Semantics: CFG, derivation, parse tree, ambiguity

Project3(Due: Feb. 14)


Week 4

Feb. 5

Name, Scope, and Binding: Name, binding (static binding vs. dynamic binding), type binding (explicit vs. implicit, type inference, dynamic type binding)



Feb. 7

storage binding (table), Scope (static scoping)



Week 5

Feb. 12

1st Exam (introduction, RE, CFG) Sample questions



Feb. 14

Name, Scope, and Binding: Dynamic scoping, named constant



Week 6

Feb. 19

Functional Programming Language: (example)

Project4 (Due. Mar.  1)

Ten Reasons not to use functional programming language

Feb. 21

Type Systems: type equivalence (name v.s. type), type compatibility, type inference, type checking


Gradual Evolution

Cold War

Week 7

Feb. 26

Data Types: type checking (static v.s. dynamic), strong typing v.s. weak typing. Data types (integer, floating-point, decimal, character, boolean, string, enumeration), mutable and immutable string,  Java Enum Example


Including both static and dynamic typing

Feb. 28

Data Types: Array (C# array tutorial), associative array,



Week 8

Mar. 5

Spring Break. No classes



Mar. 7

Spring Break. No classes



Week 9

Mar. 12

Expressions and Assignment Statements: pointer, dangling pointer, memory leak, garbage collection(reference counters vs. mark-sweep),  relational expression (==, ===), boolean expressions (AND, OR, &&, ||),


S-STEM Scholarship in Computer Science

Mar. 14

Logic Programming: short circuit evaluation, value and reference variables, Prolog example

Project5 (Due: Mar. 28)


Week 10

Mar. 19

Control Flow: if-then-else, switch/case statements, for-loop, while-loop, foreach loop, break/continue



Mar. 21

2nd Exam (Name, Scope, Binding, Type Systems, Data Types, and functional programming language) Sample questions



Week 11

Mar. 26

Subprogram: Went through 2nd exam



Mar. 28

Subprogram: subprogram fundamental, default parameter, variant # of function parameters (JavaC#C++RubyPython)

 Project6 (Due: Apr. 9)

Project2 is Due at April 4.


Week 12

Apr. 2

Subprogram: Pass parameters, pass-by-value, pass-by-result, pass-by-value-result, pass-by-reference (value model v.s. reference model)


Apr. 4

Subprogram Implementation: activation record, call stack



Week 13

Apr. 9

Abstract Data Type and Object Oriented Programming:

Project7 (Due: Apr. 16)


Apr. 11

Presentation: Power point slides



Week 14

Apr. 16




Apr. 18

3rd Exam (Expression/Assignment statement, control flow, subprogram, subprogram implementation, Prolog)



Week 15

Apr. 23




Apr. 25




Week 16

Final Exam

May 2, 1230 - 1430



Class Resources


Please take your time to go through the syllabus carefully and with patience.


All class examples, assignments, and source codes are available in this directory.