Course Evaluation
You can download the results of the course evaluation as well as the action plan.
Exam
The exam will take place Tuesday, January 12, 2010 from 9:00-13:00 in rooms U44 and U56..
There is a number of old exams from previous editions of this course.
Weekly Notes
Week | 45 | 46 | 47 | 48 | 49 | 50 | 51 |
---|---|---|---|---|---|---|---|
Weekly notes | 02.11.2009 | 06.11.2009 | 13.11.2009 | 22.11.2009 | 01.12.2009 | 07.12.2009 | 13.12.2009 |
Project
Part 1
Information about the first part of the project is now available in a note on Part 1.
Example Inputs
Here is a list of example inputs in the format described by the note above:
There are many more inputs available in the alternative format that can also be used for testing:
Template
There is a template available to use as a starting point for the solution.
Possible Constraint System
In the fifth lecture I discussed a possible encoding of the 6x6 example as a constraint programming problem. You can take a look at the code for this.
Part 2
Information about the second part of the project is now available in a note on Part 2.
Template
There is a template available to use as a starting point for the solution.
Schedule
Week | 45 | 46 | 47 | 48 | 49 | 50 | 51 |
---|---|---|---|---|---|---|---|
Tue 08-10 (U53) | Lecture | Lecture | Exercise | Lecture | Lecture | Lecture | Lecture |
Wed 12-14 (U89A) | Exercise | Exercise | Exercise | Exercise | Exercise | Exercise | Exercise |
Thu 12-14 (U46) | Lecture | Lecture | Lecture | Exercise | Lecture | Exercise | Lecture |
Office Hours
Just come to my office. If you want to make sure I'm there, contact me before (by e-mail, jabber, phone).
- Office: IMADA, Ø13-602b-2 (map)
- Phone: 6550 2327
- E-mail: petersk@imada.sdu.dk
- Home page: http://www.imada.sdu.dk/~petersk/
- Jabber: petersk@jabber.dk
Literature
The course will be based on lecture notes and hand-outs.
Course Description
Prerequisites:
The contents of Programming A (DM502) and B (DM503) must be known. The course Algorithms and Data Structures (DM507) is recommended.
Evaluation:
- A four hour written exam with books, notes, etc. External examiner, grades according to the 7-point marking scale.
- A number of mandatory assignments (pass/fail, internal evaluation by teacher), accounting for 1 ECTS of the 5 ECTS of the course. These assignments must be approved before the written exam can be taken.
- Reexam after 4th quarter. The reexam is an oral exam with external examiner and grades according to the 7-point marking scale.
Withdrawal date:
Withdrawal from the exam must be 7 days before the first exam date.
Course type:
Lectures (22 hours), discussion sessions (20 hours), project work.
Teaching period:
2nd quarter, fall 2009
Aims:
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 participants experience with programming in language of other types than the usual imperative and object-oriented languages.
Synopsis:
- General languages mechanisms:
Control structure, type systems, abstraction, modules. - Functional languages:
Functions, higher-order types, polymorphism, lists, lazy evaluation, referential transparency, monads, efficiency considerations, proof of correctness. - Logic based languages:
Predicates and rules, unification, SLD resolution, function symbols, lists, implementation of negation, constraint programming.
Aim description:
After the course, the student is expected to be able to:
- solve non-trivial programming tasks in Haskell by writing clear and correct code and by applying the standard language libraries.
- solve non-trivial programming tasks in Prolog by writing clear and correct code and by applying the standard language libraries.
- estimate time and space consumption of Haskell programs.
- prove properties of simple Haskell programs.
- calculate the most general type of a Haskell expression.
- determine if a Haskell function is strict.
- calculate the most general unifier of two Prolog terms.
- execute resolution for a Prolog goal.
- convert an expression in first order logic to clausal form.