






Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
An overview of the skills and knowledge gained in a programming languages course (cs3723). Topics covered include language syntax, lambda calculus, functional programming, type inference, tail recursion, object-oriented programming, language semantics, types, scopes, and runtime control. Advanced topics include implementing functions, exceptions, and abstractions.
Typology: Study notes
1 / 11
This page cannot be seen from the preview
Don't miss anything!







Language syntax (context-free grammar, parse tree, and AST) Lambda calculus (apply beta reduction) Functional programming (recursion in Scheme and ML) Type inference (from Scheme to ML or C) Tail recursion, loops, and continuation passing (methods of programming) Object-oriented programming (from ML datatype/abstype to C++ classes)
Language semantics (expressing power, interpretation vs. compilation, higher-order functions, functions as first-class objects) Types, type checking and type inference; Polymorphism Memory management (blocks, functions, classes and inheritance) Continuation and exceptions Abstractions, object-oriented abstractions, C++ and Java language design and implementations
What if we modify a language by adding …
Why high-level programming languages?
What can programming languages express?
Programming paradigms
Functional, imperative, object-oriented
In what ways can prog. languages be implemented? Give examples? What is the trade-off? What are the implementation phases
What is a type? What is it used for? Types are classification of values Different types of values have different layout/interpretation Type declaration and equivalence Name vs. structure type equivalence What is a type system How to determine types of variables and expressions?
Type checking vs. type inference
Type safety of languages Polymorphism Parametric, ad-hoc and subtype polymorphism
Concepts-- Implementing Functions How many ways can parameter values be passed?
What is a function closure? What is it used for?
Why is implementing higher-order functions hard?
What is tail recursion? Why is it equivalent to loops?
What is a continuation? What is continuation passing
Why are exceptions considered dynamic jumps?
Jump out of one or many levels of nested blocks Until reaching some program point to continue Pass information to the continuation point What is required from a language to support expections?
Are exceptions part of the type system?
OO abstractions are types
Encapsulation
Subtype polymorphism
Dynamically-bound functions
Implementation inheritance
C++/Java classes vs. ML datatype + scoping (nested functions) ML can simulate most features of C++/Java except
Java/C++ encapsulation ML function closure Java/C++ namespaces ML structures/signatures Java/C++ virtual methodsfunction pointers as values Java/C++ subtyping union types and pattern matching Implementation of classes C++ vs. Java Layout of class objects and Java interfaces Managing class member functions Design philosophies of the two languages