Martin Vechev: Catalogue data in Autumn Semester 2013

Name Prof. Dr. Martin Vechev
FieldComputer Science
Address
Inst. Programmiersprachen u. -syst
ETH Zürich, CAB H 69.1
Universitätstrasse 6
8092 Zürich
SWITZERLAND
Telephone+41 44 632 98 48
E-mailmartin.vechev@inf.ethz.ch
URLhttp://www.srl.inf.ethz.ch/
DepartmentComputer Science
RelationshipFull Professor

NumberTitleECTSHoursLecturers
252-2600-05LSoftware Engineering Seminar Information 2 credits2ST. Hoefler, M. Vechev
AbstractThe course is an introduction to research in software engineering, based on reading and presenting high quality research papers in the field. The instructor may choose a variety of topics or one topic that is explored through several papers.
ObjectiveThe main goals of this seminar are 1) learning how to read and understand a recent research paper in computer science; and 2) learning how to present a technical topic in computer science to an audience of peers.

The focus of the course this year is on reliability of high-performance programs.
ContentThe technical content of this course falls into the general area of software engineering but will vary from semester to semester.
263-2910-00LProgram Analysis Information 4 credits2V + 1UM. Vechev
AbstractThe principles of modern program analysis are key to enabling scalable and automated reasoning for a vast range of computations (e.g. mobile app security, high-performance algorithms, biological computing, device drivers).

This course is an in-depth introduction to the fundamental principles and applications of modern program analysis.

For more information: http://www.srl.inf.ethz.ch/pa.php
ObjectiveThe course has 3 main objectives:

* Understand the foundational principles behind program analysis techniques.

* Understand how to apply these principles to build practical, working analyzers. This will be helped by a hands-on programming project.

* Gain familiarity with the state-of-the-art in the research area.
ContentThe last decade has seen an explosion in modern program analysis techniques. These techniques are increasingly being used to reason about a vast range of computational paradigms including:

* finding security violations in web and mobile applications such as JavaScript and Android.
* establishing properties of biological systems (e.g. DNA computation)
* finding serious errors in systems software (e.g. Linux kernel, device drivers, file systems)
* automatic discovery of new algorithms (e.g. concurrent data structures, distributed algorithms) and end-user programming.
* compilers for domain specific languages
* architecture-driven reasoning of concurrent software (e.g. Intel's x86, ARM, IBM's Power).

This course will provide a comprehensive introduction to modern, state-of-the-art program analysis concepts and practical frameworks including:

* Dynamic Analysis:
- concepts: memory safety, typestate, concurrency analysis
- frameworks: Valgrind, FastTrack, EventRacer

* Static Analysis:
- concepts: abstract interpretation (domains, soundness, precision, fixed points)
- frameworks: Apron, PPL

* Security Analysis:
- concepts: static + dynamic combination
- example: malware detection

* Pointer analysis:
- concepts: Andersen's, Steensgaard's analysis
- frameworks: Soot, LLVM, WALA

* Program synthesis:
- concepts: L*, version spaces, PBE, CEGIS
- frameworks: Sketch, AGS, SmartEdit, ReSynth

* Predicate abstraction:
- concepts: Graf-Saidi, Boolean programs, lazy abstraction
- frameworks: Microsoft's SLAM for C programs, Fender

* Symbolic execution:
- concepts: SMT, concolic execution
- frameworks: S2E, KLEE, Sage

* Applications of Analysis & Synthesis:
- GPU programs, security errors, device drivers, concurrent algorithms, end-user programming.

To gain a deeper understanding of how to apply these techniques in practice, the course will involve a small hands-on programming project where based on the principles introduced in class, the students will build a program analyzer for a modern programming language.
Lecture notesThe lectures notes will be distributed in class.
LiteratureDistributed in class.
Prerequisites / NoticeThis course is aimed at both graduate (M.Sc., PhD) students as well as advanced undergraduate students.
264-5810-00LProgramming Languages Seminar2 credits2SP. Müller, M. Vechev
AbstractThis graduate seminar provides doctoral students in computer science a chance to read and discuss current research papers. Enrollment requires permission of the instructors. Credit units are granted only to active participants.
ObjectiveLearn about current research results in the area of programming languages, static program analysis, program verification, and related areas; practice of scientific presentations.
ContentThe seminar will explore different topics from a research perspective.
Lecture notesSupporting material will be distributed during the seminar.
Prerequisites / NoticeThe seminar is open to assistants of the Chair of Programming Methodology and the Software Reliability Lab (Department of Computer Science). Others should contact the instructors.