. We describe a course intended to introduce second-year undergraduates to medium-scale programming. The project of the course is to implement a nonconventional logic programming language using a functional implementation language. This exercise reinforces two declarative paradigms and puts the students in experimental touch with a wide range of standard computer science concepts. Declarativity is decisive in making this wide range possible. Keywords. programming course, functional programming, disjunctive logic programming, model generation 1 Introduction The undergraduate curriculum at our department contains a practical programming course, the major purpose of which is to let the students experience mediumscale programming in their sec...