CSC 3112 Principles of Programming Languages
(a) Description
The course introduces students to the low level organization and operation of programming languages. It covers semantic and syntactic as well as operational issues in programming languages. The building blocks of programming languages are explored.
(b) Aims
The aims of the course are
• To give students fundamental knowledge in the organization and operation of programming languages
• To make students appreciate the possible future evolutions of pro- gramming languages
• To expose students to causes of operational (like performance, security, etc) characteristics of programming languages
(c) Learning outcomes
By the end of the course, students will be able to:
• Understand common language paradigms
• Know the different building blocks of a programming language
• Know how the different blocks of a programming language interact
(d) Teaching and Learning Pattern
Teaching will be largely by lectures, tutorials and class assignments
(e) Indicative Content
• Overview over programming language paradigms
• Common principles: syntax, syntax trees, formal semantics (de- notational and operational), variables and binding
• Types: role of types in programming and programming languages, types and their operations: products, sums, functions, recursive types, reference and array types
• Primarily imperative issues: control flow, arrays, pointers and references, parameter-passing mechanisms, scoping
• Type systems: strongly typed languages type checking (static vs. dynamic), type equivalence (by name vs. structural), overloading, coercion, polymorphism, type inference
• Binding: declarations and environments. Block structure: scope and visibility, stack discipline. Bound occurrences: static vs. dynamic binding.
• Encapsulation: information hiding, modules, abstract data types, classes
• Language implementation: parsing, code generation, garbage col- lection.
(f ) Assessment method
Assessment will be by Tests and Assignments (40%) and final written examination (60%)
(g) Reading lists
(i) Friedman, Wand, and Haynes, Essentials of Programming Languages, MIT Press, 2001
Share with your friends: |