Suchergebnis: Katalogdaten im Herbstsemester 2019
Informatik Master ![]() | ||||||
![]() | ||||||
![]() ![]() | ||||||
![]() ![]() ![]() | ||||||
Nummer | Titel | Typ | ECTS | Umfang | Dozierende | |
---|---|---|---|---|---|---|
252-0237-00L | Concepts of Object-Oriented Programming ![]() | W | 8 KP | 3V + 2U + 2A | P. Müller | |
Kurzbeschreibung | Course that focuses on an in-depth understanding of object-oriented programming and compares designs of object-oriented programming languages. Topics include different flavors of type systems, inheritance models, encapsulation in the presence of aliasing, object and class initialization, program correctness, reflection | |||||
Lernziel | After this course, students will: Have a deep understanding of advanced concepts of object-oriented programming and their support through various language features. Be able to understand language concepts on a semantic level and be able to compare and evaluate language designs. Be able to learn new languages more rapidly. Be aware of many subtle problems of object-oriented programming and know how to avoid them. | |||||
Inhalt | The main goal of this course is to convey a deep understanding of the key concepts of sequential object-oriented programming and their support in different programming languages. This is achieved by studying how important challenges are addressed through language features and programming idioms. In particular, the course discusses alternative language designs by contrasting solutions in languages such as C++, C#, Eiffel, Java, Python, and Scala. The course also introduces novel ideas from research languages that may influence the design of future mainstream languages. The topics discussed in the course include among others: The pros and cons of different flavors of type systems (for instance, static vs. dynamic typing, nominal vs. structural, syntactic vs. behavioral typing) The key problems of single and multiple inheritance and how different languages address them Generic type systems, in particular, Java generics, C# generics, and C++ templates The situations in which object-oriented programming does not provide encapsulation, and how to avoid them The pitfalls of object initialization, exemplified by a research type system that prevents null pointer dereferencing How to maintain the consistency of data structures | |||||
Literatur | Will be announced in the lecture. | |||||
Voraussetzungen / Besonderes | Prerequisites: Mastering at least one object-oriented programming language (this course will NOT provide an introduction to object-oriented programming); programming experience | |||||
263-2800-00L | Design of Parallel and High-Performance Computing ![]() ![]() | W | 8 KP | 3V + 2U + 2A | M. Püschel, T. Ben Nun | |
Kurzbeschreibung | Advanced topics in parallel / concurrent programming. | |||||
Lernziel | Understand concurrency paradigms and models from a higher perspective and acquire skills for designing, structuring and developing possibly large concurrent software systems. Become able to distinguish parallelism in problem space and in machine space. Become familiar with important technical concepts and with concurrency folklore. | |||||
![]() ![]() ![]() | ||||||
Nummer | Titel | Typ | ECTS | Umfang | Dozierende | |
252-0286-00L | System Construction ![]() ![]() Number of participants limited to 30. | W | 5 KP | 2V + 1U + 1A | F. Friedrich Wicker | |
Kurzbeschreibung | Main goal is teaching knowledge and skills needed for building custom operating systems and runtime environments. Relevant topics are studied at the example of sufficiently simple systems that have been built at our Institute in the past, ranging from purpose-oriented single processor real-time systems up to generic system kernels on multi-core hardware. | |||||
Lernziel | The lecture's main goal is teaching of knowledge and skills needed for building custom operating systems and runtime environments. The lecture intends to supplement more abstract views of software construction, and to contribute to a better understanding of "how it really works" behind the scenes. | |||||
Inhalt | Case Study 1: Embedded System - Safety-critical and fault-tolerant monitoring system - Based on an auto-pilot system for helicopters Case Study 2: Multi-Processor Operating System - Universal operating system for symmetric multiprocessors - Shared memory approach - Based on Language-/System Codesign (Active Oberon / A2) Case Study 3: Custom designed Single-Processor System - RISC Single-processor system designed from scratch - Hardware on FPGA - Graphical workstation OS and compiler (Project Oberon) Case Study 4: Custom-designed Multi-Processor System - Special purpose heterogeneous system on a chip - Masssively parallel hard- and software architecture based on message passing - Focus: dataflow based applications | |||||
Skript | Lecture material will be made available from the lecture homepage. | |||||
263-2400-00L | Reliable and Interpretable Artificial Intelligence ![]() | W | 5 KP | 2V + 1U + 1A | M. Vechev | |
Kurzbeschreibung | Creating reliable and explainable probabilistic models is a fundamental challenge to solving the artificial intelligence problem. This course covers some of the latest and most exciting advances that bring us closer to constructing such models. | |||||
Lernziel | The main objective of this course is to expose students to the latest and most exciting research in the area of explainable and interpretable artificial intelligence, a topic of fundamental and increasing importance. Upon completion of the course, the students should have mastered the underlying methods and be able to apply them to a variety of problems. To facilitate deeper understanding, an important part of the course will be a group hands-on programming project where students will build a system based on the learned material. | |||||
Inhalt | The course covers some of the latest research (over the last 2-3 years) underlying the creation of safe, trustworthy, and reliable AI (more information here: https://www.sri.inf.ethz.ch/teaching/riai2019): * Adversarial Attacks on Deep Learning (noise-based, geometry attacks, sound attacks, physical attacks, autonomous driving, out-of-distribution) * Defenses against attacks * Combining gradient-based optimization with logic for encoding background knowledge * Complete Certification of deep neural networks via automated reasoning (e.g., via numerical abstractions, mixed-integer solvers). * Probabilistic certification of deep neural networks * Training deep neural networks to be provably robust via automated reasoning * Understanding and Interpreting Deep Networks * Probabilistic Programming | |||||
Voraussetzungen / Besonderes | While not a formal requirement, the course assumes familiarity with basics of machine learning (especially probability theory, linear algebra, gradient descent, and neural networks). These topics are usually covered in “Intro to ML” classes at most institutions (e.g., “Introduction to Machine Learning” at ETH). For solving assignments, some programming experience in Python is excepted. | |||||
263-2810-00L | Advanced Compiler Design ![]() Findet dieses Semester nicht statt. | W | 7 KP | 3V + 2U + 1A | Noch nicht bekannt | |
Kurzbeschreibung | This course covers advanced topics in compiler design: SSA intermediate representation and its use in optimization, just-in-time compilation, profile-based compilation, exception handling in modern programming languages. | |||||
Lernziel | Understand translation of object-oriented programs, opportunities and difficulties in optimizing programs using state-of-the-art techniques (profile-based compilation, just-in-time compilation, runtime system interaction) | |||||
Inhalt | This course builds conceptually on Compiler Design (a basic class for advanced undergraduates), but this class is not a prerequisite. Students should however have a solid understanding of basic compiler technology. The focus is on handling the key features of modern object-oriented programs. We review implementations of single and multiple inheritance (incl. object layout, method dispatch) and optimization opportunities. Specific topics: intermediate representations (IR) for optimizing compilers, static single assignment (SSA) representation, constant folding, partial redundancy optimizations, profiling, profile-guided code generation. Special topics as time permits: debugging optimized code, multi-threading, data races, object races, memory consistency models, programming language design. Review of single inheritance, multiple inheritance, object layout, method dispatch, type analysis, type propagation and related topics. This course provides another opportunity to explore software design in a medium-scale software project. | |||||
Literatur | Aho/Lam/Sethi/Ullmann, Compilers - Principles, Techniques, and Tools (2nd Edition). In addition, papers as provided in the class. | |||||
Voraussetzungen / Besonderes | A basic course on compiler design is helpful but not mandatory. Student should have programming skills/experience to implement an optimizer (or significant parts of an optimizer) for a simple object-oriented language. The programming project is implemented using Java. | |||||
![]() ![]() ![]() | ||||||
Nummer | Titel | Typ | ECTS | Umfang | Dozierende | |
263-2100-00L | Research Topics in Software Engineering ![]() ![]() Number of participants limited to 22. The deadline for deregistering expires at the end of the second week of the semester. Students who are still registered after that date, but do not attend the seminar, will officially fail the seminar. | W | 2 KP | 2S | P. Müller, M. Püschel, Z. Su, M. Vechev | |
Kurzbeschreibung | This seminar is an opportunity to become familiar with current research in software engineering and more generally with the methods and challenges of scientific research. | |||||
Lernziel | Each student will be asked to study some papers from the recent software engineering literature and review them. This is an exercise in critical review and analysis. Active participation is required (a presentation of a paper as well as participation in discussions). | |||||
Inhalt | The aim of this seminar is to introduce students to recent research results in the area of programming languages and software engineering. To accomplish that, students will study and present research papers in the area as well as participate in paper discussions. The papers will span topics in both theory and practice, including papers on program verification, program analysis, testing, programming language design, and development tools. A particular focus will be on domain-specific languages. | |||||
Literatur | The publications to be presented will be announced on the seminar home page at least one week before the first session. | |||||
Voraussetzungen / Besonderes | Organizational note: the seminar will meet only when there is a scheduled presentation. Please consult the seminar's home page for information. | |||||
263-2926-00L | Deep Learning for Big Code ![]() ![]() Number of participants limited to 24. The deadline for deregistering expires at the end of the second week of the semester. Students who are still registered after that date, but do not attend the seminar, will officially fail the seminar. | W | 2 KP | 2S | V. Raychev | |
Kurzbeschreibung | The 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. | |||||
Lernziel | The 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. | |||||
Inhalt | The 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. | |||||
Voraussetzungen / Besonderes | 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. The seminar is ideally suited for M.Sc. students in Computer Science. | |||||
263-2930-00L | Blockchain Security Seminar ![]() ![]() Number of participants limited to 24. The deadline for deregistering expires at the end of the second week of the semester. Students who are still registered after that date, but do not attend the seminar, will officially fail the seminar. | W | 2 KP | 2S | P. Tsankov | |
Kurzbeschreibung | This seminar introduces students to the latest research trends in the field of blockchains. | |||||
Lernziel | The 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. | |||||
Inhalt | This 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. |
Seite 1 von 1