CSCI 3210: Theory of Programming Languages

Sect. 001

Lecture

M T W R

1200 - 1400

KOM 320


Tentative Schedule

 

Date

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

Syllabus

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

$PUB

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