Martin Vechev: Catalogue data in Spring Semester 2018

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-0029-00LParallel Programming Information 7 credits4V + 2UT. Hoefler, M. Vechev
AbstractIntroduction to parallel programming: deterministic and non-deterministic programs, models for parallel computation, synchronization, communication, and fairness.
ObjectiveThe student should learn how to write a correct parallel program, how to measure its efficiency, and how to reason about a parallel program. Student should become familiar with issues, problems, pitfalls, and solutions related to the construction of parallel programs. Labs provide an opportunity to gain experience with threads, libraries for thread management in modern programming lanugages (e.g., Java, C#) and with the execution of parallel programs on multi-processor/multi-core computers.
252-0216-00LSoftware Architecture and Engineering Information 8 credits4V + 3UP. Müller, M. Vechev
AbstractThis course introduces both theoretical and applied aspects of software engineering and analysis. It covers:

- Software Architecture
- Informal and formal Modeling
- Design Patterns
- Code Refactoring
- Program Testing
- Dynamic Program Analysis
- Static Program Analysis
ObjectiveThe course has two main objectives:

- Obtain an end-to-end (both, theoretical and practical) understanding of the core techniques used for building quality software.

- Understand how to apply these techniques in practice.
ContentSome of the core technical topics covered will be:

- modeling and mapping of models to code
- common code design patterns
- functional and structural testing
- dynamic and static analysis
LiteratureWill be announced in the lecture.
263-2925-00LProgram Analysis for System Security and Reliability Information 5 credits2V + 1U + 1AM. Vechev
AbstractThe course introduces modern analysis and synthesis techniques (both, deterministic and probabilistic) and shows how to apply these methods to build reliable and secure systems spanning the domains of blockchain, computer networks and deep learning.
Objective* Understand how classic analysis and synthesis techniques work, including discrete and probabilistic methods.

* Understand how to apply the methods to generate attacks and create defenses against applications in blockchain, computer networks and deep learning.

* Understand the state-of-the-art in the area as well as future trends.
ContentThe course will illustrate how the methods can be used to create more secure and reliable systems across four application domains:

Part I: Analysis and Synthesis for Computer Networks:
1. Analysis: Datalog, Batfish
2. Synthesis: CEGIS, SyNET (http://synet.ethz.ch)
3. Probabilistic: (PSI: http://psisolver.org), its applications to networks (Bayonet)

Part II: Blockchain security
1. Introduction to space and tools.
2. Automated symbolic reasoning.
3. Applications: verification of smart contracts (http://www.securify.ch)

Part III: Security and Robustness of Deep Learning:
1. Basics: affine transforms, activation functions
2. Attacks: gradient based method to adversarial generation
3. Defenses: affine domains, AI2 (http://ai2.ethz.ch)

Part IV: Probabilistic Security:
1. Enforcement: PSI + Spire.
2. Graphical models: CRFs, Structured SVM, Pseudo-likelihood.
3. Practical statistical de-obfuscation: DeGuard: http://apk-deguard.com, JSNice: http://jsnice.org, and more.

To gain a deeper understanding, the course will involve a hands-on programming project.
263-2926-00LDeep Learning for Big Code Information Restricted registration - show details
Number of participants limited to 24.
2 credits2SM. Vechev
AbstractThe seminar covers some of the latest and most exciting developments (industrial and research) in the field of Deep Learning for Code, including new methods and latest systems, as well as open challenges and opportunities.
ObjectiveThe objective of the seminar is to:

- Introduce students to the field of Deep Learning for Big Code.

- Learn how machine learning models can be used to solve practical challenges in software engineering and programming beyond traditional methods.

- Highlight the latest research and work opportunities in industry and academia available on this topic.
ContentThe last 5 years have seen increased interest in applying advanced machine learning techniques such as deep learning to new kind of data: program code. As the size of open source code increases dramatically (over 980 billion lines of code written by humans), so comes the opportunity for new kind of deep probabilistic methods and commercial systems that leverage this data to revolutionize software creation and address hard problems not previously possible. Examples include: machines writing code, program de-obfuscation for security, code search, and many more.

Interestingly, this new type of data, unlike natural language and images, introduces technical challenges not typically encountered when working with standard datasets (e.g., images, videos, natural language), for instance, finding the right representation over which deep learning operates. This in turn has the potential to drive new kinds of machine learning models with broad applicability.

Because of this, there has been substantial interest over the last few years in both industry (e.g., companies such as Facebook starting, various start-ups in the space such as http://deepcode.ai), academia (e.g., http://plml.ethz.ch) and government agencies (e.g., DARPA) on using machine learning to automate various programming tasks.

In this seminar, we will cover some of the latest and most exciting developments in the field of Deep Learning for Code, including new methods and latest systems, as well as open challenges and opportunities.

The seminar is carried out as a set of presentations chosen from a list of available papers. The grade is determined as a function of the presentation, handling questions and answers, and participation.
Prerequisites / NoticeThe seminar is carried out as a set of presentations chosen from a list of available papers. The grade is determined as a function of the presentation, handling questions and answers, and participation.

The seminar is ideally suited for M.Sc. students in Computer Science.
263-2930-00LBlockchain Security Seminar Information Restricted registration - show details
Number of participants limited to 26.
2 credits2SM. Vechev, D. Drachsler Cohen, P. Tsankov
AbstractThis seminar introduces students to the latest research trends in the field of blockchains.
ObjectiveThe objectives of this seminar are twofold: (1) learning about the blockchain platform, a prominent technology receiving a lot of attention in computer Science and economy and (2) learning to convey and present complex and technical concepts in simple terms, and in particular identifying the core idea underlying the technicalities.
ContentThis seminar introduces students to the latest research trends in the field of blockchains. The seminar covers the basics of blockchain technology, including motivation for decentralized currency, establishing trust between multiple parties using consensus algorithms, and smart contracts as a means to establish decentralized computation. It also covers security issues arising in blockchains and smart contracts as well as automated techniques for detecting vulnerabilities using programming language techniques.
264-5811-00LProgramming Systems Seminar Information Restricted registration - show details
The 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.
2 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.