16.01.2015 Views

CS2013-final-report

CS2013-final-report

CS2013-final-report

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

programming languages. A major theme of this part of the course is seeing how formal specifications of a<br />

language (grammar, type-checking rules, and formal semantics) lead to an implementation of an interpreter for the<br />

language. Thus the grammar leads to a recursive descent compiler, type-checking rules lead to the implementation<br />

of a type-checker, and the formal semantics leads to the interpretation of abstract syntax trees.<br />

The two weeks on parallelism/concurrency support in programming languages reflects my belief that students<br />

need to understand how these features work and the variety of ways of supporting parallelism concurrency –<br />

especially as we don’t know what approach will be the most successful in the future.<br />

From the syllabus: “Every student passing this course should be able to:<br />

• Quickly learn programming languages and how to apply them to effectively solve programming<br />

problems.<br />

• Rigorously specify, analyze, and reason about the behavior of a software system using a formally defined<br />

model of the system's behavior.<br />

• Realize a precisely specified model by correctly implementing it as a program, set of program<br />

components, or a programming language.”<br />

Body of Knowledge coverage<br />

KA Knowledge Unit Topics Covered Hours<br />

PL<br />

Object-Oriented<br />

Programming<br />

All (with assumed knowledge of OOP from CS1 and CS2 in<br />

Java)<br />

5<br />

PL Functional Programming All (building on material from earlier course covering<br />

functional programming in ML)<br />

5<br />

PL<br />

Event-Driven & Reactive<br />

Programming<br />

Previously covered in CS 1 & CS 2 0<br />

PL Basic Type Systems All 5<br />

PL Program Representation All 2<br />

PL<br />

Language Translation and<br />

Execution<br />

All 3<br />

PL Syntax Analysis Lexing & top-down parsing (regular expressions and cfg’s<br />

covered in prerequisite)<br />

2<br />

PL Compiler Semantic Analysis AST’s, scope, type-checking & type inference 1<br />

PL<br />

Advanced Programming<br />

Constructs<br />

Lazy evaluation & infinite streams<br />

Control abstractions: Exception Handling, continuations,<br />

monads<br />

OO abstraction: multiple inheritance, mixins, Traits,<br />

multimethods<br />

Module systems<br />

Language support for checking assertions, invariants, and prepost-conditions<br />

3<br />

PL Concurrency and Parallelism Constructs for thread-shared variables and shared-memory<br />

synchronization<br />

Actor models
<br />

Language support for data parallelism<br />

2<br />

- 365 -

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!