CSCI 3210: Theory of Programming Languages

Sect. 001



1420 - 1545

KOM 320

Tentative Schedule



Lecture Topic

Homework & Projects

Links to Documents

Week 1

Jan. 14

Introduction: Syllabus, Demo of SVN

Presentation Assignment (Due: Jan. 30)
Presentation Requirement

Project1 (Readme.txt: due: Jan. 30, report due: Apr. 10)
Project2 (Due: Apr. 10)

How to access repository
Tortoise SVN Tutorial

Jan. 16

Introduction: language evaluation criteria, classification of languages

Presentation Group

Week 2

Jan. 21

Martin Luther King, Jr. Day Holiday No Classes


Jan. 23

Syntax and Semantics: Compilation/Pure Interpretation/Hybrid, Regular Expression



Week 3

Jan. 28

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



Jan. 30

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

Project3 (Due: Feb. 11)


Week 4

Feb. 4

Name, Scope, and Binding: Storage binding(table), scope (static scoping and dynamic scoping), named constant



Feb. 6

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


Gradual Evolution

Cold War

Week 5

Feb. 11

1st Exam (Week1 Week3) Sample questions



Feb. 13

Functional Programming Language: (example)

Project4 (Due: 11:59pm, Feb. 25)

Ten Reasons not to use functional programming language

Week 6

Feb. 18

Data Types: Data types (integer, floating-point, decimal, character, boolean, string), mutable and immutable string,


Feb. 20

Data Types: enum,  Java Enum Example, array ( C# array tutorial)


Smart pointers( unique_ptr, shared_ptr, weak_ptr)

Week 7

Feb. 25

Data Types: pointer, dangling pointer, memory leak, garbage collection(reference counters vs. mark-sweep)



Feb. 27

Expressions and Assignment Statements:



Week 8

Mar. 4

Spring Break. No classes



Mar. 6

Spring Break. No classes



Week 9

Mar. 11

Logic Programming: Prolog example, more example

Project5 (Due: 11:59pm, Mar. 20)


Mar. 13

Control Flow: if-then-else, switch/case statements, for-loop, while-loop, foreach loop, (loop over enum)


Week 10

Mar. 18

Subprogram: Labeled and unlabeled break/continue statement, subprogram fundamental, default parameter, variant # of function parameters (JavaC#C++RubyPython)



Mar. 20

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



Week 11

Mar. 25

2nd Exam (Week3 Week 7: Name, Scope, Binding, Type Systems, Data Types, Expression/Assignment statement, and functional programming language ) Sample questions



Mar. 27


Project6 (Submit a hardcopy at the beginning of class on Apr. 8)


Week 12

Apr. 1

Subprogram Implementation: function closure, subprogram passed as parameter (deep binding, shallow binding, ad-hoc binding), activation record, call stack


Apr. 3

Abstract Data Type and Object Oriented Programming: ADT, encapsulation, access control, class (constructor, destructor), static v.s. dynamic binding



Week 13

Apr. 8

Object Oriented Programming: polymorphism, Single/multiple Inheritance, Nested Classes

Project7 (Due: Submit a hardcopy at the beginning of class on Apr. 22) Optional: Replace the lowest score of your first 6 projects


Apr. 10

Presentation: Power point slides



Week 14

Apr. 15




Apr. 17




Week 15

Apr. 22

3rd Exam (control flow, subprogram, subprogram implementation, ADT, OOP, Prolog)



Apr. 24




Week 16

May 1

Final Exam: 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.