CSCI 3210: Theory of Programming Languages

Sect. 001

Lecture

M W

12:40 – 2:05

COE 164


Tentative Schedule

 

Date

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

Virtuality

 

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

Syllabus

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

$PUB

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