Suchergebnis: Katalogdaten im Herbstsemester 2014

CAS in Informatik Information
Fokusfächer und Wahlfächer
NummerTitelTypECTSUmfangDozierende
252-0237-00LConcepts of Object-Oriented ProgrammingW6 KP3V + 2UP. Müller
KurzbeschreibungCourse 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
LernzielAfter 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.
InhaltThe 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
LiteraturWill be announced in the lecture.
Voraussetzungen / BesonderesPrerequisites:
Mastering at least one object-oriented programming language (this course will NOT provide an introduction to object-oriented programming); programming experience
252-0239-00LSoftware VerificationW6 KP3V + 2UB. Meyer, C. A. Furia, S. Nanz
KurzbeschreibungThis course surveys some of the main approaches to software verification, including axiomatic semantics, abstract interpretation, model checking, and testing.
LernzielAfter successfully taking this course, students will have a theoretical and practical understanding of:
* The principles behind fundamental software verification techniques, including Hoare-style axiomatic semantics, abstract interpretation, model checking, and testing.
* Application of the principles to the construction of verification tools, in particular program provers.
* Research challenges in these areas.
InhaltThe idea of software verification has been around for decades, but only recently have the techniques become mature enough to be implemented and be applicable in practice. Progress has been made possible by the convergence of different techniques, originally developed in isolation.

This course embraces this diversity of approaches, by surveying some of the main ideas, techniques, and results in software verification. These include in particular:


* Axiomatic semantics, which provides a foundation of program correctness proofs by supplying a rigorous semantics of programs.
* Abstract interpretation, which provides a general framework to express and design static techniques for program analysis.
* Model checking, which provides efficient techniques for the exhaustive exploration of state-based models of programs and reactive systems.
* Testing, which provides the counterpart to exhaustive techniques by defining dynamic analyses to detect programming mistakes and correct them.

To demonstrate some of the techniques in practice, the course will offer a practical project requiring the application of verification tools to illustrative examples.
LiteraturAxiomatic semantics:

* Michael Huth and Mark Ryan. Logic in Computer Science: Modelling and Reasoning about Systems, second edition. Cambridge University Press, 2004
* Aaron Bradley and Zohar Manna. The Calculus of Computation. Springer, 2007.
* David Gries. The Science of Programming. Springer, 1981.
* Bertrand Meyer. Introduction to the Theory of Programming Languages. Prentice Hall, 1990.
* Flemming Nielson and Hanne Riis Nielson. Semantics with Applications: An Appetizer. Springer, 2007.
* Krzysztof R. Apt, Frank S. de Boer, Ernst-Rüdiger Olderog. Verification of Sequential and Concurrent Programs. Springer, 2009.


Abstract interpretation:

* Flemming Nielson, Hanne Riis Nielson, Chris Hankin: Principles of Program Analysis, Springer, ISBN 3-540-65410-0.
* Neil D. Jones, Flemming Nielson: Abstract Interpretation: a Semantic-Based Tool for Program Analysis


Model checking and real-time:

* Edmund M. Clarke, Orna Grumberg, and Doron A. Peled. Model Checking. MIT Press, 2000.
* Carlo A. Furia, Dino Mandrioli, Angelo Morzenti, and Matteo Rossi. Modeling Time in Computing. Monographs in Theoretical Computer Science. An EATCS series. Springer, 2012.


Testing:

* Mauro Pezzè and Michal Young: Software Testing and Analysis: Process, Principles and Techniques, Wiley, 2007.
* Paul Ammann and Jeff Offutt: Introduction to Software Testing, Cambridge University Press, 2008.
252-0273-01LDistributed Software Engineering Laboratory Information
Im Masterstudium können zusätzlich zu den Vertiefungsübergreifenden Fächern nur max. 10 Kreditpunkte über Laboratorien erarbeitet werden. Weitere Laboratorien werden auf dem Beiblatt aufgeführt.
W8 KP2V + 2U + 3AB. Meyer, P. Kolb, D. M. Nordio
KurzbeschreibungThe Distributed Software Engineering Laboratory introduces the software engineering principles and techniques appropriate for the increasingly prevalent style of modern software development, involving teams spread across teams, companies and countries.

The course involves a distributed project conducted in cooperation with student teams from other universities.
LernzielModern software development is increasingly *distributed*: projects are developed by different groups collaborating across teams, companies, countries, timezones. This setup radically alters the assumptions underlying many of the traditional views of software engineering.

The Distributed Software Engineering Laboratory introduces the principles and techniques for this new paradigm. In line with the "distributed" nature of the topic, the project is performed in collaboration with student teams from other universities in various countries.This course provides students with a clear view of distributed software development, enabling them to participate successfully in distributed projects, and also helping them to devise their own career strategies in the context of the continued trend towards outsourcing.
InhaltBasics of distributed development

The outsourcing phenomenon; country review.

Requirements engineering for distributed projects

Quality assurance for distributed projects.

Process models (especially CMMI) and agile methods

Supplier assessment and qualification.

Negotiating a contract for a distributed project.

Software project management for distributed projects.

Role of interfaces and other technical issues of distributed development.


A key part of the Laboratory is the course project, performed in groups involving teams from other universities. Students get to practice distributed developmemt directly, experiencing issues and applying techniques presented in the course.

The exercise sessions usually start at 9am.
SkriptThe course page includes the full set of slides and links to supplementary documentation.
Voraussetzungen / BesonderesPrerequisites: Basic understanding of programming.
252-0293-00LWireless and Mobile Computing for Entertainment Applications Information W4 KP2V + 1US. Mangold
KurzbeschreibungThis course gives a detailed overview about the 802 standards and summarizes the state of the art for WLANs, WPANs, and WMANs, including new topics such as mesh networks, cognitive radio, and visible light communications. The course combines lectures with a set of assignments in which students are asked to work with a simple JAVA simulation software.
LernzielThe objective of the course is to learn about the general principles of wireless communications, including physics, frequency spectrum regulation, and standards. Further, the most up-to-date standards and protocols used for wireless LAN IEEE 802.11, Bluetooth and Wi-Fi, mesh networks, sensor networks, cellular networks, visible light communication, and cognitive radios, are analyzed and evaluated. Students develop their own add-on mobile computing algorithms to improve the behavior of the systems, using a Java-based event-driven simulator. We also hand out embedded systems that can be used for experiments for optical communication.
InhaltWireless Communication, Wi-Fi, Bluetooth, ZigBee, Standards, Regulation, Algorithms, Radio Spectrum, Cognitive Radio, Mesh Networks, Optical Communication, Visible Light Communication
SkriptThe script will be made available from the course webpage.
Literatur(1) The course blog at Link
(2) The course webpage at Link
(3) The JAVA simulation kernel "jemula"
(4) The JAVA 802 protocol emulator "JEmula802"
(5) WALKE, B. AND MANGOLD, S. AND BERLEMANN, L. (2006) IEEE 802 Wireless Systems Protocols, Multi-Hop Mesh/Relaying, Performance and Spectrum Coexistence. New York U.S.A.: John Wiley & Sons. Nov 2006.
(6) BERLEMANN, L. AND MANGOLD, S. (2009) Cognitive Radio for Dynamic Spectrum Access . New York U.S.A.: John Wiley & Sons. Jan 2009.
(7) MANGOLD, S. ET.AL. (2003) Analysis of IEEE 802.11e for QoS Support in Wireless LANs. IEEE Wireless Communications, vol 10 (6), 40-50.
Voraussetzungen / BesonderesStudents should have interest in wireless communication, and should be familiar with JAVA programming.
252-0341-01LInformation Retrieval Information W4 KP2V + 1UT. Hofmann
KurzbeschreibungIntroduction to information retrieval with a focus on text documents and images. Main topics comprise extraction of characteristic features from documents, index structures, retrieval models, search algorithms, benchmarking, and feedback mechanisms. Searching the web, images and XML collections demonstrate recent applications of information retrieval and their implementation.
LernzielIn depth understanding of managing, indexing, and retrieving documents with text, image and XML content. Knowledge about basic search algorithms on the web, benchmarking of search algorithms, and relevance feedback methods.
252-0373-00LMobile and Personal Information Systems Information W4 KP2V + 1UM. Norrie, M. Nebeling
KurzbeschreibungThe course examines how traditional information systems development techniques have been adapted to support various forms of mobile information systems. Topics to be covered include: databases of mobile objects; development of mobile applications; desktop-to-mobile adaptation of user interfaces; context-awareness; mobile vs. personal and social context.
LernzielStudents will acquire an understanding of why and how traditional data management, application development and user interface design techniques have been adapted for mobile information systems.
InhaltAdvances in mobile devices and communication technologies have led to a rapid increase in demands for various forms of mobile information systems where the users, the applications and the databases themselves may be mobile. Based on both lectures and breakout sessions, this course examines the impact of the different forms of mobility and collaboration that systems require nowadays and how these influence the design of systems at the database, the application and the user interface level. For example, traditional data management techniques have to be adapted to meet the requirements of such systems and cope with new connection, access and synchronisation issues. As mobile devices have increasingly become integrated into the users' lives and are expected to support a range of activities in different environments, applications should be context-aware, adapting functionality, information delivery and the user interfaces to the current environment and task. Various forms of software and hardware sensors may be used to determine the current context, raising interesting issues for discussion. Finally, user mobility, and the varying and intermittent connectivity that it implies, gives rise to new forms of dynamic collaboration that require lightweight, but flexible, mechanisms for information synchronisation and consistency maintenance. Here, the interplay of mobile, personal and social context will receive special attention.
252-0417-00LRandomized Algorithms and Probabilistic MethodsW7 KP3V + 2U + 1AA. Steger, A. Ferber
KurzbeschreibungLas Vegas & Monte Carlo algorithms; inequalities of Markov, Chebyshev, Chernoff; negative correlation; Markov chains: convergence, rapidly mixing; generating functions; Examples include: min cut, median, balls and bins, routing in hypercubes, 3SAT, card shuffling, random walks
LernzielAfter this course students will know fundamental techniques from probabilistic combinatorics for designing randomized algorithms and will be able to apply them to solve typical problems in these areas.
InhaltRandomized Algorithms are algorithms that "flip coins" to take certain decisions. This concept extends the classical model of deterministic algorithms and has become very popular and useful within the last twenty years. In many cases, randomized algorithms are faster, simpler or just more elegant than deterministic ones. In the course, we will discuss basic principles and techniques and derive from them a number of randomized methods for problems in different areas.
SkriptYes.
Literatur- Randomized Algorithms, Rajeev Motwani and Prabhakar Raghavan, Cambridge University Press (1995)
- Probability and Computing, Michael Mitzenmacher and Eli Upfal, Cambridge University Press (2005)
252-0437-00LVerteilte Algorithmen Information W4 KP3VF. Mattern
KurzbeschreibungModelle verteilter Berechnungen; Raum-Zeit Diagramme; Virtuelle Zeit; Logische Uhren und Kausalität; Wellenalgorithmen; Verteilte und parallele Graphtraversierung; Berechnung konsistenter Schnappschüsse; Wechselseitiger Ausschluss; Election und Symmetriebrechung; Verteilte Terminierung; Garbage-Collection in verteilten Systemen; Beobachten verteilter Systeme; Berechnung globaler Prädikate.
LernzielKennenlernen von Modellen und Algorithmen verteilter Systeme.
InhaltVerteilte Algorithmen sind Verfahren, die dadurch charakterisiert sind, dass mehrere autonome Prozesse gleichzeitig Teile eines gemeinsamen Problems in kooperativer Weise bearbeiten und der dabei erforderliche Informationsaustausch ausschliesslich über Nachrichten erfolgt. Derartige Algorithmen kommen im Rahmen verteilter Systeme zum Einsatz, bei denen kein gemeinsamer Speicher existiert und die Übertragungszeit von Nachrichten i.a. nicht vernachlässigt werden kann. Da dabei kein Prozess eine aktuelle konsistente Sicht des globalen Zustands besitzt, führt dies zu interessanten Problemen.
Im einzelnen werden u.a. folgende Themen behandelt:
Modelle verteilter Berechnungen; Raum-Zeit Diagramme; Virtuelle Zeit; Logische Uhren und Kausalität; Wellenalgorithmen; Verteilte und parallele Graphtraversierung; Berechnung konsistenter Schnappschüsse; Wechselseitiger Ausschluss; Election und Symmetriebrechung; Verteilte Terminierung; Garbage-Collection in verteilten Systemen; Beobachten verteilter Systeme; Berechnung globaler Prädikate.
Literatur- F. Mattern: Verteilte Basisalgorithmen, Springer-Verlag
- G. Tel: Topics in Distributed Algorithms, Cambridge University Press
- G. Tel: Introduction to Distributed Algorithms, Cambridge University Press, 2nd edition
- A.D. Kshemkalyani, M. Singhal: Distributed Computing, Cambridge University Press
- N. Lynch: Distributed Algorithms, Morgan Kaufmann Publ
252-0463-00LSecurity Engineering Information W5 KP2V + 2UD. Basin
KurzbeschreibungSubject of the class are engineering techniques for developing secure systems. We examine concepts, methods and tools, applied within the different activities of the SW development process to improve security of the system. Topics: security requirements&risk analysis, system modeling&model-based development methods, implementation-level security, and evaluation criteria for secure systems
LernzielSecurity engineering is an evolving discipline that unifies two important areas: software engineering and security. Software Engineering addresses the development and application of methods for systematically developing, operating, and maintaining, complex, high-quality software.
Security, on the other hand, is concerned with assuring and verifying properties of a system that relate to confidentiality, integrity, and availability of data.

The goal of this class is to survey engineering techniques for developing secure systems. We will examine concepts, methods, and tools that can be applied within the different activities of the software development process, in order to improve the security of the resulting systems.

Topics covered include

* security requirements & risk analysis,
* system modeling and model-based development methods,
* implementation-level security, and
* evaluation criteria for the development of secure systems
InhaltSecurity engineering is an evolving discipline that unifies two important areas: software engineering and security. Software Engineering addresses the development and application of methods for systematically developing, operating, and maintaining, complex, high-quality software.
Security, on the other hand, is concerned with assuring and verifying properties of a system that relate to confidentiality, integrity, and availability of data.

The goal of this class is to survey engineering techniques for developing secure systems. We will examine concepts, methods, and tools that can be applied within the different activities of the software development process, in order to improve the security of the resulting systems.

Topics covered include

* security requirements & risk analysis,
* system modeling and model-based development methods,
* implementation-level security, and
* evaluation criteria for the development of secure systems

Modules taught:

1. Introduction
- Introduction of Infsec group and speakers
- Security meets SW engineering: an introduction
- The activities of SW engineering, and where security fits in
- Overview of this class
2. Requirements Engineering: Security Requirements and some Analysis
- overview: functional and non-functional requirements
- use cases, misuse cases, sequence diagrams
- safety and security
- FMEA, FTA, attack trees
3. Modeling in the design activities
- structure, behavior, and data flow
- class diagrams, statecharts
4. Model-driven security for access control (design)
- SecureUML as a language for access control
- Combining Design Modeling Languages with SecureUML
- Semantics, i.e., what does it all mean,
- Generation
- Examples and experience
5. Model-driven security (Part II)
- Continuation of above topics
6. Security patterns (design and implementation)
7. Implementation-level security
- Buffer overflows
- Input checking
- Injection attacks
8. Testing
- overview
- model-based testing
- testing security properties
9. Risk analysis and management 1 (project management)
- "risk": assets, threats, vulnerabilities, risk
- risk assessment: quantitative and qualitative
- safeguards
- generic risk analysis procedure
- The OCTAVE approach
10. Risk analysis: IT baseline protection
- Overview
- Example
11. Evaluation criteria
- CMMI
- systems security engineering CMM
- common criteria
12. Guest lecture
- TBA
Literatur- Ross Anderson: Security Engineering, Wiley, 2001.
- Matt Bishop: Computer Security, Pearson Education, 2003.
- Ian Sommerville: Software Engineering, 6th ed., Addison-Wesley, 2001.
- John Viega, Gary McGraw: Building Secure Software, Addison-Wesley, 2002.
- Further relevant books and journal/conference articles will be announced in the lecture.
Voraussetzungen / BesonderesPrerequisite: Class on Information Security
252-0523-00LComputational Biology Information W6 KP3V + 2UG. H. Gonnet
KurzbeschreibungStudy of computational techniques, algorithms and data structures used to solve problems in computational biology. Topics: basic biology, string alignment, phylogeny (distance, character, parsimony), molecular evolution, multiple sequence alignment, probabilistic and statistical models, Markov models, microarrays, dynamic programming, maximum likelihood and specialized DNA and protein analysis.
LernzielFamiliarize the students with the basic concepts of molecular biology and the models and algorithms used to understand, classify and predict behaviour of living organism. This course is at the most basic level, where the main issues, mostly of molecular sequences, are studied.
InhaltThis course lies in the intersection between Computer Science and Molecular Biology. The main purpose is to study computational techniques, algorithms and data structures which are usually applied to solve problems in Molecular Biology and Biochemistry.
The following topics are likely to be covered: Introduction, mathematical models of evolution, protein and DNA sequence alignment and its meaning, phylogenetic tree construction, multiple sequence alignments, secondary structure prediction, molecular dynamics, threading, role of bioinformatics in drug design, etc. From the computer science point of view we concentrate our attention in practical solutions for the above problems. Biological knowledge is an asset but not a prerequisite.
252-0527-00LProbabilistic Graphical Models for Image Analysis Information W4 KP3GB. V. McWilliams
KurzbeschreibungThis course will focus on the algorithms for inference and learning with statistical models. We use a framework called probabilistic graphical models which include Bayesian Networks and Markov Random Fields.

We will use examples from traditional vision problems such as image registration and image segmentation, as well as recent problems such as object recognition.
LernzielStudents will be introduced to probablistic graphical models and will learn how to apply them to problems in image analysis and understanding. The focus will be to study various algorithms for inference and parameter learning.
LiteraturWill be announced during the lecture.
252-0535-00LMachine Learning Information W6 KP3V + 2UJ. M. Buhmann
KurzbeschreibungMachine learning algorithms provide analytical methods to search data sets for characteristic patterns. Typical tasks include the classification of data, function fitting and clustering, with applications in image and speech analysis, bioinformatics and exploratory data analysis. This course is accompanied by a practical machine learning projects.
LernzielStudents will be familiarized with the most important concepts and algorithms for supervised and unsupervised learning; reinforce the statistics knowledge which is indispensible to solve modeling problems under uncertainty. Key concepts are the generalization ability of algorithms and systematic approaches to modeling and regularization. A machine learning project will provide an opportunity to test the machine learning algorithms on real world data.
InhaltThe theory of fundamental machine learning concepts is presented in the lecture, and illustrated with relevant applications. Students can deepen their understanding by solving both pen-and-paper and programming exercises, where they implement and apply famous algorithms to real-world data.

Topics covered in the lecture include:

- Bayesian theory of optimal decisions
- Maximum likelihood and Bayesian parameter inference
- Classification with discriminant functions: Perceptrons, Fisher's LDA and support vector machines (SVM)
- Ensemble methods: Bagging and Boosting
- Regression: least squares, ridge and LASSO penalization, non-linear regression and the bias-variance trade-off
- Non parametric density estimation: Parzen windows, nearest nieghbour
- Dimension reduction: principal component analysis (PCA) and beyond
SkriptNo lecture notes, but slides will be made available on the course webpage.
LiteraturC. Bishop. Pattern Recognition and Machine Learning. Springer 2007.

R. Duda, P. Hart, and D. Stork. Pattern Classification. John Wiley &
Sons, second edition, 2001.

T. Hastie, R. Tibshirani, and J. Friedman. The Elements of Statistical
Learning: Data Mining, Inference and Prediction. Springer, 2001.

L. Wasserman. All of Statistics: A Concise Course in Statistical
Inference. Springer, 2004.
Voraussetzungen / BesonderesSolid basic knowledge in analysis, statistics and numerical methods for
CSE. Experience in programming for solving the project tasks.
252-0543-01LComputer Graphics Information W6 KP3V + 2UM. Gross, O. Sorkine Hornung
KurzbeschreibungThis course covers some of the fundamental concepts of computer graphics. The two main parts of the class are image synthesis and geometric modeling.
LernzielAt the end of the course students will be able to design and implement a rendering system based on raytracing. You will study the basic principles of modeling with splines and integrate spline-based representations into a rendering system. In addition we want to stimulate your curiosity to explore the field of computer graphics on your own or in future courses.
InhaltThis course covers some of the fundamental concepts of computer graphics. The two main parts of the class are rendering and modeling. In the first part, we will discuss the basics of photorealistic image synthesis, i.e. how to generate a realistic image from a digital representation of a 3D scene. After introducing raytracing, we will briefly look at the physics of light transport, discuss the rendering equation, and investigate some advanced techniques to enhance the realism of rendered images. The second part will introduce the basics of modeling with curves and surfaces. We will discuss Bezier curves and surfaces, B-Splines and NURBS, and show how they can be used to design complex 3D geometry.
Skriptno
Voraussetzungen / BesonderesPrerequisites:
Fundamentals of calculus and linear algebra, basic concepts of algorithms and data structures, basic programming skills in C-like languages (we use JavaScript for exercises), Visual Computing core course recommended.
252-0546-00LPhysically-Based Simulation in Computer Graphics Information W4 KP2V + 1UB. Solenthaler, B. Thomaszewski
KurzbeschreibungDie Vorlesung gibt eine Einführung in das Gebiet der physikalisch basierten Animation in der Computer Graphik und einen Überblick über fundamentale Methoden und Algorithmen. In den praktischen Übungen werden drei Aufgabenblätter in kleinen Gruppen bearbeitet. Zudem sollen in einem Programmierprojekt die Vorlesungsinhalte in einem 3D Spiel oder einer vergleichbaren Anwendung umgesetzt werden.
LernzielDie Vorlesung gibt eine Einführung in das Gebiet der physikalisch basierten Animation in der Computer Graphik und einen Überblick über fundamentale Methoden und Algorithmen. In den praktischen Übungen werden drei Aufgabenblätter in kleinen Gruppen bearbeitet. Zudem sollen in einem Programmierprojekt die Vorlesungsinhalte in einem 3D Spiel oder einer vergleichbaren Anwendung umgesetzt werden.
InhaltIn der Vorlesung werden Themen aus dem Gebiet der physikalisch-basierten Modellierung wie Partikel-Systeme, Feder-Masse Modelle, die Methoden der Finiten Differenzen und der Finiten Elemente behandelt. Diese Methoden und Techniken werden verwendet um deformierbare Objekte oder Flüssigkeiten zu simulieren mit Anwendungen in Animationsfilmen, 3D Computerspielen oder medizinischen Systemen. Es werden auch Themen wie Starrkörperdynamik, Kollisionsdetektion und Charakteranimation behandelt.
Voraussetzungen / BesonderesBasiskenntnisse in Analysis und Physik, Algorithmen und Datenstrukturen und der Programmierung in C++. Kenntnisse auf den Gebieten Numerische Mathematik sowie Gewoehnliche und Partielle Differentialgleichungen sind von Vorteil, werden aber nicht vorausgesetzt.
252-1407-00LAlgorithmic Game Theory Information W7 KP3V + 2U + 1AP. Widmayer
KurzbeschreibungGame theory provides a formal model to study the behavior and interaction of self-interested users and programs in large-scale distributed computer systems without central control. The course discusses algorithmic aspects of game theory.
LernzielLearning the basic concepts of game theory and mechanism design, acquiring the computational paradigm of self-interested agents, and using these concepts in the computational and algorithmic setting.
InhaltThe Internet is a typical example of a large-scale distributed computer system without central control, with users that are typically only interested in their own good. For instance, they are interested in getting high bandwidth for themselves, but don't care about others, and the same is true for computational load or download rates. Game theory provides a particularly well-suited model for the behaviour and interaction of such selfish users and programs. Classical game theory dates back to the 1930s and typically does not consider algorithmic aspects at all. Only a few years back, algorithms and game theory have been considered together, in an attempt to reconcile selfish behavior of independent agents with the common good.

This course discusses algorithmic aspects of game-theoretic models, with a focus on recent algorithmic and mathematical developments. Rather than giving an overview of such developments, the course aims to study selected important topics in depth.

Outline:
- Introduction to classical game theoretic concepts.
- Existence of stable solutions (equilibria), algorithms for computing equilibria, computational complexity.
- The cost difference between an optimum under central control and an equilibrium under selfish agents, known as the "price of anarchy".
- Auction-like mechanisms and algorithms that "direct" the actions of selfish agents into a certain desired equilibrium situation.
- Selected current research topics of Algorithmic Game Theory, such as Web-Search Based Keyword Auctions, or Information Cascading in Social Networks
SkriptNo lecture notes.
Literatur"Algorithmic Game Theory", edited by N. Nisan, T. Roughgarden, E. Tardos, and V. Vazirani, Cambridge University Press, 2008;

"Game Theory and Strategy", Philip D. Straffin, The Mathematical Association of America, 5th printing, 2004

Several copies of both books are available in the Computer Science library.
Voraussetzungen / BesonderesAudience: Although this is a Computer Science course, we encourage the participation from all students who are interested in this topic.

Requirements: You should enjoy precise mathematical reasoning. You need to have passed a course on algorithms and complexity. No knowledge of game theory is required.
252-1411-00LSecurity of Wireless NetworksW5 KP2V + 1U + 1AS. Capkun, C. Soriente
KurzbeschreibungCore Elements: Wireless communication channel, Wireless network architectures and protocols, Attacks on wireless networks, Protection techniques.
LernzielAfter this course, the students should be able to: describe and classify security goals and attacks in wireless networks; describe security architectures of the following wireless systems and networks: 802.11, GSM/UMTS, RFID, ad hoc/sensor networks; reason about security protocols for wireless network; implement mechanisms to secure
802.11 networks.
InhaltWireless channel basics. Wireless electronic warfare: jamming and target tracking. Basic security protocols in cellular, WLAN and
multi-hop networks. Recent advances in security of multi-hop networks; RFID privacy challenges and solutions.
252-1414-00LSystem SecurityW5 KP2V + 2US. Capkun, A. Perrig
KurzbeschreibungThe first part of the lecture covers individual system's aspects starting with tamperproof or tamperresistant hardware in general over operating system related security mechanisms to application software systems, such as host based intrusion detection systems. In the second part, the focus is on system design and methodologies for large projects.
LernzielIn this lecture, students learn about the security requirements and capabilities that are expected from modern hardware, operating systems and other software environments. An overview of available technologies, algorithms and standards is given, with which these requirements can be met.
InhaltThe first part of the lecture covers individual system's aspects starting with tamperproof or tamperresistant hardware in general over operating system related security mechanisms to application software systems such as host based intrusion detetction systems. The main topics covered are: tamper resistant hardware, CPU support for security, protection mechanisms in the kernel, file system security (permissions / ACLs / network filesystem issues), IPC Security, mechanisms in more modern OS, such as Capabilities and Zones, Libraries and Software tools for security assurance, etc.

In the second part, the focus is on system design and methodologies for large projects. The main question answered is how to get a large secure system. Topics include: patch management, common software faults (buffer overflows, etc.), writing secure software (design, architecture, QA, testing), compiler-supported security, langauge-supported security (java...), logging and auditing (BSM audit, dtrace, ...), cryptographic support, TCG, secure file systems, dos/windows/ windowsXP security issues.

Along the lectures, model cases will be elaborated and evaluated in the exercises.
252-1425-00LGeometry: Combinatorics and Algorithms Information W6 KP2V + 2U + 1AB. Gärtner, M. Hoffmann, E. Welzl
KurzbeschreibungGeometric structures are useful in many areas, and there is a need to understand their structural properties, and to work with them algorithmically. The lecture addresses theoretical foundations concerning geometric structures. Central objects of interest are triangulations. We study combinatorial (Does a certain object exist?) and algorithmic questions (Can we find a certain object efficiently?)
LernzielThe goal is to make students familiar with fundamental concepts, techniques and results in combinatorial and computational geometry, so as to enable them to model, analyze, and solve theoretical and practical problems in the area and in various application domains.
In particular, we want to prepare students for conducting independent research, for instance, within the scope of a thesis project.
InhaltPlanar and geometric graphs, embeddings and their representation (Whitney's Theorem, canonical orderings, DCEL), polygon triangulations and the art gallery theorem, convexity in R^d, planar convex hull algorithms (Jarvis Wrap, Graham Scan, Chan's Algorithm), point set triangulations, Delaunay triangulations (Lawson flips, lifting map, randomized incremental construction), Voronoi diagrams, the Crossing Lemma and incidence bounds, line arrangements (duality, Zone Theorem, ham-sandwich cuts), 3-SUM hardness, counting planar triangulations.
Skriptyes
LiteraturMark de Berg, Marc van Kreveld, Mark Overmars, Otfried Cheong, Computational Geometry: Algorithms and Applications, Springer, 3rd ed., 2008.
Satyan Devadoss, Joseph O'Rourke, Discrete and Computational Geometry, Princeton University Press, 2011.
Stefan Felsner, Geometric Graphs and Arrangements: Some Chapters from Combinatorial Geometry, Teubner, 2004.
Jiri Matousek, Lectures on Discrete Geometry, Springer, 2002.
Takao Nishizeki, Md. Saidur Rahman, Planar Graph Drawing, World Scientific, 2004.
Voraussetzungen / BesonderesPrerequisites: The course assumes basic knowledge of discrete mathematics and algorithms, as supplied in the first semesters of Bachelor Studies at ETH.
Outlook: In the following spring semester there is a seminar "Geometry: Combinatorics and Algorithms" that builds on this course. There are ample possibilities for Semester-, Bachelor- and Master Thesis projects in the area.
252-5703-00LMultimedia Communications Information W4 KP2V + 1UA. Smolic
KurzbeschreibungAfter a summary of fundamentals in signal processing and information theory, an introduction to processing and coding of different types of multimedia is given.
LernzielUnderstanding principles of multimedia communications and getting an illustrative overview of available and emerging technology.
InhaltAfter a summary of fundamentals in signal processing and information theory, an introduction to processing and coding of different types of multimedia is given. This starts with speech (PCM, vocoder, CELP etc.), continues over audio (MP3, AAC etc.), still images (JPEG etc.), video (MPEG-2, MPEG-4, H.264/AVC etc.), and interactive graphics (VRML, MPEG-4), to emerging and future multimedia content such as 3D video and free viewpoint video. Algorithms as well as human perception will be adressed. Content - Fundamentals of information theory - Fundamentals of signal processing and coding - Speech processing and coding - Audio processing and coding - Still image processing and coding - Video processing and Coding - Interactive graphics representation, coding and streaming - Emerging multimedia (3D video, free viewpoint video)
263-2800-00LDesign of Parallel and High-Performance Computing Information W7 KP3V + 2U + 1AT. Hoefler, M. Püschel
KurzbeschreibungAdvanced topics in parallel / concurrent programming.
LernzielUnderstand 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.
263-3010-00LBig Data Information W6 KP3V + 1U + 1AT. Hofmann
KurzbeschreibungOne of the key challenges of the information society is to turn data into information, information into knowledge, and knowledge into value. To turn data into value in this way involves collecting large volumes of data, possibly from many and diverse data sources, processing the data fast, and applying complex operations to the data.
LernzielOne of the key challenges of the information society is to turn data into information, information into knowledge, and knowledge into value. To turn data into value in this way involves collecting large volumes of data, possibly from many and diverse data sources, processing the data fast, and applying complex operations to the data. This combination of requirements is typically referred to as Big Data and it has led to a completely new way to do business (e.g., develop new products and business models) and do science (sometimes referred to as data-driven science or the "fourth paradigm"). Unfortunately, big data grows faster than our ability to process the data so that new architectures and approaches for processing Big Data are needed.
InhaltThe goal of this course is to give an overview of Big Data technologies. All aspects are covered: data formats and models, programming languages, optimization techniques, systems, and applications.
LiteraturPapers from scientific conferences and journals. References will be given as part of the course material during the semester.
252-3610-00LSmart Energy Information W3 KP2GF. Mattern, V. Tiefenbeck
KurzbeschreibungThe lecture covers the role of ICT for sustainable energy usage. Concepts of the emerging smart grid are outlined and approaches to motivate sustainable consumer choices are explained. The lecture combines technologies from ubiquitous computing and traditional ICT with insights from socio-psychological concepts and illustrates them with examples from actual applications.
LernzielParticipants become familiar with the challenges related to sustainable energy usage, understand the principles of a smart grid infrastructure and its applications, know the role of ubiquitous computing technologies, can explain the challenges regarding security and privacy, can reflect the basics cues to induce changes in consumer behavior, develop a general understanding of the effects of a smart grid infrastructure on energy efficiency, and know how to apply the learning to related design projects.
Inhalt- Background on energy generation and consumption; characteristics, potential, and limitations of renewable energy sources
- Introduction to energy economics
- Smart grid and smart metering infrastructures, virtual power plants, security challenges
- Demand managemenet and home automation using ubiquitous computing technologies
- Changing consumer behavior with smart ICT
- Benefits challenges of a smart energy system
LiteraturWill be provided during the course, though a good starting point is "ICT for green: how computers can help us to conserve energy" from Friedemann Mattern, Thosten Staake, and Markus Weiss (available at Link).
Voraussetzungen / BesonderesThe lecture includes interactive exercises, case studies and practical examples.
263-3800-00LAdvanced Operating Systems Information W6 KP2V + 2U + 1AT. Roscoe
KurzbeschreibungThis course is intended to give students a thorough understanding of design and implementation issues for modern operating systems. We will cover key design issues in implementing an operating system, such as memory management, scheduling, protection, inter-process communication, device drivers, and file systems.
LernzielThe goals of the course are, firstly, to give students a broader perspective on OS design than that provided by knowledge of Unix or Windows, building on the material in a standard undergraduate operating systems class, and secondly, to provide them with practical experience in dealing directly with the concurrency, resource management, and abstraction problems confronting OS designers and implementers.
InhaltThis course is intended to give students a thorough understanding of design and implementation issues for modern operating systems. We will cover key design issues in implementing an operating system, such as memory management, scheduling, protection, inter-process communication, device drivers, and file systems. We will pay particular attention to system structures that differ from traditional monolithic arrangements of Unix/Linux and Windows.
Voraussetzungen / BesonderesThe course consists of lectures, project work, and a written examination. Project work will be performed in small groups, where students will implement major components of a microkernel-based operating system. The final assessment will be a combination of project and examination grades.
263-5001-00LIntroduction to Finite Elements and Sparse Linear System Solving Information W4 KP2V + 1UP. Arbenz, T. Kaman
KurzbeschreibungThe finite element (FE) method is the method of choice for (approximately) solving partial differential equations on complicated domains. In the first third of the lecture, we give an introduction to the method. The rest of the lecture will be devoted to methods for solving the large sparse linear systems of equation that a typical for the FE method. We will consider direct and iterative methods.
LernzielStudents will know the most important direct and iterative solvers for sparse linear systems. They will be able to determine which solver to choose in particular situations.
InhaltI. THE FINITE ELEMENT METHOD

(1) Introduction, model problems.

(2) 1D problems. Piecewise polynomials in 1D.

(3) 2D problems. Triangulations. Piecewise polynomials in 2D.

(4) Variational formulations. Galerkin finite element method.

(5) Implementation aspects.


II. DIRECT SOLUTION METHODS

(6) LU and Cholesky decomposition.

(7) Sparse matrices.

(8) Fill-reducing orderings.


III. ITERATIVE SOLUTION METHODS

(9) Stationary iterative methods, preconditioning.

(10) Preconditioned conjugate gradient method (PCG).

(11) Incomplete factorization preconditioning.

(12) Multigrid preconditioning.

(13) Nonsymmetric problems (GMRES, BiCGstab).

(14) Indefinite problems (SYMMLQ, MINRES).
Literatur[1] M. G. Larson, F. Bengzon: The Finite Element Method: Theory, Implementation, and Applications. Springer, Heidelberg, 2013.

[2] H. Elman, D. Sylvester, A. Wathen: Finite elements and fast iterative solvers. OUP, Oxford, 2005.

[3] Y. Saad: Iterative methods for sparse linear systems (2nd ed.). SIAM, Philadelphia, 2003.

[4] T. Davis: Direct Methods for Sparse Linear Systems. SIAM, Philadelphia, 2006.

[5] H.R. Schwarz: Die Methode der finiten Elemente (3rd ed.). Teubner, Stuttgart, 1991.
Voraussetzungen / BesonderesPrerequisites: Linear Algebra, Analysis, Computational Science.
The exercises are made with Matlab.
263-5150-00LScientific Databases Information W4 KP2V + 1UG. H. Gonnet
KurzbeschreibungScientific databases share many aspects with classical DBs, but have additional specific aspects. We will review Relational DBs, Object Oriented DBs, Knowledge DBs, textual DBs and the Semantic Web. All these topics will be studied from the point of view of the scientific applications (Bioinformatics, Physics, Chemistry, Health, Engineering) A toy SDB will be used for exercises.
LernzielThe goals of this course are to:
(a) Familiarize the students with how existing DBs can be used for
scientific applications.
(b) Recognize the areas where SciDBs differ and require additional
features compared to classical DBs.
(c) Be able to understand more easily SciDBs, improve existing ones
or design/create new ones.
(d) Familiarize the students with at least two examples of SciDBs.
Inhalt1) - Introduction, Statement of the problem, course structure, exercises,
why Scientific DBs (SDBs) do not fit exactly the classical DB area.
Hierarchy: File systems, data bases, knowledge bases and variations.
Efficiency issues and how they differ from classical DB.

2) - Relational DB used for scientific data, pros/cons
Introduction to RDB, limitations of the model, basics of SQL,
handling of metadata, examples of scientific use of RDBs.

3) - Object Oriented DB. Rich/structured objects are very appealing
in SDB. OODB primitives and environments. OODB searching.
Space and access time efficiency of OODBs.

4) - Knowledge bases, key-value stores, ontologies, workflow-based
architectures. WASA.

5) - MapReduce / Hadoop

6) - Storing and sharing mathematical objects, Open Math, its relation
with OODB and Knowledge bases. Also the problem of chemical
formula representation.

7) - SGML and XML, human-readable databases, genomic databases.
Advantages of human-readable databases (the huge initial success
of genomic databases).

8) - Semantic web, Resource Description Framework (RDF) triples, SparQL.
An example of very flexible database for knowlege storage. Goals of
the Semantic Web, discussion about its future.

9) - An ideal scenario (and the design of a toy system with most of the
desired features for exploration and exercises).

10) - Automatic dependency management, (make and similar). The graph
theory problem. Critical paths.

11) - Functional testing, Verifiers, Consistency, Short-circuit testing,
Recovery and Automatic recovery, Backup (incremental) methods.

12) - Performance and space issues, various uses of compression,
concurrency control. Hardware issues, clusters, Cloud computing,
Crowd-sourcing.

13) - Guest speaker: Ioannis Xenarios (UniProtKB/Swiss-Prot).
LiteraturSeveral papers and online articles will be made available.
There is no single textbook for this course.
A significant amount of material will be delivered in the lectures making lecture attendance highly recommended.
263-5210-00LProbabilistic Artificial Intelligence Information W4 KP2V + 1UA. Krause
KurzbeschreibungThis course introduces core modeling techniques and algorithms from statistics, optimization, planning, and control and study applications in areas such as sensor networks, robotics, and the Internet.
LernzielHow can we build systems that perform well in uncertain environments and unforeseen situations? How can we develop systems that exhibit "intelligent" behavior, without prescribing explicit rules? How can we build systems that learn from experience in order to improve their performance? We will study core modeling techniques and algorithms from statistics, optimization, planning, and control and study applications in areas such as sensor networks, robotics, and the Internet. The course is designed for upper-level undergraduate and graduate students.
InhaltTopics covered:
- Search (BFS, DFS, A*), constraint satisfaction and optimization
- Tutorial in logic (propositional, first-order)
- Probability
- Bayesian Networks (models, exact and approximative inference, learning) - Temporal models (Hidden Markov Models, Dynamic Bayesian Networks)
- Probabilistic palnning (MDPs, POMPDPs)
- Reinforcement learning
- Combining logic and probability
Voraussetzungen / BesonderesSolid basic knowledge in statistics, algorithms and programming
263-5902-00LComputer Vision Information W6 KP3V + 2UM. Pollefeys, L. Van Gool
KurzbeschreibungThe goal of this course is to provide students with a good understanding of computer vision and image analysis techniques. The main concepts and techniques will be studied in depth and practical algorithms and approaches will be discussed and explored through the exercises.
LernzielThe objectives of this course are:
1. To introduce the fundamental problems of computer vision.
2. To introduce the main concepts and techniques used to solve those.
3. To enable participants to implement solutions for reasonably complex problems.
4. To enable participants to make sense of the computer vision literature.
InhaltCamera models and calibration, invariant features, Multiple-view geometry, Model fitting, Stereo Matching, Segmentation, 2D Shape matching, Shape from Silhouettes, Optical flow, Structure from motion, Tracking, Object recognition, Object category recognition
Voraussetzungen / BesonderesIt is recommended that students have taken the Visual Computing lecture or a similar course introducing basic image processing concepts before taking this course.
227-0577-00LNetwork SecurityW6 KP2V + 1U + 1PB. Plattner, T. P. Dübendorfer, S. Frei, A. Perrig
KurzbeschreibungThis lecture discusses fundamental concepts and technologies in the area of network security. Several case studies illustrate the dark side of the Internet and explain how to protect against such threats. A hands-on computer lab that accompanies the lecture gives a deep dive on firewalls, penetration testing and intrusion detection.
Lernziel•Students are aware of current threats that Internet services and networked devices face and can explain appropriate countermeasures.
•Students can identify and assess known vulnerabilities in a software system that is connected to the Internet.
•Students know fundamental network security concepts.
•Students have an in-depth understanding of important security technologies.
•Students know how to configure a real firewall and know some penetration testing tools from their own experience.
InhaltRisk management and the vulnerability lifecycle of software and networked services are discussed. Threats like denial of service, spam, worms, and viruses are studied in-depth. Fundamental security related concepts like identity, availability, authentication and secure channels are introduced. State of the art technologies like secure shell, network and transport layer security, intrusion detection and prevention systems, cross-site scripting, secure implementation techniques and more for securing the Internet and web applications are presented. Several case studies illustrate the dark side of the Internet and explain how to protect against current threats. A hands-on computer lab that accompanies the lecture gives a deep dive on firewalls, penetration testing and intrusion detection.
This lecture is intended for students with an interest in securing Internet services and networked devices. Students are assumed to have knowledge in networking as taught in the Communication Networks lecture. This lecture and the exam are held in English.
Voraussetzungen / BesonderesKnowldedge in computer networking and Internet protocols (e.g. course Communication Networks (D-ITET) or Operating Systems and Networks (D-INFK).

Due to recent changes in the Swiss law, ETH requires each student of this course to sign a written declaration that he/she will not use the information given in this for illegal purposes. This declaration will have to be signed and submitted no later than at the begining of the second lesson.
227-0778-00LHardware/Software Codesign Information W6 KP2V + 2UL. Thiele
KurzbeschreibungDie Lehrveranstaltung vermittelt fortgeschrittene Kenntnisse im Entwurf komplexer Computersysteme, vor allem eingebettete Systeme. Speziell werden den Studierenden Modelle und Methoden vermittelt, die grundlegend sind fuer den Entwurf von Systemen, die aus Software- und Hardware Komponenten bestehen.
LernzielDie Lehrveranstaltung vermittelt fortgeschrittene Kenntnisse im Entwurf komplexer Computersysteme, vor allem eingebettete Systeme. Speziell werden den Studierenden Modelle und Methoden vermittelt, die grundlegend sind fuer den Entwurf von Systemen, die aus Software- und Hardware Komponenten bestehen.
InhaltDie Lehrveranstaltung vermittelt die folgenden Kenntnisse: (a) Modelle zur Beschreibung von Hardware und Software, (b) Hardware-Software Schnittstellen (Instruktionssatz, Hardware- und Software Komponenten, rekonfigurierbare Architekturen und FPGAs, heterogene Rechnerarchitekturen, System-on-Chip), (c) Anwendungsspezifische Prozessoren und Codegenerierung, (d) Performanzanalzyse und Schaetzung, (e) Systementwurf (Hardware-Software Partitionierung und Explorationsverfahren).
SkriptUnterlagen zur Übung, Kopien der Vorlesungsunterlagen.
LiteraturPeter Marwedel, Embedded System Design, Springer, ISBN-13 978-94-007-0256-1, 2011.

Peter Marwedel, Eingebettete Systeme, Springer, ISBN-13 978-3-540-34048-53, 2007.

Wayne Wolf. Computers as Components. Morgan Kaufmann, ISBN-13: 978-0123884367, 2012.

G. DeMicheli, R. Ernst and W. Wolf, Readings in Hw/Sw Co-design, M. Kaufmann, 2003.
Voraussetzungen / BesonderesVoraussetzung zum Besuch der Veranstaltung sind Basiskenntnisse in den folgenden Bereichen: Rechnerarchitektur, Digitaltechnik, Softwareentwurf, eingebettete Systeme
401-0647-00LIntroduction to Mathematical Optimization Information W5 KP2V + 1UU.‑U. Haus, R. Zenklusen
KurzbeschreibungIntroduction to basic techniques and problems of mathematical optimization.
LernzielThe goal is to get a good understanding of some of the most important mathematical optimization techniques used to solve linear programs and basic combinatorial optimization problems.
InhaltTopics covered in this course include:
- Linear programming (simplex method, duality theory, shadow prices, ...).
- Basic combinatorial optimization problems (spanning trees, network flows, knapsack problem, ...).
LiteraturInformation about relevant literature will be given in the lecture.
Voraussetzungen / BesonderesThis course is meant for students who did not already attend the course "Mathematical Optimization", which is a more advance lecture covering similar topics and more.
636-0007-00LComputational Systems BiologyW6 KP3V + 2UJ. Stelling
KurzbeschreibungStudy of fundamental concepts, models and computational methods for the analysis of complex biological networks. Topics: Systems approaches in biology, biology and reaction network fundamentals, modeling and simulation approaches (topological, probabilistic, stoichiometric, qualitative, linear / nonlinear ODEs, stochastic), and systems analysis (complexity reduction, stability, identification).
LernzielThe aim of this course is to provide an introductory overview of mathematical and computational methods for the modeling, simulation and analysis of biological networks.
InhaltBiology has witnessed an unprecedented increase in experimental data and, correspondingly, an increased need for computational methods to analyze this data. The explosion of sequenced genomes, and subsequently, of bioinformatics methods for the storage, analysis and comparison of genetic sequences provides a prominent example. Recently, however, an additional area of research, captured by the label "Systems Biology", focuses on how networks, which are more than the mere sum of their parts' properties, establish biological functions. This is essentially a task of reverse engineering. The aim of this course is to provide an introductory overview of corresponding computational methods for the modeling, simulation and analysis of biological networks. We will start with an introduction into the basic units, functions and design principles that are relevant for biology at the level of individual cells. Making extensive use of example systems, the course will then focus on methods and algorithms that allow for the investigation of biological networks with increasing detail. These include (i) graph theoretical approaches for revealing large-scale network organization, (ii) probabilistic (Bayesian) network representations, (iii) structural network analysis based on reaction stoichiometries, (iv) qualitative methods for dynamic modeling and simulation (Boolean and piece-wise linear approaches), (v) mechanistic modeling using ordinary differential equations (ODEs) and finally (vi) stochastic simulation methods.
LiteraturU. Alon, An introduction to systems biology. Chapman & Hall / CRC, 2006.

Z. Szallasi et al. (eds.), System modeling in cellular biology. MIT Press, 2006.
252-1409-00LGraph Theory: Advanced Topics
Findet dieses Semester nicht statt.
W5 KP2V + 1U + 1A
KurzbeschreibungThe course presents advanced techniques in graph theory, giving a mixture of classical and very recent methods. Topics may include
- random graphs: threshold functions and the evolution of random graphs, Achlioptas processes
- regularity lemma
- container method
- expanders
- separators in planar graphs and subexponential algorithms
- tree width
- property testing
LernzielUpon successful completion of the course, the students are expected to be familiar with some of the central open problems of modern graph theory and with some of the main tools that were developed in order to tackle these problems. Their understanding of the learned tools is expected to be deep enough for them to apply these tools independently.
Voraussetzungen / BesonderesThis course requires "Graphs and Algorithms" or a similar lecture.

Attending the course without a preceding course on graph theory is possible if the student is willing to do some extra reading and to accept some standard theorems on graphs without proofs.
263-2910-00LProgram Analysis Information
Findet dieses Semester nicht statt.
The course will be offered again in the spring semester 2015.
W4 KP2V + 1UM. Vechev
KurzbeschreibungModern program analysis techniques are the predominant approach for automatically reasoning about real world programs -- its techniques have been applied in a vast range of application domains.

The course provides an introduction to the fundamental principles, applications, and research trends of modern program analysis.

Course website: Link
LernzielThe course has 4 main objectives:

* Understand the foundational principles behind program analysis techniques.

* Understand how to apply these principles to build practical, working analyzers for real world problems.

* Understand how to combine these techniques with other approaches (e.g. machine learning techniques) to build powerful end-to-end reasoning systems, not possible otherwise.

* Gain familiarity with the state-of-the-art in the area and the future research trends in the next 5-10 years.
InhaltThe 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.
* combinations with machine learning techniques for learning from massive programming data guiding prediction of program properties and prediction of new code.
* 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, principles and research trends, including:

* Static & Dynamic Analysis:
- concepts: memory safety, typestate, concurrency analysis, abstract interpretation (domains, soundness, precision, fixed points)
- frameworks: Valgrind, FastTrack, EventRacer, Apron, PPL

* Statistical program reasoning:
- concepts: combining analysis with statistical models (e.g. Language models, Bayesian networks, Neural networks, etc)
- frameworks: Slang, JSNice (Link)

* 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

* 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

* 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 reasoning engine (e.g. analysis, predictions) for a modern programming language.
SkriptThe lectures notes will be distributed in class.
LiteraturDistributed in class.
Voraussetzungen / BesonderesThis course is aimed at both graduate (M.Sc., PhD) students as well as advanced undergraduate students.
263-3700-00LUser Interface Engineering Information
Findet dieses Semester nicht statt.
The course will be offered again in the spring semester 2015.
W4 KP2V + 1UO. Hilliges
Kurzbeschreibung
LernzielStudierende sollen verschiedene Ansätze für den Entwurf, die Entwicklung und Bewertung von Mensch-Maschine-Schnittstellen kennen lernen und deren Vor- und Nachteile verstehen. Sie sollen ein Verständnis für einen Mensch-zentrierten Systementwurf entwickeln. Ausserdem sollen Studenten die zugrundelegenden Aspekte der Sensor- und Ausgabetechnologien verstehen, sowie ein grundlegendes Verständnis von Algorithmen zum verarbeiten von User input in moderne Computersysteme entwickeln.

Insbesondere werden dabei Techniken zum Erfassen von Touch input sowie fundamentale Konzepte in der Erweiterten Realitaet und in Gesten basierter Interaktion vermittelt. Am Ende der Vorlesung sollten Studenten in der Lage sein anspruchsvolle user interface Technologien zu verstehen und anzuwenden, und in der Lage sein Systeme die unkonventionelle Sensorik und Displaytechnologien beinhalten zu entwickeln.
SkriptDie Vorlesungsfolien und weitere verwendete Materialien werden online gestellt. Vorlesungsmaterialien werden typischerweise erst nach dem Vorlesungstermin online gestellt.
LiteraturEine detailierte Literaturliste wird online zur Verfuegung gestellt.