IT-Universitetet i København
  Tilbage Kursusoversigt
Kursusnavn (dansk):Advanced Programming, BSc 
Kursusnavn (engelsk):Advanced Programming, BSc 
Semester:Forår 2018 
Udbydes under:Bachelor i softwareudvikling (bswu) 
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. 
Læringsmål:- 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.
- Reason about API designs in pure and stateful style, including exploring various designs and considering advantages and disadvantages of either.
- Use eager and lazy evaluation to design data structures and benefit from existing lazy data structures such as streams 
Fagligt indhold:Content:
- Introduction to Scala
- Property-based testing
- Monads and streams
- Call-by-name and lazy programming
- Immutable data-structures
- Purely functional parallel programming 
Læringsaktiviteter:12 forelæsninger og 12 øvelsesgange

Weekly lectures and exercises plus 2 mini projects. In the exercises (and the associated homework exercises) you learn to test and design functional programs in Scala, with a particular emphasis on API and library design. The lectures provide an overarching reflection over the patterns and techniques used, as well as they prepare you for solving the exercises. However most time is spent on small practical exercises and projects, resembling the exam questions. 

Obligatoriske aktivititer:Two mandatory mini-projects in two person groups graded pass/fail. Both mini-projects must be graded pass for exam qualification. More-over you have to complete all home-works before the exam, also in two person groups (Home works are not graded, but you must hand-in your solutions to demonstrate that you worked on them; Handing in solutions prepared by other groups is not acceptable).

Homework assignments are published weekly. There will be two mini projects, one roughly mid semester, and one towards the end.
If you missed the deadline for home works, or failed/missed a mini-project(s), there will be a resubmission deadline about 2 weeks before the exam.

Be aware: The student will receive the grade NA (not approved) at the ordinary exam, if the mandatory activities are not approved and the student will use an exam attempt 
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

A written exam on premises concerning all ILO’s above. The exam consists of smaller programming problems.  

Litteratur udover forskningsartikler:tba 
Følgende personer underviser på kurset:
Navn Stilling Undervisertype Indsats (%)
Andrzej Wasowski Professor(ITU) Kursusansvarlig 50
Zhoulai Fu Adjunkt(ITU) Underviser 50
Tobias Tuxen Hjælpelærer(ITU) Hjælpelærer 0
Oscar Felipe Cerda Toro Hjælpelærer(ITU) Hjælpelærer 0
Davide Laezza Hjælpelærer(ITU) Hjælpelærer 0
Mustapha Malik Bekkouche Hjælpelærer(ITU) Hjælpelærer 0