DM552: Programming Languages (10 ECTS)

STADS: 15014801

Level
Bachelor course

Teaching period
The course is offered in the autumn semester.

Teacher responsible
Email: petersk@imada.sdu.dk

Additional teachers
lcf@imada.sdu.dk

Timetable
Group Type Day Time Classroom Weeks Comment
Common I Monday 12-14 U24 36,45-50
Common I Monday 12-14 U163 37
Common I Monday 12-14 U46 38
Common I Monday 12-14 U160A 39-40
Common I Monday 12-14 U140 41
Common I Monday 14-16 U93 43 Søren Haagerup
Common I Monday 14-16 U150 44
H1 TE Tuesday 08-10 U42 40
H1 TL Tuesday 08-10 IMADA ComputerLab 41
H1 TE Wednesday 10-12 U20 36-39,41,46
H1 TE Wednesday 10-12 U24 43,45,48
H1 TE Wednesday 10-12 U150 44,47
H1 TE Wednesday 10-12 U55 49-50
H1 TL Friday 14-16 IMADA ComputerLab 37,39,45,47,49
H1 TL Friday 10-12 IMADA ComputerLab 44
Show entire timetable
Show personal time table for this course.

Comment:
Ubegrænset deltagerantal.

Prerequisites:
None.

Academic preconditions:
The contents of DM550 Introduction to Programming must be known. The course DM507 Algorithms and Data Structures is recommended.

Course introduction
The course gives an introduction to logic and functional programming.

The course builds upon DM550 and DM507 from the first year of the curriculum for Computer Science. The course gives a professional basis for choosing courses, individual study activities or a bachelor's project within programming languages.

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.

In relation to the learning outcomes of the degree the course has explicit focus on:

  • developing skills in programming in different types of programming languages
  • developing skills in analyzing advantages and disadvantages of different algorithms, in particular w.r.t. resource usage
  • developing skills in deciding and justify professional decisions
  • developing skills in describing, formulating and disseminating problems and results to either other professional or non-specialists or collaborative partners and users
  • giving the competence to handle complex and development-oriented situations in study and work contexts
  • giving the competence to identify one's own needs for learning and structure one's own learning in different learning environments


Expected learning outcome
The learning objectives of the course are that the student demonstrates the ability 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
The following main topics are contained in the course:
  • 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:
  1. Project. Pass/fail, internal marking by the teacher. (10 ECTS). (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: 28 hours
Skills training phase: 42 hours, hereof:
 - Tutorials: 28 hours
 - Laboratory exercises: 14 hours

Educational activities

Educational form
Activities during the study phase:
  • Solve assignments
  • Read the assigned literature
  • Practice to apply the acquired knowledge


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.

Course enrollment
See deadline of enrolment.

Tuition fees for single courses
See fees for single courses.