TU Delft
Year
NEDERLANDSENGLISH
Organization
Education Type
Education print this page print this page     
2013/2014 Electrical Engineering, Mathematics and Computer Science Bachelor Computer Science and Engineering
TI2605
Concepten van Programmeertalen
ECTS: 5
Responsible Instructor
Name E-mail
Prof.dr. E. Visser    E.Visser@tudelft.nl
Contact Hours / Week x/x/x/x
x/x/x/x
Course Language
Dutch
Expected prior knowledge
object-georienteerd programmeren
Course Contents
Het ontwerp van een programmeertaal wordt gevormd door een keuze uit een algemene verzameling van programmeertaal concepten. Regelmatig worden nieuwe talen geintroduceerd die concepten op een nieuwe manier combineren en soms nieuwe concepten introduceren. Tijdens zijn/haar carriere zal een informaticus met meer dan een generatie van programmeertalen moeten werken. Om zich snel een nieuwe programmeertaal eigen te maken moet een informaticus de basis principes in het ontwerp van programmeertalen kennen en een programmeertaal kunnen analyseren in termen van die principes.

Onderwerpen

Scope en binding: Declaratie en binding van namen, vrije en gebonden voorkomens van namen, hernoemen van namen, substitutie, dynamische vs statische scope, closures. Beschrijf scope en binding van keuzes van een programmeertaal. Herken en gebruik scope concepten in programma's.

Data structuren: Product en som typen, records/structures en
variants/unions, recursieve typen. Begrijp generieke concepten van data modelering. Begrijp en herken taal constructies voor het modeleren van data in verschillende talen. Modeleer recursief gestructureerde data zoals expressies en web pagina's (XML). Schrijf programma's om data volgens deze structuren te verwerken en transformeren.

Controle mechanismen: Recursie, dynamische binding, hogere-orde
functies als control-flow abstractie, pattern matching. Gebruik deze controle mechanismen in programma's voor het verwerken van recursieve data structuren. Begrijp hoe geavanceerde controle mechanismen zoals dynamische binding en hogere-orde functies uitgedrukt kunnen worden in termen van eenvoudigere controle mechanisme en data.

Modularisering en data abstractie: Abstractie mechanismen zoals
modulen, classen, interfaces, (hogere-orde) functies. Inheritance, prototype-based vs class-based inheritance. Decompositie van een niet-triviaal programmeer probleem in abstracties. Gebruik programmeer taal mechanismen om die abstracties te implementeren.

Mutatie en toestand: Mutable vs imutable cells, referenties,
gelijkheid. Persistenet vs tijdelijke data structuren. Ontwerp en implementeer persistente en tijdelijke datastructuren. Begrijp kosten en voordelen van gebruik van mutable state.

Geheugen beheer: Stack-based geheugen allocatie voor procedure en functie aanroepen. Heap-gebaseerd geheugen beheer, expliciete
allocatie en de-allocatie, garbage collectie. Tail recursie
eliminatie. Beschrijf hoe data wordt gealloceerd en hoe functie
aanroepen worden verwerkt. Begrijp en evalueer de relatieve kosten van expliciet geheugen beheer tov automatische garbage collection.

Syntax en interpretatie: Programma's als data, concrete en abstracte syntax, interpretatie. Schrijf een interpreter voor een eenvoudige functionele programmeertaal.

We bestuderen deze onderwerpen aan de hand van drie programmeertalen: Scala, JavaScript, C.
Study Goals
Begrijpen van programmeer talen in termen van concepten die individuele programmeertalen overstijgen. Afwegen van de voor- en nadelen van het gebruik van bepaalde concepten. Analyseren van programma's in termen van concepten. Toepassing van concepten in ontwerp van programma's.
Education Method
In 2013-2014 alleen practicum
Literature and Study Materials
Aanbevolen boeken:

"Programming Languages Design Concepts" David A. Watt. Publisher: Wiley, 2004.

"Concepts of Programming Languages (10th Edition)" Robert W. Sebesta. Publisher: Addison Wesley, 2012.

"Programming in Scala, Second Edition" by Odersky, Spoon, Venners. Publisher: Artima

"The C Programming Language" Second Edition by Kernighan & Ritchie (ISBN 978-0131103627)

"JavaScript: The Good Parts. Unearthing the Excellence in JavaScript" by Douglas Crockford. O'Reilly, 2008.
Assessment
practicum opgaven + computer tentamen