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.

How are students assessed<br />

There is one homework assignment every two weeks involving both a theoretical component, in which students are<br />

expected to prove theorems about languages, and a practical component, in which students are expected to<br />

implement a language concept. The theoretical component develops a new idea or expands on an idea presented in<br />

lecture, and the practical component builds on the theory to guide the implementation. There are two examinations,<br />

an 80 minute open-book midterm examination, and a 180 minute open-book <strong>final</strong> examination. Homework accounts<br />

for 50% of the grade, the midterm 20%, and the <strong>final</strong> 30%. Letter grades are assigned relative to overall class<br />

performance, with borderline cases influenced by extra credit problems, participation in class and recitation, and<br />

effort displayed through attendance at office hours and general quality of work. The assignments take<br />

approximately 12 hours to complete.<br />

Course textbooks and materials<br />

Practical Foundations for Programming Languages by Robert Harper, Cambridge University Press, 2013. All<br />

programs are written in Standard ML. All written material is typeset in LaTeX. All homework is graded by hand by<br />

the teaching assistants.<br />

Why do you teach the course this way<br />

The course has a reputation for being very challenging, but also very stimulating. The students appreciate greatly<br />

the power of types as a scientific theory of programming, and develop great facility with using types and operational<br />

semantics to model computational phenomena and to use these models to prove theorems about systems.<br />

This course is not in any way a taxonomy of programming languages, nor is it a tour of the zoo of popular<br />

languages. Rather it provides a solid grounding in the design, analysis, and implementation of programming<br />

languages, which express a rich variety of computational phenomena.<br />

Body of Knowledge coverage<br />

KA Knowledge Unit Topics Covered Hours<br />

AL Basic Analysis Work, Span,<br />

2<br />

Asymptotics<br />

DS<br />

Sets, Relations, Inductive definitions 1<br />

Functions<br />

DS Logic Constructive and 1<br />

Classical Logic<br />

DS Proof techniques Structural induction, 1<br />

rule induction<br />

OS Concurrency Synchronization, 6<br />

Communication<br />

OS Scheduling Scheduling parallel 1<br />

computations<br />

PD<br />

Parallelism<br />

Deterministic<br />

3<br />

Fundamentals<br />

parallelism, fork/join,<br />

futures<br />

PD Parallel Decomposition Fork/Join, Data 1<br />

PD<br />

PL<br />

PL<br />

Parallel Algorithms,<br />

Analysis, and<br />

Programming<br />

Object-oriented<br />

Programming<br />

Functional<br />

Programming<br />

Parallelism<br />

Parallelizability, Divide<br />

and Conquer, Pipelining<br />

Dynamic Dispatch,<br />

Static and Dynamic<br />

Classification<br />

Pattern matching,<br />

Recursion,<br />

Continuations,<br />

Parallelism, Laziness<br />

- 382 -<br />

1<br />

3<br />

12

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

Saved successfully!

Ooh no, something went wrong!