Syllabus for |
|
The course has been discontinued |
DAT122 - Programming paradigms
|
|
Syllabus adopted 2015-02-12 by Head of Programme (or corresponding) |
Owner: TKDAT |
|
7,5 Credits |
Grading: TH - Five, Four, Three, Not passed |
Education cycle: First-cycle |
Major subject: Computer Science and Engineering, Information Technology
|
Department: 37 - COMPUTER SCIENCE AND ENGINEERING
|
Teaching language: English
Open for exchange students
Course module |
|
Credit distribution |
|
Examination dates |
Sp1 |
Sp2 |
Sp3 |
Sp4 |
Summer course |
No Sp |
0115 |
Laboratory |
3,0 c |
Grading: UG |
|
|
|
3,0 c
|
|
|
|
|
|
0215 |
Examination |
4,5 c |
Grading: TH |
|
|
|
4,5 c
|
|
|
|
|
|
In programs
MPALG COMPUTER SCIENCE - ALGORITHMS, LANGUAGES AND LOGIC, MSC PROGR, Year 1 (elective)
MPALG COMPUTER SCIENCE - ALGORITHMS, LANGUAGES AND LOGIC, MSC PROGR, Year 2 (elective)
TKITE SOFTWARE ENGINEERING, Year 3 (elective)
TKDAT COMPUTER SCIENCE AND ENGINEERING, Year 2 (elective)
TKDAT COMPUTER SCIENCE AND ENGINEERING, Year 3 (elective)
Examiner:
Forskarassistent
Jean-Philippe Bernardy
Replaces
DAT120
Programming paradigms DAT121
Programming paradigms
Eligibility:
In order to be eligible for a first cycle course the applicant needs to fulfil the general and specific entry requirements of the programme(s) that has the course included in the study programme.
Course specific prerequisites
Basic programming knowledge in functional language (such as TDA555)
Basic programming knowledge in imperative or object language (such as EDA481 or DAT043)
Knowledge of basic data structures (such as DAT037)
Aim
This course aims to
- introduce the students to programming language design, semantics and implementation
- teach the meaning of the most important programming language constructions, by interpretation or translation into other, more basic constructions
- provide the students with tools to work with the paradigm of their choice, regardless of the programming language that they use
Learning outcomes (after completion of the course the student should be able to)
Knowledge and understanding- Explain the meaning of programming language features in terms of their operational or denotational interpretation
- Explain and contrast the principles of different paradigms both conceptually and in terms of particular language features.
- Know the relationship between mainstream programming languages, the features they implement, and the paradigms they support.
Skills and abilities
- Write small idiomatic programs in languages that represent different paradigms.
- Read programs written idiomatically in a given paradigm, and translate
(encode) them into a language that does not support the paradigm
directly. - Read non-idiomatic programs (that use an encoding), and re-write them in their idiomatic paradigm.
Judgement and approach- Recognize the paradigms at the core of programs, regardless of shallow/accidental implementation choices.
Content
This course discusses the fundamental concepts underlying the design,
definition, and implementation of modern computer languages typical of
common programming paradigms, including imperative, object-oriented,
logic, concurrent, and functional.
The course contains:
- a formal introduction to each paradigm;
- theoretical and practical studies of transformations between paradigms.
Examples of such transformations include:
- introduction/removal of jumps/loops,
- introduction/removal of recursion/stack,
- introduction/removal of higher order functions/closures
- introduction/removal of processes/continuations,
- introduction/removal of explicit search.
In most cases, the Haskell programming language is used as a vehicle for expressing those transformations.
Organisation
The course consists of a series of lectures and theoretical and practical exercises.
Literature
See separate literature list.
Examination
The course examination has two elements:
- an individual written examination, carried out in examination hall
- a series of exercises carried out on computer