IT-Universitetet i København
  Tilbage Kursusoversigt
Kursusnavn (dansk):Advanced Programming 
Kursusnavn (engelsk):Advanced Programming 
Semester:Efterår 2015 
Udbydes, softwareudvikling og -teknologi (sdt) 
Omfang i ECTS:7,50 
Min. antal deltagere:
Forventet antal deltagere:
Maks. antal deltagere:25 
Formelle forudsætninger:- You can program in Java (You will survive the course if you
can program well in C# or any other main stream
object-oriented language, but your experience may be steeper)

- You know basic functional programming including higher order
functions, anonymous functions (or lambdas, delegates or
anonymous inner classes), side-effect-free programming,
generic types and methods

- You know basic algorithms and data structures (sorting,
searching, collection data structures and basics of
algorithms complexity)

- You know basic discrete mathematics (sets, functions,

- You have followed an introductory course on programming

The above competences can be obtained by following an introductory programming
course, an introductory algorithms course and a course on programming languages
('Programmer som Data' or Programming Language Concepts or equivalent.). If
you have followed all these courses you are well qualified. 
Læringsmål:After this course a successful student will be able to:

- Design, test and execute functional programs in Scala
- Use expressive types (polymorphism, type functions, higher-kinded types) to
document library interfaces
- Recognize monadic structures in computation, use libraries
following monadic structure and design monadic libraries in
Scala and Java (and similar languages)
- Reason about eager and lazy evaluation, including advantages
and disadvantages of either.
- Use eager and lazy evaluation to design data structures and
benefit from existing lazy data structures such as streams
(Java or Scala) and Enumerables (C#)
- Recognize data-view synchronization problems in software,
design and implement solutions using lenses
- Design and implement small reactive programs in Scala 
Fagligt indhold:Please note, that due to technical challenges, changes may occur before the start of the semester (week 35) – this applies to all sections of the course description.

- Introduction to Scala
- Property-based testing
- Recursion
- Monads and streams
- Call-by-name and lazy programming
- Immutable data-structures
- Lenses and data synchronization
- Functional reactive programming 
Læringsaktiviteter:14 ugers undervisning bestående af forelæsninger og øvelser

After a brief introduction to Scala we enter a biweekly cycle. In each cycle we first study a given programming concept theoretically, in the second week we implement a mini-project using the concept (in pairs, so two-person groups). 

Obligatoriske aktivititer:6 hand-ins graded pass/fail. You need to have 4 approved to be admitted to the exam. 
Eksamensform og -beskrivelse:X. experimental examination form (7-scale; external exam)

The submitted work consists of your mini-projects prepared during the semester. The specification of the submission format will be provided during the semester.
Duration of oral exam: 30 minutes.  

Litteratur udover forskningsartikler:TBD 
Følgende personer underviser på kurset:
NavnStillingUndervisertypeIndsats (%)
Andrzej Wasowski Lektor(ITU) Kursusansvarlig 80
Rasmus Ejlers Møgelberg Lektor, Linjeleder(ITU) Underviser 10
Peter Sestoft Sektionsleder(ITU) Underviser 10