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: | 0 |
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 |
| |