CSCI 3210: Theory of Programming Languages

Sect. 001



12:40 2:05

COE 164

Tentative Schedule



Lecture Topic

Homework & Projects

Links to Documents

Week 1

Jan. 15


Jan. 17

Inclement weather: University Closed

2024 HackMT

Week 2

Jan. 22

Introduction(lecture notes): Go over syllabus, project1 and project2 assigned. Language Category (Declarative vs. Imperative), Language Implementation (Compilation/Pure Interpretation/Hybrid/Just-In-Time)

Project1 assigned (Language choice due by Jan. 29, and final project due: Apr. 17)
Project2 assigned (Due: Apr. 17)

Jan. 24

Introduction: language evaluation criteria (Readability, Writability, Reliability)

Week 3

Jan. 29

Syntax and Semantics(lecture notes): Token, Regular Expression (concatenation, choice, repetition), Context Free Grammar (CFG), derivation


Jan. 31

Syntax and Semantics: derivation, parse tree, ambiguity, BNF and extensions; semantics (operational, denotational, axiomatic), variable (name, address, value, type, lifetime, scope)

Website to check your regular expression 

Week 4

Feb. 5

Name, Scope, and Binding (lecture notes): Project3 assigned. binding (static binding vs. dynamic binding), type binding (explicit vs. implicit, type inference, dynamic type binding), Storage binding(table)

Project3 assigned (Due: Feb. 12)


Feb. 7

Name, Scope, and Binding: static/dynamic scoping, global scope, referencing environment, review for 1st exam.

Week 5

Feb. 12

Type Systems (lecture notes): Type system: type equivalence (name vs. structural), type compatibility, type inference, type checking (static vs. dynamic), strongly typed


Feb. 14

Functional Programming Language (Lecture notes): (example)

Project4 assigned (Due: Feb. 28)

Week 6

Feb. 19

1st Exam:week1 week 4


Feb. 21

Functional Programming Language (Lecture notes): example


Week 7

Feb. 26

Data Types (Lecture Notes): Primitive Types (integer, floating-point, decimal, character, boolean, string), mutable and immutable string, scoped and unscoped enum in C++. Java Enum ExampleEnum Loop



Feb. 28

Data Types: array (ragged array, array initialization), C# array tutorial, associative array, array classification, array implementation



Week 8

Mar. 4

Spring Break - No Class



Mar. 6

Spring Break - No Class


Week 9

Mar. 11

Expressions and Assignment Statements (Lecture Notes): pointer, dangling pointer, memory leak, garbage collection (reference counters vs. mark-sweep). arithmetic expression, precedence level,

Project5 assigned (Due: Mar. 20)


Mar. 13

Control Flow(Lecture Notes): side effects, operand evaluation order (Example), relational expression, short circuit evaluation, assignment statement (value model vs. reference model, example), Review of 2nd Exam


Week 10

Mar. 18

Control Flow: Two-way/Multi-way selection statement, Multi-way selection (Java switchC# switch), loop (for-loop, while-loop)



Mar. 20

2nd Exam (week 5 week 9: Type systems, data types, expression and assignment statement, functional programming language)


Week 11

Mar. 25

Control Flow: Go over 2nd exam, counter-controlled loop, foreach loop(example), labeled and unlabeled break/continue statement


Mar. 27

Logic Program Language (Lecture Notes):: Prolog example

Project6 assigned (Due: Apr. 8)


Week 12

Apr. 1

Subprogram (Lecture Notes): subprogram fundamental, default parameter, variant # of function parameters (JavaC#C++RubyPython), parameter passing example(important to understand difference between pass-by-value and pass-by-reference for value-type and reference-type variables), passing two-dimensional array


Apr. 3

Subprogram: Subprogram overloading, generic function (Example), passing subprogram as parameters (Example), function closure (Example), Duck Typing (Example),


Delegates in C#


Generics Differences

Week 13

Apr. 8

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

Project7 assigned (Due: Apr. 15)

Apr. 10

Abstract Data Type(lecture notes): review for 3rd exam, ADT(constructor, destructor, access control), generic class(JavaC++), Inheritance, override

SOLID OO Design Principles

Week 14

Apr. 15

Object Oriented Programming: abstract class and interface,  polymorphism (C++, Java),  subtype vs subclassing



Nested Class in Java

Apr. 17

Object Oriented Programming: Go over project 7, Java nested classes



Week 15

Apr. 22

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



Apr. 24

Object Oriented Programming:



Week 16

Apr. 29

Final Exam: 12:30 2:30



Class Resources


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


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