CSCI 3210: Theory of Programming Languages

Sect. 001

Lecture

M W

1420 - 1545

KOM 320


Tentative Schedule

 

Date

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

Subprogram:

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

PresentationRubric

Apr. 10

Presentation: Power point slides

 

 

Week 14

Apr. 15

Presentation

 

 

Apr. 17

Presentation

 

 

Week 15

Apr. 22

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

 

 

Apr. 24

Presentation

 

 

Week 16

May 1

Final Exam: 1230 - 1430

 

 

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.