CSCI 3210: Theory of Programming Languages

Sect. 001



1200 - 1400

KOM 320

Tentative Schedule



Lecture Topic

Homework & Projects

Links to Documents

Week 1

Jun. 4

 Introduction: Syllabus, SVN Tutorial, language evaluation criteria -- readability

Project1 (Readme.txt: Due Jun. 11, report due: Jul 2)

Project2 (Due Jul 2.)

How to access repository

Tortoise SVN Tutorial

Jun. 5

Class canceled. Please work on project1&2



Jun. 6

Syntax and Semantics: language evaluation criteria (writability, reliability), language implementation, language classification, Regular Expression


Jun. 7

Class canceled. Please work on project1&2



Week 2

Jun. 11

Syntax and Semantics: Context Free Grammar, Derivation (leftmost and rightmost), Parsing

Project3 (Due: 4:00am at Jun. 14)


Jun. 12

Name, Scope, and Binding: variable, binding, binding time, static/dynamic binding, type/storage binding, classification of variables, scope (static scoping vs dynamic scoping)

Disasters caused by numerical errors

Jun. 13

Type Systems: type equivalence (name and structural), type conversion, type compatible, type inference, primitive data types ( (integers, floating-point, decimal, character, Boolean, String)


Including both static and dynamic typing


Gradual Evolution


Cold War


Jun. 14

1st Exam (introduction, RE, CFG) Sample questions, enum (JavaExample), string



Week 3

Jun. 18

Functional Programming Language: Scheme (example)

Project4 (Due: 4:00am, June 21)

Why Functional Programming Matters?

Ten Reasons not to use functional programming language

Jun. 19

Data Types: array (jagged vs. rectangular array), and pointer (dangling pointer, memory leak)



Feb. 20

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


Jun. 21

2nd Exam (Name, Scope, Binding, Type Systems, and functional programming language) Sample questions  Control Flow (selection and loop control structures)



Week 4

Jun. 25

Logic Programming (example), labeled and unlabeled break/continue, foreach loop

Project5 (Due: 4:00am, Jun 29)

Project6 (Due: Jun. 27, at the beginning of class)


Jun. 26

Subprogram: subprogram fundamental, default parameter, variant # of function parameters (JavaC#C++RubyPython), Pass parameters, pass-by-value, pass-by-result, pass-by-value-result, pass-by-reference (value model v.s. reference model)



Jun. 27

Subprogram Implementation: passing function as parameter (C++, Java, C#), generic function (Java), activation record, call stack

Study guide for subprogram


Jun. 28

3rd Exam (Data Types, Expression/Assignment statement, control flow, Prolog)



Week 5

Jul. 2

Subprogram Implementation: static link



Jul. 3

Abstract Data Type and Object Oriented Programming


Jul. 4

Independence Day Holiday - No Classes



Jul. 5

Final Exam



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.