CSCI 3210: Theory of Programming Languages

Sect. 001



1620 - 1745

KOM 320

Tentative Schedule

  Date Lecture Topic Homework & Projects Links to Documents
Week 1 Jan. 16      
Jan. 18 Introduction: Syllabus, SVN Tutorial Presentation Assignment (Due: Feb. 4)
Presentation Requirement
Project1 (Due: Feb. 6)
Project2 (Due: Apr. 10)
How to access repository
Tortoise SVN Tutorial
Week 2 Jan. 23 Introduction: why studying theory of programming languages, language evaluation criteria(readability, writability, reliability, cost), language categories(imperative vs.. declarative)   Presentation Group
Jan. 25 Syntax and Semantics: Compilation/Pure Interpretation/Hybrid, Regular Expression    
Week 3 Jan. 30 Syntax and Semantics: Context Free Grammar, leftmost/rightmost derivation, parse tree, name and variables    
Feb. 1 Name, Scope, and Binding: variables, static/dynamic binding, type binding, storage binding Project3 (Due: Feb. 13) Deadline extended!  
Week 4 Feb. 6 Name, Scope, and Binding: static/dynamic scope, type system, type equivalence (name vs. structrual)    
Feb. 8 Type Systems: type compatibility, type inference, static/dynamic type checking    
Week 5 Feb. 13 1st Exam (introduction, RE, CFG) Sample questions    
Feb. 15 Functional Programming Language: Scheme (example)    
Week 6 Feb. 20 Data Types: descriptor, primitive data types (integers, floating-point, decimal, character, Boolean), enum      
                  (JavaExample), string
Project4 (Due: Mar. 1)  
Feb. 22 Data Types: Array (C# array tutorial), associative array    
Week 7 Feb. 27 Data Types: pointer, dangling pointer, memory leak, garbage collection(reference counters vs. mark-sweep)    
Mar. 1 Expressions and Assignment Statements: relational expression (==, ===), boolean expressions (AND, OR, &&, ||), short circuit evaluation, value and reference variables    
Week 8 Mar. 6 Spring Break. No classes    
Mar. 8 Spring Break. No classes    
Week 9 Mar. 13 Control Flow: if-then-else, switch/case statements, for-loop, while-loop, foreach loop, break/continue    
Mar. 15 Logic Programming: Prolog, examples Project5 (Due: 4:00am, Mar. 29)  
Week 10 Mar. 20 Logic Programming:    
Mar. 22 Subprogram: parameter passing: in, out and inout mode, function overloading    
Week 11 Mar. 27 2nd Exam (Name, Scope, Binding, Type Systems, Data Types, and functional programming language) Sample questions    
Mar. 29 Subprogram: Overloaded functions (default parameter), Generic programming (Java), Passing subprogram as parameter(shallow binding, deep binding, ad-hoc binding)    
Week 12 Apr. 3 Subprogram: variant # of function parameters (Java, C#, C++, Ruby, Python), Two dimensional array as function parameter Project6 (Due: Apr. 10)  
Apr. 5 Subprogram Implementation: Activation Record, call stack, call/return actions, dynamic link, static link    
Week 13 Apr. 10 Abstract Data Type and Object Oriented Programming: Project7 (Due: Apr. 17) PresentationRubric
Apr. 12 Presentation: Power point slides    
Week 14 Apr. 17 Presentation    
Apr. 19 3rd Exam (Expression/Assignment statement, control flow, subprogram, subprogram implementation, Prolog)    
Week 15 Apr. 24 Presentation    
Apr. 26 Presentation    
Week 16 Final Exam May 1, 1530 - 1730    

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.