Kursusnavn (dansk): | Advanced Programming |
Kursusnavn (engelsk): | Advanced Programming |
Semester: | Efterår 2015 |
Udbydes under: | cand.it., softwareudvikling og -teknologi (sdt) |
Omfang i ECTS: | 7,50 |
Kursussprog: | Engelsk |
Kursushjemmeside: | https://learnit.itu.dk |
Min. antal deltagere: | 1 |
Forventet antal deltagere: | 0 |
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,
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 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 |
| |