Hide menu

TDDD56 Multicore and GPU Programming (6 ECTS)

Autumn2 2014

Mid-Term Evaluation with Muddy Cards

The course TDDD56 has been mid-term evaluated with the muddy card method in the third week. Due to scheduling constraints, this had to be done in an optional lecture for part of the attending students only, on thursday 20 november 2014, 08:00-10:00. 17 students attended the lecture, and I received 17 cards.

In the following I summarize the most frequently raised issues and comment where appropriate.


The course contents is considered interesting and highly relevant by many participants.


  • Well structured course

  • The sorting competition is appreciated

  • As lecture slides are the main source of information, they should have more/better definitions, explanations, motivations...

  • Specific reading instructions for each topic (beyond the general references given at the end of each slide set) would be helpful (e.g., specific book chapters) for reading up on lecture contents.
    Good point, we will try to give more specific reading directions for next year. A collection of reading directions has been started on the course literature page.


Positive reactions from most students regarding lecturing style, structure, and slide material. Some commented that the pace in the first lectures was too fast, while some others think it is too slow sometimes. Several cards appreciated the guest lecturer (Jörg Keller). Details: Some listed further topics to be taken up in more detail, e.g. SIMD-ization, and how to optimize programs for it; or having more than one example for the ABA problem.


Labs are generally very appreciated so far. Some students experienced some issues with the one of this week, Lab2.
  • Lab1 good but quite simple.
    Comment: Lab1 is intentionally a simple lab to get started.
  • Labs are hard but interesting.
  • Fun and interesting. Feels like I learn most of the course from the labs.
  • Lab2 skeleton difficult to understand /
    Not always clear on where and what we are allowed/supposed to change/add in the lab skeleton code /
    Much rewriting on the lab skeleton on the labs...
    Comment: We find and fix more issues with Lab2 every years. Eventually it will run smoothly. Nicolas tried to stress in Lesson 1 that you can change anything you like in the lab skeletons.
  • Should have a Lab0 on pthreads, locks etc.
    Comment: Pthreads is part of the prerequisite course TDDB68, which already proposes some introductory work for C. For those who did not take the course, there is Lab0a that gives example code with pthreads (that we could expand to include locks and semaphores) and other C constructs. Lab0b provides a practical exercise with parallel summation and its full solution. Other pthreads examples can be found in Lab1's skeleton and ultimately on the internet as suggested in Lesson 1.
  • Disliked the ABA part of Lab2, felt weird to implement the problem with locks and all.
    Comment: Note that you don't have to use locks or semaphores, but we accept and hint about this technique so students do not need to wonder about a more complex code difficult to be fully explained at lab demo time. We think there is enough to do on Lab2 as it is now.
  • Wasted a lot of time on Lab2 since we assumed that it would be possible to get a speedup as the number of cores increased.
    Comment: The typical curve from the lab can indeed be surprising at first, but they mostly make sense with a deeper thinking about what is done in the lab and what curves it produces; this is what we seek at the lab demo time. We added a few more clues in the lab compendium so that we can avoid unnecessary work in the future.
  • Dislike mandatory lab attendance (3), limits flexibility in the case of overlapping courses. /
    No attendance is taken on the mandatory lab sessions in group B.


By and large, the course seems to run very well; there are some minor issues for improvement (see the comments above) that will be taken into consideration.

Thanks for all comments!

Christoph Kessler, examinator TDDD56

Page responsible: Christoph W Kessler
Last updated: 2014-11-24