Sect.
001
|
Lecture
|
M W
|
12:40
– 2:05
|
COE
164
|
Tentative Schedule
|
Date |
Lecture
Topic |
Homework
& Projects |
Links
to Documents |
Week
1 |
Jan.
15 |
|
||
Jan.
17 |
Inclement
weather: University Closed |
|||
Week 2 |
Jan. 22 |
Introduction(lecture
notes): Go over syllabus, project1 and project2 assigned. Language Category (Declarative vs. Imperative), Language
Implementation (Compilation/Pure Interpretation/Hybrid/Just-In-Time) |
Project1 assigned (Language choice due
by Jan. 29, and final project due: Apr. 17) |
|
Jan. 24 |
Introduction: language evaluation
criteria (Readability, Writability, Reliability) |
|||
Week
3 |
Jan.
29 |
Syntax and Semantics(lecture
notes): Token, Regular Expression (concatenation, choice,
repetition), Context Free Grammar (CFG), derivation |
|
|
Jan.
31 |
Syntax and Semantics: derivation, parse tree, ambiguity, BNF and extensions; semantics (operational, denotational, axiomatic), variable (name, address, value, type, lifetime, scope) |
Website to check your regular
expression |
||
Week 4 |
Feb. 5 |
Name, Scope, and Binding (lecture
notes): Project3 assigned. binding (static binding vs. dynamic binding),
type binding (explicit vs. implicit, type inference, dynamic type
binding), Storage binding(table) |
Project3 assigned (Due: Feb. 12) |
|
Feb. 7 |
Name, Scope, and Binding: static/dynamic scoping, global scope,
referencing environment, review
for 1st exam. |
|||
Week
5 |
Feb.
12 |
Type Systems (lecture
notes): Type system: type equivalence (name vs. structural), type
compatibility, type inference, type checking (static vs. dynamic), strongly
typed |
|
|
Feb.
14 |
Project4 assigned (Due: Feb. 28) |
|||
Week 6 |
Feb. 19 |
1st Exam:week1 – week 4
|
|
|
Feb. 21 |
Functional Programming
Language (Lecture
notes): example |
|
||
Week
7 |
Feb.
26 |
Data Types (Lecture
Notes): Primitive Types (integer,
floating-point, decimal, character, boolean,
string), mutable and immutable string, scoped and unscoped enum in
C++. Java
Enum Example, Enum
Loop |
|
|
Feb.
28 |
Data
Types: array (ragged array, array
initialization), C#
array tutorial, associative array, array classification, array
implementation |
|
|
|
Week 8 |
Mar. 4 |
Spring Break - No Class |
|
|
Mar. 6 |
Spring Break - No Class |
|
||
Week
9 |
Mar.
11 |
Expressions and Assignment Statements
(Lecture
Notes): pointer, dangling pointer, memory leak, garbage collection
(reference counters vs. mark-sweep). arithmetic expression, precedence level,
|
Project5
assigned (Due: Mar. 20) |
|
Mar.
13 |
Control Flow(Lecture
Notes): side effects, operand evaluation order (Example),
relational expression, short circuit evaluation, assignment statement (value model vs.
reference model, example),
Review of 2nd Exam |
|
||
Week 10 |
Mar. 18 |
Control Flow: Two-way/Multi-way selection statement, Multi-way selection (Java
switch, C#
switch), loop (for-loop, while-loop) |
|
|
Mar. 20 |
2nd Exam (week 5 – week 9: Type systems, data types,
expression and assignment statement, functional programming language) |
|
||
Week
11 |
Mar.
25 |
Control
Flow: Go over 2nd exam, counter-controlled loop, foreach loop(example),
labeled and unlabeled break/continue statement |
|
|
Mar.
27 |
Project6 assigned
(Due: Apr. 8) |
|
||
Week 12 |
Apr. 1 |
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 |
|
|
Apr. 3 |
Subprogram: Subprogram overloading, generic
function (Example), passing
subprogram as parameters (Example),
function closure (Example),
Duck Typing (Example),
|
|
|
|
Week
13 |
Apr.
8 |
Subprogram
Implementation: subprogram passed as parameter (deep binding,
shallow binding, ad-hoc binding), activation
record, call stack |
Project7 assigned (Due: Apr. 15) |
|
Apr.
10 |
Abstract
Data Type(lecture
notes): review for 3rd exam, ADT(constructor, destructor,
access control), generic class(Java, C++), Inheritance,
override |
|||
Week 14 |
Apr. 15 |
Object Oriented Programming: abstract class and interface, polymorphism (C++, Java), subtype
vs subclassing |
|
|
Apr. 17 |
Object Oriented Programming: Go over
project 7, Java
nested classes |
|
|
|
Week
15 |
Apr.
22 |
3rd Exam (control flow, subprogram, subprogram implementation,
Prolog) |
|
|
Apr.
24 |
Object
Oriented Programming: |
|
|
|
Week 16 |
Apr. 29 |
Final Exam: 12:30 – 2:30 |
|
|
Class Resources
Please
take your time to go through the syllabus carefully and with patience. |
|
All
class examples, assignments, and source code are available in this directory.
|