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 |
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 Example, Enum
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
switch, C#
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 (Java, C#, C++, Ruby, Python), 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(Java, C++), ADT(constructor, destructor,
access control), generic class(Java, C++) |
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
Please
take your time to go through the syllabus carefully and with patience. |
|
All
class examples, assignments, and source codes are
available in this directory. |