IT-Universitetet i København
 
  Tilbage Kursusoversigt
Kursusbeskrivelse
Kursusnavn (dansk):Practical Concurrent and Parallel Programming 
Kursusnavn (engelsk):Practical Concurrent and Parallel Programming 
Semester:Efterår 2014 
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:60 
Maks. antal deltagere:95 
Formelle forudsætninger:Students must know the Java programming language very well, including inner classes and a first exposure to threads and locks, and event-based GUIs as in Swing or AWT.

The course is given in English. 
Læringsmål:After the course, the successful student can:

* ANALYSE the correctness of concurrent Java software, and RELATE it to the Java memory model

* ANALYSE the performance of concurrent Java software

* APPLY Java threads and related language features (locks, final and volatile fields) and libraries (concurrent collections) to CONSTRUCT correct and well-performing concurrent Java software

* USE software tools for accelerated testing and analysis of concurrency problems in Java software

* CONTRAST different communication mechanisms (shared mutable memory, transactional memory, message passing) 
Fagligt indhold:* Concurrent and parallel programming on a managed platform (Java)

* Concepts: safety, invariants, liveness (deadlock, livelock,
lock-free, wait-free), performance, scalability; atomicity, shared
state, mutable state, immutable state, Java memory model

* Mechanisms: threads, locks, monitor pattern, transactional memory,
compare-and-swap, message passing, actors; process, thread, task
...

* The additional shortcomings of testing of concurrent software,
compared to testing of sequential software; the difficulties of
debugging (changes scheduling)

* Tools: static analysis (eg. ThreadSafe), accelerated testing
(eg. Java Pathfinder)

* ... more 
Læringsaktiviteter:14 ugers undervisning bestående af forelæsninger og øvelser

Obligatoriske aktivititer:5 out of 6 bi-weekly mandatory hand-ins have to be approved as prerequisite for taking the exam. 
Eksamensform og -beskrivelse:X. experimental examination form (7-scale; external exam), 7-trins-skala, Ekstern prøve

37 hours take-home written exam/project
- Project workload 16 hours
- Individual
- Start at 0900 on 7 January 2015
- End at 2200 on 8 January 2015 - submission in LearnIT
- All materials, including Internet access, allowed
- Plagiarism or copying of solutions not allowed. No oral exam  

Litteratur udover forskningsartikler:* Goetz et al: Java Concurrency in Practice (JCP), Addison-Wesley 2006. Book homepage: http://jcip.net/

* Herlihy and Shavit: The Art of Multiprocessor Programming. Morgan Kaufmann 2008. Chapters 1 (maybe) and 3 (safety and liveness concepts) and 18 (compositionality, transactional memory).

* Supplementary text on message passing and actors, and Akka library and perhaps Erlang or Scala.

* Supplementary text on transactional memory, and Multiverse library and perhaps Clojure.