CSCI 3210: Theory of Programming Languages

CSCI 3210: 9:45 – 12:00 BAS S270


Tentative Schedule

 

Date

Lecture Topic

Homework & Projects

Week 1

May 28

Introduction (lecture notes): Go over syllabus, project1 and project2 assigned. language evaluation criteria (Readability, Writability, Reliability)

Project1 (Due: June 21)

Project2 (Optional) (Due: June 21)

In this class, all projects are due at 11:59pm of the due day.

May 29

Introduction: Language Category (Declarative vs. Imperative), Language Implementation (Compilation/Pure Interpretation/Hybrid/Just-In-Time), Token, Regular Expression (concatenation, choice, repetition), Context Free Grammar, BNF Extension

DataFlowProgramming

 

Website to check your regular expression.

May 30

Syntax and Semantics (lecture notes): derivation, parse tree, ambiguity; semantics (operational, denotational, axiomatic), variable (name, address, value, type, lifetime, scope), binding (static binding vs. dynamic binding), type binding (explicit vs. implicit, type inference, dynamic type binding)

Project3 assigned (Due: June 3)

Week 2

June 3

Name, Scope, and Binding (lecture notes): Storage binding(table), static/dynamic scoping, global scope, referencing environment, review for 1st exam.

June 4

Type Systems (lecture notes): Type system: type equivalence (name vs. structural), type compatibility, type inference, functional programming language introduction

June 5

1st Exam (introduction, RE, CFG, Name, Scope and Binding)

 

June 6

Functional Programming Language (Lecture notes): (example), primitive data types

Project4 assigned (Due: June 11)

Week 3

June 10

Data Types (Lecture Notes): mutable and immutable string, scoped and unscoped enum in C++. Java Enum ExampleEnum Loop; array (ragged array, array initialization)C# array tutorial, associative array, array classification, array implementation, pointer, dangling pointer, memory leak

June 11

Expressions and Assignment Statements (Lecture Notes): garbage collection (reference counters vs. mark-sweep), arithmetic expression, relational expression, precedence level, side effects, operand evaluation order (Example), short circuit evaluation 

Project5 Assigned (Due: June 12)

June 12

Control Flow(Lecture Notes): Two-way/Multi-way selection statement, Multi-way selection (Java switchC# switch), loop (for-loop, while-loop, foreach loop(example) ), labeled and unlabeled break/continue statement

June 13

2nd Exam (Type Systems, Data Types, and functional programming language, expressions and assignment statements)

Week 4

June 17

Logic Programming (Lecture Notes): Go over 2nd exam, Prolog example

Project6 Assigned (Due: June 21)

June 18

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, passing subprogram as parameters (Example)

June 19

Juneteenth Holiday - No Classes/University Closed

June 20

Subprogram: overloading, generic function (Example), function closure (Example), Review of 3rd exam, ADT(constructor, destructor, access control), generic class(JavaC++), ADT(constructor, destructor, access control), generic class(JavaC++)

Project7 Assigned (Due: June 24)

Week 5

June 24

Abstract Data Type (Lecture Notes):

Object Oriented Programming (Lecture Notes): Inheritance, overriding, abstract class and interface, polymorphism (C++, Java), Java nested classes, subtype vs subclassing

June 25

3rd Exam (Control flow, Subprogram, Prolog)

June 26

No class today.

 

June 27

Final Exam: (Scheme and Prolog will not be covered)

 

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.