Markus Püschel
Computer Science
ETH Zürich




short CV


the pub

Software Engineering Seminar 252-2600

(ETH, CS, Bachelor)

Basic Information

  • Course number: 252-2600, 2 credits
  • Fall 2017, lectures: W 10:15-12:00, CHN D 46
  • Instructor: Markus Püschel (CAB, H69.3, pueschel at inf, 2-7303)
  • TAs:
    • Michael Fäs
    • Matthew Mirman
    • Alen Stojanov
    • Arshavir Ter-Gabrielyan
    • Luca Della Toffola

Course Description

The course is an introduction to research in software engineering and programming languages, based on reading and presenting high quality research papers in the field.

This semester there will be no general specific focus but rather a broad range of topics in the field.

In the first lecture I will explain the rules, distribute the research papers, and then give a short a lecture on how to give good technical presentations. The next two Wednesdays there will be no session. The remaining lectures will consist of student presentations, each about one research paper that is assigned in the beginning of the course.

Goals of this Course

  • Learn how to read and understand a recent research paper in computer science.
  • Learn how to present a technical topic in computer science to an audience of peers.

Academic Integrity

Avoid copy-paste as much as possible. For material (especially graphics and anything included by copy-paste) not created by you but used in your presentation you have to provide an acknowledgment of the source on the same slide.


  • Quality of your presentation and subsequent question handling
    • How well you understood the paper
    • How understandable you presented it
    • How effectively your slides communicated (which includes the visual quality of the slides)
  • The papers have varying difficulty; we will take that into account
  • Presence and participation (e.g., good questions) during the presentations by other students
    • If you miss many classes you will fail the course

How It Works

  • In the beginning of the course every student will get a research paper and presentation date assigned (see schedule below)
  • Understand the paper (motivation of the work, what they do, what the results are, what the limitations are)
    • study the paper carefully
    • obtain and study relevant background material such as other papers that are cited; you may need to include some of this background material in your presentation
    • possibly meet with the TA or instructor to ask questions
  • Create a presentation
    • try to follow the guidelines given in the first lectures
    • main check list what the presentation should include:
      • clear motivation for the work
      • maybe briefly provide some necessary background
      • clear explanation what the paper does; this means using, as appropriate, examples, well-designed visuals, code examples
      • do not trivialize the content, go deeper where necessary
      • understandable (by your fellow students) presentation of the content and the results
      • do not try to cover everything in the paper, just the key parts; be ready to explain any technical term used
      • brief critical discussion in the end of the contribution: strong and weak parts including limitations
    • strive for high visual quality
    • acknowledge any external material (graphics, anything included by copy-paste from other sources) on the same slide (bottom right, small font, gray is usually a good way)
  • If possible try out the tool/code that comes with the paper
  • Have one meeting with your advisor at least a week before your presentation for clarifications and feedback. Bring a draft of the presentation.
  • Present at your assigned date
    • Presentations are 30 minutes + 15 minutes for questions
    • The presentation time will be enforced (as in the real world) but much too short is also not good


TA advisor
1 20.09. Organization, small guide to technical presentations -  
2 27.09. no seminar -  
3 04.10. no seminar -  
4 11.10. Schwabe: The Effect of Omitted-Variable Bias on the Evaluation of Compiler Optimizations

Wäny: Producing wrong data without doing anything obviously wrong!
5 18.10. Gstöhl: Bringing the web up to speed with WebAssembly

Knobel: Latte: a language, compiler, and runtime for elegant and efficient deep neural networks
6 25.10. Isler: Triggerless Happy — Intermediate Verification with a First-Order Prover

Becker: Trigger Selection Strategies to Stabilize Program Verifiers
Prof. Müller will replace me
7 01.11.

Fessler: Kendo: efficient deterministic multithreading in software

Moser: An experiment about static and dynamic type systems: doubts about the positive impact of static type systems on development time

8 08.11. Del Guidice: Optimising Existing Software with Genetic Programming

Petter: Automatically Finding Patches Using Genetic Programming
9 15.11. Sierra: Introduction to generalized type systems

Meierhans: Reluplex: An Efficient SMT Solver for Verifying Deep Neural Networks
10 22.11. Hiltpold: Low overhead dynamic binary translation on ARM

Anklin: A fast Fourier transform compiler
11 29.11. Huberty: DeepXplore: Automated Whitebox Testing of Deep Learning Systems

Bachmann: Automatically Verifying Concurrent Queue Algorithms
12 06.12. Crespi: Evaluating the accuracy of Java profilersCrespi: Evaluating the accuracy of Java profilers

Gigon Almada e Melo: Is Search Really Necessary to Generate High-Performance BLAS?
13 13.12. Tobler: One compiler: deoptimization to optimized code

Brodmann: Halide: a language and compiler for optimizing parallelism, locality, and recomputation in image processing pipelines
14 20.12. Arnold: Deciding Local Theory Extensions via E-matching

Läubli: Proving Consistency of Pure Methods and Model Fields