Search result: Catalogue data in Spring Semester 2022

Computer Science Master Information
Master Studies (Programme Regulations 2020)
Minors
Minor in Programming Languages and Software Engineering
NumberTitleTypeECTSHoursLecturers
263-2812-00LProgram Verification Information Restricted registration - show details
Number of participants limited to 30.
W5 credits3G + 1AP. Müller
AbstractA hands-on introduction to the theory and construction of deductive program verifiers, covering both powerful techniques for formal program reasoning, and a perspective over the tool stack making up modern verification tools.
ObjectiveStudents will earn the necessary skills for designing, developing, and applying deductive verification tools that enable the modular verification of complex software, including features challenging for reasoning such as heap-based mutable data and concurrency. Students will learn both a variety of fundamental reasoning principles, and how these reasoning ideas can be made practical via automatic tools.

By the end of the course, students should have a good working understanding and decisions involved with designing and building practical verification tools, including the underlying theory. They will also be able to apply such tools to develop formally-verified programs.
ContentThe course will cover verification techniques and ways to automate them by introducing a verifier for a small core language and then progressively enriching the language with advanced features such as a mutable heap and concurrency. For each language extension, the course will explain the necessary reasoning principles, specification techniques, and tool support. In particular, it will introduce SMT solvers to prove logical formulas, intermediate verification languages to encode verification problems, and source code verifiers to handle feature-rich languages. The course will intermix technical content with hands-on experience.
Lecture notesThe slides will be available online.
LiteratureWill be announced in the lecture.
Prerequisites / NoticeA basic familiarity with propositional and first-order logic will be assumed. Courses with an emphasis on formal reasoning about programs (such as Formal Methods and Functional Programming) are advantageous background, but are not a requirement.
263-2815-00LAutomated Software Testing Restricted registration - show details
Last cancellation/deregistration date for this graded semester performance: 18 March 2022! Please note that after that date no deregistration will be accepted and the course will be considered as "fail".
W7 credits2V + 1U + 3AZ. Su
AbstractThis course introduces students to classic and modern techniques for the automated testing and analysis of software systems for reliability, security, and performance. It covers both techniques and their applications in various domains (e.g., compilers, databases, theorem provers, operating systems, machine/deep learning, and mobile applications), focusing on the latest, important results.
Objective* Learn fundamental and practical techniques for software testing and analysis

* Understand the challenges, open issues and opportunities across a variety of domains (security/systems/compilers/databases/mobile/AI/education)

* Understand how latest automated testing and analysis techniques work

* Gain conceptual and practical experience in techniques/tools for reliability, security, and performance

* Learn how to perform original and impactful research in this area
ContentThe course will be organized into the following components: (1) classic and modern testing and analysis techniques (coverage metrics, mutation testing, metamorphic testing, combinatorial testing, symbolic execution, fuzzing, static analysis, etc.), (2) latest results on techniques and applications from diverse domains, and (3) open challenges and opportunities.

A major component of this course is a class project. All students (individually or two-person teams) are expected to select and complete a course project. Ideally, the project is original research related in a broad sense to automated software testing and analysis. Potential project topics will also be suggested by the teaching staff.

Students must select a project and write a one or two pages proposal describing why what the proposed project is interesting and giving a work schedule. Students will also write a final report describing the project and prepare a 20-30 minute presentation at the end of the course.

The due dates for the project proposal, final report, and project presentation will be announced.

The course will cover results from the Advanced Software Technologies (AST) Lab at ETH as well as notable results elsewhere, providing good opportunities for potential course project topics as well as MSc project/thesis topics.
Lecture notesLecture notes/slides and other lecture materials/handouts will be available online.
LiteratureReading material and links to tools will be published on the course website.
Prerequisites / NoticeThe prerequisites for this course are some programming and algorithmic experience. Background and experience in software engineering, programming languages/compilers, and security (as well as operating systems and databases) can be beneficial.
263-2925-00LProgram Analysis for System Security and Reliability Information W7 credits2V + 1U + 3AM. Vechev
AbstractSecurity issues in modern systems (blockchains, datacenters, deep learning, etc.) result in billions of losses due to hacks and system downtime. This course introduces fundamental techniques (ranging over automated analysis, machine learning, synthesis, zero-knowledge, differential privacy, and their combinations) that can be applied in practice so to build more secure and reliable modern systems.
Objective* Understand the fundamental techniques used to create modern security and reliability analysis engines that are used worldwide.

* Understand how symbolic techniques are combined with machine learning (e.g., deep learning, reinforcement learning) so to create new kinds of learning-based analyzers.

* Understand how to quantify and fix security and reliability issues in modern deep learning models.

* Understand open research questions from both theoretical and practical perspectives.
ContentPlease see: Link for detailed course content.
263-4600-00LFormal Methods for Information Security Information W5 credits2V + 1U + 1AS. Krstic, R. Sasse, C. Sprenger
AbstractThe course focuses on formal methods for the modeling and analysis of security protocols for critical systems, ranging from authentication protocols for network security to electronic voting protocols and online banking. In addition, we will also introduce the notions of non-interference and runtime monitoring.
ObjectiveThe students will learn the key ideas and theoretical foundations of formal modeling and analysis of security protocols. The students will complement their theoretical knowledge by solving practical exercises, completing a small project, and using state-of-the-art tools. The students also learn the fundamentals of non-interference and runtime monitoring.
ContentThe course treats formal methods mainly for the modeling and analysis of security protocols. Cryptographic protocols (such as SSL/TLS, SSH, Kerberos, SAML single-sign on, and IPSec) form the basis for secure communication and business processes. Numerous attacks on published protocols show that the design of cryptographic protocols is extremely error-prone. A rigorous analysis of these protocols is therefore indispensable, and manual analysis is insufficient. The lectures cover the theoretical basis for the (tool-supported) formal modeling and analysis of such protocols. Specifically, we discuss their operational semantics, the formalization of security properties, and techniques and algorithms for their verification.

The second part of this course will cover a selection of advanced topics in security protocols such as abstraction techniques for efficient verification, secure communication with humans, the link between symbolic protocol models and cryptographic models as well as RFID protocols (a staple of the Internet of Things) and electronic voting protocols, including the relevant privacy properties.

Moreover, we will give an introduction to two additional topics: non-interference as a general notion of secure systems, both from a semantic and a programming language perspective (type system), and runtime verification/monitoring to detect violations of security policies expressed as trace properties.
  •  Page  1  of  1