Topics
|
Course Learning Outcome
|
How is topic Covered?
|
How is Knowledge accessed?
|
Comments/Suggestions
About Learning Outcome and/or Topics (please use additional sheets if necessary)
|
Lecture
|
Hands-On
|
HW
|
Test
|
Lab
|
Project
|
|
-
Programming/Application domains;
|
L1
|
|
|
|
|
|
|
|
-
Language implementation: lexical elements, syntax and semantics; Language implementation methods; structure of a compiler.
|
L3
|
|
|
|
|
|
|
|
-
Language categories: Imperative languages; Functional languages; Logic programming languages; Object-oriented programming languages.
|
L2
|
|
|
|
|
|
|
|
-
Fundamental semantic issues of variables in an imperative language:
-
Attribute of variables; issues of aliases; Binding and binding times for variable attributes; classification of variables into categories (according to their binding times).
-
Type checking, strong typing, and type compatibility rules.
-
Scoping rules for names: static and dynamic; Referencing environment of a statement.
-
Named constants and variable initialization techniques.
|
L8, L9, L10, L11
|
|
|
|
|
|
|
|
-
Data types: Primitive data types; character string types; user-defined ordinal types; array types; record types; union types; pointer and reference types.
|
L12
|
|
|
|
|
|
|
|
-
Expressions and assignment statements: arithmetic expressions; operand evaluation order; type conversions; logical expressions; conditional expressions; assignment statements; compound assignments; conditional target; multiple assignments; mixed mode assignments.
|
L14, L15, L16
|
|
|
|
|
|
|
|
-
Control structures: Two-way selection, one-way selection, and multiple-way selection structures, Counter-controlled loops, logically-controlled loops, user-located loop control mechanisms; Unconditional branching and guarded commands.
|
L17
|
|
|
|
|
|
|
|
-
Subprograms: Fundamentals of subprograms; local referencing environments; Parameter-passing methods; Parameters that are subprogram names; Overloaded subprograms; Generic subprograms; User-defined overloaded operators; Coroutines.
|
L18
|
|
|
|
|
|
|
|
-
Implementing subprograms: semantics of function call and return; side effects; and memory management.
|
L13
|
|
|
|
|
|
|
|
-
Describing the elements of a programming language: Application with Java, PHP, JavaScript, C#, Objective C, Lua, . . ., etc.
|
L8 – L18
|
|
|
|
|
|
|
|
-
Describing the lexical elements of a programming language
-
Lexical elements of a programming language: character set, tokens, comments, rules for grouping characters into words, white spaces.
-
Regular sets and regular expressions
-
Using regular expressions to specify the tokens of a programming language.
-
Language recognizers and scanners.
|
L4, L5
|
|
|
|
|
|
|
|
-
Describing the syntax of a programming language
-
Context Free Grammars (Bakus Naur Forms), Extended Bakus Naur Forms and derivations.
-
Errors in Context free grammars: useless symbols and ambiguous grammars
-
Operator precedence and associativity of operators.
-
Parsing strategies: top-down parsing and bottom-up parsing.
-
Recursive descent parsers.
|
L6, L7
|
|
|
|
|
|
|
|