
home
publications
teaching
short CV
personal
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.
Grading

- 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
Lectures

Lecture |
Date |
Title |
TA advisor |
Notes |
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! |
LDT
LDT |
|
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 |
AS
AS |
|
6 |
25.10. |
Isler: Triggerless Happy — Intermediate Verification with a First-Order Prover
Becker: Trigger Selection Strategies to Stabilize Program Verifiers |
ATG
ATG |
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 |
MF
MF |
|
8 |
08.11. |
Del Guidice: Optimising Existing Software with Genetic Programming
Petter: Automatically Finding Patches Using Genetic Programming |
MM
MM |
|
9 |
15.11. |
Sierra: Introduction to generalized type systems
Meierhans: Reluplex: An Efficient SMT Solver for Verifying Deep Neural Networks |
MM
MM |
|
10 |
22.11. |
Hiltpold: Low overhead dynamic binary translation on ARM
Anklin: A fast Fourier transform compiler |
AS
MP |
|
11 |
29.11. |
Huberty: DeepXplore: Automated Whitebox Testing of Deep Learning Systems
Bachmann: Automatically Verifying Concurrent Queue Algorithms |
MM
ATG |
|
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? |
LDT
MP |
|
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
|
AS
AS |
|
14 |
20.12. |
Arnold: Deciding Local Theory Extensions via E-matching
Läubli: Proving Consistency of Pure Methods and Model Fields |
ATG
ATG |
|
|