5 ECTS credits
125 u studietijd
Aanbieding 1 met studiegidsnummer 4020433ENR voor alle studenten in het 1e semester met een verdiepend master niveau.
Study Material
The transparencies that are used in the lectures are made available to the students. A large part of the course follows chapters 1-4 from “Structure and Interpretation of Computer Programs” (Abelson & Sussman, 2nd edition 1996).
This is a compressed version of the courses “Structure of Computer Programs”, “Interpretation of Computer Programs” and “Logic and Formal Systems” of the Bachelor program in Computer Science. Instead of teaching the material at a beginner’s level, it is assumed that students are already fluent at programming in some mainstream language such as Python, C, C++ or Java.
Knowledge and Understanding: The course first enhances the students programming skills by introducing higher-order procedures and anonymous functions. Subsequently the theme is explored of objects as closures and streams as delayed infinite computations. The remainder of the course is about the fundamental concepts that are at the heart of programming languages, programming language semantics and the implementation of higher order programming languages. We will study and implement interpreters for programming languages and some variations.
Application of Knowledge and Understanding: This is a course that gives students the foundations to study and understand any modern programming languages from a conceptual point of view. Instead of focussing on surface syntax and phenomenological aspects, the course delves deep into the semantics of languages and therefore gives a strong basis for applying its content to the future study of programming languages. After talking the course, students will be many times faster in learning a new programming language than before.
This course explicitly prepares students to study modern programming languages like Clojure, Erlang or Scala in a scientifically founded way.
Making Judgements: An important learning outcome is that students will be able to judge the quality of new programming languages or programming languages features. As an example, we take Java8 which is widely said to “finally have lambdas”. Students that took this course will be able to see right through such marketing-oriented statements.
Communication: Students will build up the precise vocabulary to communicate about programming languages and higher order programs in a very precise and semantically meaningful way.
This course contributes to the following programme outcomes of the Bachelor in Engineering Sciences:
The Bachelor in Engineering Sciences has a broad fundamental knowledge and understanding of
1. scientific principles and methodology of exact sciences with the specificity of their application to engineering;
2. engineering principles and the ability to apply them to analyse key engineering processes and to investigate new and emerging technologies;
4. fundamental, basic methods and theories to schematize and model problems or processes.
The Bachelor in Engineering Sciences can
12. reason in a logical, abstract and critical way;
The Bachelor in Engineering Sciences has
16. a creative, problem-solving, result-driven and evidence-based attitude, aiming at innovation;
17. a critical attitude towards one’s own results and those of others;
De beoordeling bestaat uit volgende opdrachtcategorieën:
Examen Andere bepaalt 100% van het eindcijfer
Binnen de categorie Examen Andere dient men volgende opdrachten af te werken:
The mark is given as a combination of an oral exam and a project the students have to execute in Scheme. Both parts are equally important.
Deze aanbieding maakt deel uit van de volgende studieplannen:
Bachelor in de ingenieurswetenschappen: elektronica en informatietechnologie Profiel profiel computerwetenschappen