DM552: Programming Languages (10 ECTS)

STADS: 15014801

Level
Bachelor course

Teaching period
The course is offered in the autumn semester.

Teacher responsible
Email: shaagerup@imada.sdu.dk

Additional teachers
hargreaves@imada.sdu.dk

Timetable
Group Type Day Time Classroom Weeks Comment
Common I Monday 14-16 U28a 36-38
Common I Monday 14-16 U133 39-40,47-51
Common I Monday 14-16 U27a 43-46
Common I Tuesday 10-12 U51 43
Common I Thursday 08-10 U46 41
Common I Friday 16-18 U47 41
H1 TE Tuesday 12-14 U93 36-38,44,46,48,51
H1 TE Tuesday 12-14 U91 43
H1 TL Wednesday 08-10 IMADA Terminalrum 39
H1 TL Thursday 14-16 IMADA Terminalrum 40,43,45,47,49-50
Show entire timetable
Show personal time table for this course.

Comment:
Ubegrænset deltagerantal. Fælles undervisning med DM509 Programmeringssprog

Prerequisites:
None

Academic preconditions:
The contents of DM550 Introduction to Programming OR DM536 Introduction to Programming and DM537 Object-oriented Programming must be known. The course DM507 Algorithms and Data Structures is recommended. The course cannot be followed if you have passed DM509, or if you have DM509 mandatory in your curriculum.

Course introduction
To give the students the general principles of programming languages design, and the specific choices characterizing the language classes imperative, object-oriented, logic-based and functional. To give the students a coherent understanding of advantages and disadvantages of different levels of abstractions and programming language constructs. To give the participants experience with programming in language of other types than the usual imperative and object-oriented languages.

Expected learning outcome
After the course, the student is expected to be able to:

  • solve non-trivial programming tasks in a functional programming language by writing clear and correct code and by applying the standard language libraries.
  • solve non-trivial programming tasks in a logic-based language by writing clear and correct code and by applying the standard language libraries.
  • estimate runtimes for functional programs.
  • understand the influence of side effects on concurrent programming.
  • apply and implement simple domain specific languages.
  • prove properties of simple functional programs.
  • reason about advanced type systems.
  • calculate the most general unifier of two terms.
  • execute resolution for a logical goal.
  • convert an expression in first order logic to clausal form
Subject overview
  • General languages mechanisms:
    Control structure, type systems, module, domain specific languages (DSL).
  • Functional languages:
    Higher-order types, polymorphism, lists, lazy evaluation, referential transparency, monads, efficiency considerations, proof of correctness
  • Logic based languages:
    Predicates, facts and rules, unification, SLD resolution, compound terms, lists, implementation of negation, constraint programming.
Literature
    Meddeles ved kursets start.


Website
This course uses e-learn (blackboard).

Prerequisites for participating in the exam
None

Assessment and marking:
Project divided into parts and integrated in the course. Pass/fail, internal evaluation by the teacher. (15014802)

Re-examination in the same exam period or immediately thereafter

Expected working hours
The teaching method is based on three phase model.
Intro phase: 32 hours
Skills training phase: 28 hours, hereof:
 - Tutorials: 12 hours
 - Laboratory exercises: 16 hours

Educational activities

Language
This course is taught in Danish or English, depending on the lecturer. However, if international students participate, the teaching language will always be English.

Remarks
In addition to the specified hours, students are expected to continuously use the study groups for other course related activities.

Course enrollment
See deadline of enrolment.

Tuition fees for single courses
See fees for single courses.