IT-Universitetet i København
 
  Tilbage Kursusoversigt
Kursusbeskrivelse
Kursusnavn (dansk):Advanced Programming 
Kursusnavn (engelsk):Advanced Programming 
Semester:Forår 2016 
Udbydes under:cand.it., softwareudvikling og -teknologi (sdt) 
Omfang i ECTS:7,50 
Kursussprog:Engelsk 
Kursushjemmeside:https://learnit.itu.dk 
Min. antal deltagere:12 
Forventet antal deltagere:
Maks. antal deltagere:120 
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,
relations)

- You have followed an introductory course on programming
languages

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
- 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
- Recognize data-view synchronization problems in software, design and implement solutions using lenses 
Fagligt indhold:- Introduction to Scala
- Property-based testing
- Monads and streams
- Call-by-name and lazy programming
- Immutable data-structures
- Lenses and data synchronization
- Purely functional parallel programming 
Læringsaktiviteter:14 ugers undervisning bestående af forelæsninger og øvelser

Weekly lectures and exercises plus 2 mini projects (in 2 person groups). 

Obligatoriske aktivititer:A. Two mandatory mini-projects in two person groups graded pass/fail. Both mini-projects must be graded pass for exam qualification. Moreover you have to complete all home-works before the exam, also in two person groups (not graded, but you must hand-in your solutions to demonstrate that you worked on them).

B. Home work assignments are published weekly. Mini projects are published on March 30 and April 20.

C. Deadlines for mini-projects: April 12 and May 9.
Home-works can be handed in on the fly, every week with cut off points for the first 6 chapters on March 18 and for the remaining chapters on April 29th.

D. If you missed the cut-off deadline for home works you may hand them in before May 15. If you failed mini-project you must resubmit before May 15. 
Eksamensform og -beskrivelse:A11: Skriftlig eksamen (stedprøve) med adgang til internet, skriftlige og trykte hjælpemidler., (7-scale, external exam)

Duration of exam: 4 hours  

Litteratur udover forskningsartikler:Paul Chiusano. Runar Bjarnason. Functional Programming in Scala. Manning
2015