TU Delft
Year
NEDERLANDSENGLISH
Organization
Education Type
Education print this page print this page     
2014/2015 Electrical Engineering, Mathematics and Computer Science Bachelor Computer Science and Engineering
TI2606
Concept of Programming Languages
ECTS: 5
Responsible Instructor
Name E-mail
Prof.dr. E. Visser    E.Visser@tudelft.nl
Contact Hours / Week x/x/x/x
0/0/4/0 hc; 0/0/4/0 lab
Education Period
3
Start Education
3
Exam Period
3
4
Course Language
English
Expected prior knowledge
object-oriented programming, software testing
Course Contents
The design of a programming language is the result of a selection from a general collection of programming language concepts. With some frequency, new languages are introduced that combine concepts in an novel manner and sometimes introduce new concepts. During his/her career, a computer scientist will have to work with more than one generation of programming languages. In order to learn new programming languages, a computer scientist should understand the basic principles in the design of programming languages.

Topics

Scopen and binding: Declaration and binding of names, free and bound instances of names, renaming, substitution, dynamic vs static scope, closures. Describe scope and binding features of a programming languages. Recognize and use scope concepts in programs.

Data structures: Product and sum types, records/structs and variants/unions, recursive types. Understand generic concepts of data modelling. Understand and recognise language constructs for modelling of data in different languages. Modeling recursive data types such as expressions and web pages (XML). Write programs to process and transform recursively structured data.

Control mechanisms: Recursion, dynamic binding, higher-order functions as control-flow abstraction, pattern matching. Use these control mechanisms in programs for processing of recursive data structures. Understand how advanced control-flow mechanisms such as dynamic binding and higher-order functions can be encoded in terms of simpler control-flow mechanisms and data.

Modularization and data abstraction: Abstraction mechanisms such as modules, classes, interfaces, higher-order functions. Inheritance, prototype-based vs class-based inheritance. Decomposition of a non-trivial programming problem components. Use of programming language mechanisms for implementing such components.

Mutation and state: Mutable vs immutable cells, references, equality. Persistent vs transient data structures. Design and implementation of persistent and transient data structures. Understand the costs and advantages of the use of mutable state.

Memory management: Stack-based memory allocation for procedure and function calls. Heap-based memory management, explicit allocation and de-allocation, garbage collection. Tail recursion elimination. Describe how data is allocated and how function calls are processed. Understand and evaluate the relative costs of explicit memory management vs automatic garbage collection.

Syntax and interpretation: Programs as data, concrete vs abstract syntax, interpretation.

We study the topics above by studying the implementation of interpreters for little languages with the typical features for each topic.
Study Goals
Understanding of programming languages in terms of concepts that transcend individual languages. Considering the advantages and disadvantages of the use of particular concepts. Analyis of programs in terms of concepts. Application of concepts in the design of programs. Encoding concepts in interpreters.
Education Method
The course consists of:

* lectures with assignments for students
* self study of the course books
* making of lab assignments in WebLab

During lab hours (on Wednesday morning) teaching assistants will be available for helping students.

Students are expected to bring to the lecture pen and paper for making notes. The use of electronic devices such as laptops, tables, and phones is not permitted during lectures. However, during selected sections of the lectures, students will be invited to make assignments in WebLab. For this purpose, please bring your laptop to the lectures.
Literature and Study Materials
"Programming and Programming Languages" by Shriram Krishnamurthi, 2014. The book is available online for free at http://papl.cs.brown.edu/2014/

As programming language, we use Scala. Recommended book for learning Scala:

"Programming in Scala, Second Edition" by Odersky, Spoon, Venners. Publisher: Artima. http://www.artima.com/shop/programming_in_scala_2ed
Assessment
The grade for the course is determined by the average of

- Exam: The grade for the final exam (50%)
- Lab: The grade for the lab assignments (50%)

To pass the course, each of these grades (Exam and Lab) should be 5.0 or higher, and the final grade should be 5.75 or higher (and will be rounded to the nearest half grade point).

The Lab grade is the average of the grades for the weekly lab assignments. In order for a submission to a lab assignment to be considered for grading (and thus receive a grade larger than 0), it should be submitted before the deadline. A deadline consists of two dates. A submission submitted by the first deadline receives full grades. A submission submitted before the second deadline (two days after the first), gets a penalty of at most 4 grade points, computed in proportion to the late time. All lab assignments should have at least a 3.5 grade.

A student may miss to submit (or get a lower grade than 3.5 for) at most one of the lab assignments, which should then be compensated by making the extra lab assignment for the course.

All assignments and exams will be provided through WebLab http://weblab.tudelft.nl

Students should sign in to WebLab using the ‘Single Sign on for TU Delft’ option in order to get credit at TU Delft. This option automatically registers the student with TU Delft netid and student number to the course.

Students should enroll for the course in WebLab no later than the second week of the course, but preferably before the start of the course.

The exam will be performed in a computer room. Students should register for the exam in Osiris and in WebLab. An exam key will be handed out in the exam room, which will be needed to sign in to the exam section. No books or notes may be used during the exam.

Students with a final grade of 8.5 or higher qualify to attend the bonus lectures in May.
Permitted Materials during Tests
No books or notes may be used during the exam.
Enrolment / Application
All assignments and exams will be provided through WebLab http://weblab.tudelft.nl

Students should sign in to WebLab using the ‘Single Sign on for TU Delft’ option in order to get credit at TU Delft. This option automatically registers the student with TU Delft netid and student number to the course.

Students should enroll for the course in WebLab no later than the second week of the course, but preferably before the start of the course.
Judgement
- Exam: The grade for the final exam (50%)
- Lab: The grade for the lab assignments (50%)