SluitenHelpPrint
Switch to English
Cursus: 201400537
201400537
Programming Paradigms
Cursus informatie
Cursus201400537
Studiepunten (ECTS)15
CursustypeModule
VoertaalEngels
Contactpersoonprof.dr.ir. A. Rensink
E-mailarend.rensink@utwente.nl
Docenten
Docent
dr.ir. M.E.T. Gerards
Docent
prof.dr. M. Huisman
Docent
prof.dr. J.C. van de Pol
Docent
prof.dr.ir. A. Rensink
Contactpersoon van de cursus
prof.dr.ir. A. Rensink
Collegejaar2017
Aanvangsblok
2B
AanmeldingsprocedureZelf aanmelden via OSIRIS Student
Inschrijven via OSIRISJa
Leerdoelen
After successful completion of this module, the student is able to:
  • Describe the major programming paradigms (FP, LP and CP) and their essential characteristics and differences
  • Write basic programs in all major programming paradigms
  • Solve non-trivial programming problems in FP and CP
  • Explain the concepts and importance of typing, in terms of FP and CC
  • Explain and use the typical types and data structures in FP and CP
  • Explain and take advantage of the evaluation and execution mechanisms of FP (lazy evaluation) and CP (hardware-related aspects, concurrency models)
  • Explain and use the following concepts of FP: recursion, list comprehension, higher order functions, parameter accumulation, function composition, lazy evaluation.
  • Explain and use the following concepts of CP: interleaving, fairness, deadlock, memory models, synchronisation, locking.
  • Explain and use the following concepts of CC: syntactic and semantic analysis, scanning, parsing, run-time organisation, code generation, optimisation.
  • Write a compiler for a non-trivial imperative language with concurrency features generating a given (dedicated) instruction set.
Inhoud
Up until this point, the students have mainly learned imperative, object-oriented programming. This module will extend their awareness and ability in the following directions:
  • Non-imperative programming: in particular, the functional paradigm (extensively) and the logic paradigm (briefly)
  • Programming for concurrent systems: concepts, data structures and algorithms for multi-core and GPU-based parallelism
  • Programming language technology: parsing, compilation and code generation
These three strands are initially taught separately and come together in the module project, where the students develop a compiler for their own language with support for parallelism, generating code that runs on an extensible hardware emulator written in a functional language.
 
The module presents a mixture of
  • Lectures to provide an overview and motivation of the material
  • Exercise sessions to get familiar with the concepts
  • Laboratory exercises to practice the acquired skills
  • Small projects and a larger final project.
Voorkennis
-
DEELNEMENDE OPLEIDING
B-CS
Verplicht materiaal
Studiemateriaal
Compiler Construction and Programming language technology: Engineering a Compiler (Torczon & Cooper)
Studiemateriaal
Concurrent Programming and Concurrent and Distributed Programming: Java Concurrency in Practice, 1/E (Goetz, Peierls, Bloch, Bowbeer, Holmes & Lea)
Aanbevolen materiaal
Blackboard
Modulehandleiding met aanvullend materiaal
Werkvormen
Hoorcollege

Practicum

Project

Werkcollege

Toetsen
Functional and Logic Programming Project

Functional Programming Test

Concurrent Programming Test

Compiler Construction Take-Home

Integrating Project

Additional Requirements

SluitenHelpPrint
Switch to English