|Deletions are marked like this.||Additions are marked like this.|
|Line 1:||Line 1:|
|Line 4:||Line 3:|
|15 hp objectoriented programming||11 hp objectoriented programming|
PROP - Programming languages and paradigms
11 hp objectoriented programming
Documented knowledge of object orientation and programming in an object oriented language corresponding to two levels of programming courses at university level.
Course goals: Learning a new programming language is in many ways more about learning new ways of thinking and new problem solving strategies than about learning a new syntax. At least if the new language is considerably different from the languages one is already familiar with.
One of the goals of this course is to give the students an understanding for how programming languages can be constructed and implemented and also experience of using different languages, mainly from other groups than the imperative and object oriented ones that they already know. This is important knowledge, e.g. because it prepares students for later learning new languages quicker and more easily.
After having successfully passed the course, the student will be able to:
* account for and discuss important concepts and mechanisms in programming language construction and implementation
* explain differences between the imperative, object oriented, functional and logic based programming paradigms.
* read, understand and write non-trivial programs in at least one language from each of the object oriented, functional and logic based programming paradigms while using problem solving strategies suitable for the paradigm used.
* reason about and compare languages from the paradigms mentioned above and /or give account for some current research problem in programming language research
Basic: History, design principles, synax, semantics, control flow, type systems, names, scoping, binding, abstractions, etc.
Object oriented languages: Class-based languages, prototype-based languages, encapsulation, information hiding, inheritance, delegation, polymorphism, dynamic binding, etc.
Functional languages: Polymorphism, recursion, functions as first-class program constructions, higher order functions, lazy vs. eager evaluation, currying, etc.
Logic based languages: Facts and rules, resolution and unification, searching and backtracking, recursion, functions och arithmetic, lists and other structures, etc.
Concluding summary and extras