Search result: Catalogue data in Autumn Semester 2022
Computer Science Bachelor | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
First Year Examinations | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
First Year Examination Block 1 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Number | Title | Type | ECTS | Hours | Lecturers | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
401-0131-00L | Linear Algebra | O | 7 credits | 4V + 2U | Ö. Imamoglu, O. Sorkine Hornung | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Abstract | Introduction to linear algebra (vector spaces, linear transformations, matrices), inner product, determinants, matrix decompositions (LU, QR, eigenvalue and singular value decomposition). | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Objective | - Understand and apply fundamental concepts of linear algebra - Learn about applications of linear algebra | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Content | Linear Algebra: Linear systems of equations, vectors and matrices, norms and scalar products, LU decomposition, vector spaces and linear transformations, least squares problems, QR decomposition, determinants, eigenvalues and eigenvectors, singular value decomposition, applications. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Lecture notes | See course website | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Literature | Recommendations on the course website | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Prerequisites / Notice | The relevant high school material is reviewed briefly at the beginning. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Competencies |
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
252-0025-01L | Discrete Mathematics | O | 7 credits | 4V + 2U | U. Maurer | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Abstract | Content: Mathematical reasoning and proofs, abstraction. Sets, relations (e.g. equivalence and order relations), functions, (un-)countability, number theory, algebra (groups, rings, fields, polynomials, subalgebras, morphisms), logic (propositional and predicate logic, proof calculi). | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Objective | The primary goals of this course are (1) to introduce the most important concepts of discrete mathematics, (2) to understand and appreciate the role of abstraction and mathematical proofs, and (3) to discuss a number of applications, e.g. in cryptography, coding theory, and algorithm theory. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Content | See course description. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Lecture notes | available (in english) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
252-0027-00L | Introduction to Programming | O | 7 credits | 4V + 2U | T. Gross | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Abstract | Introduction to fundamental concepts of modern programming and operational skills for developing high-quality programs, including large programs as in industry. The course introduces software engineering principles with an object-oriented approach based. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Objective | Many people can write programs. The "Introduction to Programming" course goes beyond that basic goal: it teaches the fundamental concepts and skills necessary to perform programming at a professional level. As a result of successfully completing the course, students master the fundamental control structures, data structures, reasoning patterns and programming language mechanisms characterizing modern programming, as well as the fundamental rules of producing high-quality software. They have the necessary programming background for later courses introducing programming skills in specialized application areas. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Content | Basics of object-oriented programming. Objects and classes. Pre- and postconditions, class invariants, design by contract. Fundamental control structures. Assignment and references. Fundamental data structures and algorithms. Recursion. Inheritance and interfaces, basic concepts of Software Engineering such as the software process, specification and documentation, debugging, reuse and quality assurance. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Lecture notes | The lecture slides are available for download on the course page. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Literature | See the course page for up-to-date information. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Prerequisites / Notice | There are no special prerequisites. Students are expected to enroll in the other courses offered to first-year students of computer science. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
252-0026-00L | Algorithms and Data Structures | O | 7 credits | 3V + 2U + 1A | M. Püschel, D. Steurer | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Abstract | The course provides the foundation of the design and analysis of algorithms. The material is introduced using classical algorithmic problems including graph problems. The necessary basic introduction to graph theory is provided as part of this course. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Objective | An understanding of the design and analysis of fundamental algorithms and data structures. A basic understanding of graph theory and several basic graph algorithms. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Content | This course is an introduction into the design and analysis of algorithms. On the one hand this includes classical algorithm design patterns including induction, divide-and-conquer and dynamic programming. We study these using classical example such as searching and sorting. On the other hand the course covers the interaction between algorithms and data structures including linked lists, search trees, heaps, and union-find structures. A particular focus are graph algorithms for shortest path and minimal spanning tree problems. We provide the necessary introduction into graph theory as part of this course. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Lecture notes | A complete script in German is under development. A complete draft is already available on the course website. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Literature | Abgesehen vom Skript und Vorlesungsunterlagen empfehlen wir die folgenden Bücher als zusätzliches Nachschlagewerk. Th. Ottmann, P. Widmayer: Algorithmen und Datenstrukturen, Spektrum-Verlag, 5. Auflage, Heidelberg, Berlin, Oxford, 2011 Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein: An Introduction to Algorithms, 3rd edition, MIT Press, 2009 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
First Year Examination Block 2 Offered in the spring semester. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Basic Courses | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Number | Title | Type | ECTS | Hours | Lecturers | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
252-0057-00L | Theoretical Computer Science | O | 7 credits | 4V + 2U | J. Hromkovic, H.‑J. Böckenhauer, D. Komm | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Abstract | Concepts to cope with: a) what can be accomplished in a fully automated fashion (algorithmically solvable) b) How to measure the inherent difficulty of tasks (problems) c) What is randomness and how can it be useful? d) What is nondeterminism and what role does it play in CS? e) How to represent infinite objects by finite automata and grammars? | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Objective | Learning the basic concepts of computer science along their historical development | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Content | This lecture gives an introduction to theoretical computer science, presenting the basic concepts and methods of computer science in its historical context. We present computer science as an interdisciplinary science which, on the one hand, investigates the border between the possible and the impossible and the quantitative laws of information processing, and, on the other hand, designs, analyzes, verifies, and implements computer systems. The main topics of the lecture are: - alphabets, words, languages, measuring the information content of words, representation of algorithmic tasks - finite automata, regular and context-free grammars - Turing machines and computability - complexity theory and NP-completeness - design of algorithms for hard problems | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Lecture notes | The lecture is covered in detail by the textbook "Theoretical Computer Science". | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Literature | Basic literature: 1. J. Hromkovic: Theoretische Informatik. 5th edition, Springer Vieweg 2014. 2. J. Hromkovic: Theoretical Computer Science. Springer 2004. Further reading: 3. M. Sipser: Introduction to the Theory of Computation, PWS Publ. Comp.1997 4. J.E. Hopcroft, R. Motwani, J.D. Ullman: Introduction to Automata Theory, Languages, and Computation (3rd Edition), Addison-Wesley 2006. 5. I. Wegener: Theoretische Informatik. Teubner. More exercises and examples in: 6. A. Asteroth, Ch. Baier: Theoretische Informatik | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Prerequisites / Notice | During the semester, two non-obligatory test exams will be offered. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
252-0061-00L | Systems Programming and Computer Architecture | O | 7 credits | 4V + 2U | T. Roscoe, A. Klimovic | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Abstract | Introduction to systems programming. C and assembly language, floating point arithmetic, basic translation of C into assembler, compiler optimizations, manual optimizations. How hardware features like superscalar architecture, exceptions and interrupts, caches, virtual memory, multicore processors, devices, and memory systems function and affect correctness, performance, and optimization. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Objective | The course objectives are for students to: 1. Develop a deep understanding of, and intuition about, the execution of all the layers (compiler, runtime, OS, etc.) between programs in high-level languages and the underlying hardware: the impact of compiler decisions, the role of the operating system, the effects of hardware on code performance and scalability, etc. 2. Be able to write correct, efficient programs on modern hardware, not only in C but high-level languages as well. 3. Understand Systems Programming as a complement to other disciplines within Computer Science and other forms of software development. This course does not cover how to design or build a processor or computer. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Content | This course provides an overview of "computers" as a platform for the execution of (compiled) computer programs. This course provides a programmer's view of how computer systems execute programs, store information, and communicate. The course introduces the major computer architecture structures that have direct influence on the execution of programs (processors with registers, caches, other levels of the memory hierarchy, supervisor/kernel mode, and I/O structures) and covers implementation and representation issues only to the extend that they are necessary to understand the structure and operation of a computer system. The course attempts to expose students to the practical issues that affect performance, portability, security, robustness, and extensibility. This course provides a foundation for subsequent courses on operating systems, networks, compilers and many other courses that require an understanding of the system-level issues. Topics covered include: machine-level code and its generation by optimizing compilers, address translation, input and output, trap/event handlers, performance evaluation and optimization (with a focus on the practical aspects of data collection and analysis). | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Lecture notes | - C programmnig - Integers - Pointers and dynamic memory allocation - Basic computer architecture - Compiling C control flow and data structures - Code vulnerabilities - Implementing memory allocation - Linking - Floating point - Optimizing compilers - Architecture and optimization - Caches - Exceptions - Virtual memory - Multicore - Devices | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Literature | The course is based in part on "Computer Systems: A Programmer's Perspective" (3rd Edition) by R. Bryant and D. O'Hallaron, with additional material. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Prerequisites / Notice | 252-0029-00L Parallel Programming 252-0028-00L Design of Digital Circuits | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
401-0213-16L | Analysis II | O | 5 credits | 2V + 2U | Ö. Imamoglu | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Abstract | Differential and Integral calculus in many variables, vector analysis. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Objective | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Literature | Für allgemeine Informationen, sehen Sie bitte die Webseite der Vorlesung | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
401-0663-00L | Numerical Methods for Computer Science | O | 7 credits | 2V + 2U + 2P | R. Hiptmair | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Abstract | The course gives an introduction into fundamental techniques and algorithms of numerical mathematics which play a central role in numerical simulations in science and technology. The course focuses on fundamental ideas and algorithmic aspects of numerical methods. The exercises involve actual implementation of numerical methods in C++. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Objective | * Knowledge of the fundamental algorithms in numerical mathematics * Knowledge of the essential terms in numerical mathematics and the techniques used for the analysis of numerical algorithms * Ability to choose the appropriate numerical method for concrete problems * Ability to interpret numerical results * Ability to implement numerical algorithms afficiently | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Content | First two weeks: A gentle introduction to C++ 1. Computing with Matrices and Vectors 1.1 Fundamentals 1.2 Software and Libraries 1.4 Computational Effort 1.5 Machine Arithmetic and Consequences 2. Direct Methods for (Square) Linear Systems of Equations 2.1 Introduction: Linear Systems of Equations 2.3 Gaussian Elimination 2.6 Exploiting Structure when Solving Linear Systems 2.7 Sparse Linear Systems 3. Direct Methods for Linear Least Squares Problems 3.1 Least Squares Solution Concepts 3.2 Normal Equation Methods 3.3 Orthogonal Transformation Methods 3.3.1 Transformation Idea 3.3.2 Orthogonal/Unitary Matrices 3.3.3 QR-Decomposition 3.3.4 QR-Based Solver for Linear Least Squares Problems 3.4 Singular Value Decomposition 4. Filtering Algorithms 4.1 Filters and Convolutions 4.2 Discrete Fourier Transform (DFT) 4.3 Fast Fourier Transform (FFT) 5. Machine Learning of One-Dimensional Data (Data Interpolation and Data Fitting in 1D) 5.1 Abstract Interpolation (AI) 5.2 Global Polynomial Interpolation 8. Iterative Methods for Non-Linear Systems of Equations 8.1 Introduction 8.2 Iterative Methods 8.3 Fixed-Point Iterations 8.4 Finding Zeros of Scalar Functions 8.5 Newton’s Method in Rn 8.6. Quasi-Newton Method | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Lecture notes | Lecture materials (PDF documents and codes) will be made available to the participants through the course web page and online repositories. Access information will be communicated in the beginning of the course. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Literature | U. ASCHER AND C. GREIF, A First Course in Numerical Methods, SIAM, Philadelphia, 2011. A. QUARTERONI, R. SACCO, AND F. SALERI, Numerical mathematics, vol. 37 of Texts in Applied Mathematics, Springer, New York, 2000. W. Dahmen, A. Reusken "Numerik für Ingenieure und Naturwissenschaftler", Springer 2006. W. Gander, M.J. Gander, and F. Kwok "Scientific Computing", Springer 2014. M. Hanke-Bourgeois "Grundlagen der Numerischen Mathematik und des wissenschaftlichen Rechnens", BG Teubner, 2002 P. Deuflhard and A. Hohmann, "Numerische Mathematik I", DeGruyter, 2002 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Prerequisites / Notice | The course will be accompanied by programming exercises in C++ relying on the template library EIGEN. Familiarity with C++, object oriented and generic programming is an advantage. Participants of the course are expected to learn C++ by themselves, in case they do not know it already. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Competencies |
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Core Courses | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Major: Information and Data Processing | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Number | Title | Type | ECTS | Hours | Lecturers | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
252-0206-00L | Visual Computing | O | 8 credits | 4V + 3U | M. Gross, M. Pollefeys | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Abstract | This course acquaints students with core knowledge in computer graphics, image processing, multimedia and computer vision. Topics include: Graphics pipeline, perception and camera models, transformation, shading, global illumination, texturing, sampling, filtering, image representations, image and video compression, edge detection and optical flow. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Objective | This course provides an in-depth introduction to the core concepts of computer graphics, image processing, multimedia and computer vision. The course forms a basis for the specialization track Visual Computing of the CS master program at ETH. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Content | Course topics will include: Graphics pipeline, perception and color models, camera models, transformations and projection, projections, lighting, shading, global illumination, texturing, sampling theorem, Fourier transforms, image representations, convolution, linear filtering, diffusion, nonlinear filtering, edge detection, optical flow, image and video compression. In theoretical and practical homework assignments students will learn to apply and implement the presented concepts and algorithms. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Lecture notes | A scriptum will be handed out for a part of the course. Copies of the slides will be available for download. We will also provide a detailed list of references and textbooks. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Literature | Markus Gross: Computer Graphics, scriptum, 1994-2005 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Major: Theoretical Computer Science | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Number | Title | Type | ECTS | Hours | Lecturers | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
252-0209-00L | Algorithms, Probability, and Computing | O | 8 credits | 4V + 2U + 1A | B. Gärtner, R. Kyng, A. Steger, D. Steurer, E. Welzl | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Abstract | Advanced design and analysis methods for algorithms and data structures: Random(ized) Search Trees, Point Location, Minimum Cut, Linear Programming, Randomized Algebraic Algorithms (matchings), Probabilistically Checkable Proofs (introduction). | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Objective | Studying and understanding of fundamental advanced concepts in algorithms, data structures and complexity theory. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Lecture notes | Will be handed out. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Literature | Introduction to Algorithms by T. H. Cormen, C. E. Leiserson, R. L. Rivest; Randomized Algorithms by R. Motwani und P. Raghavan; Computational Geometry - Algorithms and Applications by M. de Berg, M. van Kreveld, M. Overmars, O. Schwarzkopf. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Major: Systems and Software Engineering | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Number | Title | Type | ECTS | Hours | Lecturers | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
252-0210-00L | Compiler Design | O | 8 credits | 4V + 3U | Z. Su | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Abstract | This course uses compilers as examples to expose students to modern software development techniques. Tentative topics include: compiler organization; lexical analysis; top-down and bottom-up parsing; symbol tables; semantic analysis; code generation; local and global optimization; register allocation; automatic memory management. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Objective | Learn principles of compiler design; gain practical experience designing and implementing a medium-scale software system. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Content | This course uses compilers as example to expose modern software development techniques. The course introduces the students to the fundamentals of compiler construction. Students will implement a simple yet complete compiler for an object-oriented programming language for a realistic target machine. Students will learn the use of appropriate tools. Throughout the course, students learn to apply their knowledge of theory (automata, grammars, stack machines, program transformation) and well-known programming techniques (module definitions, design patterns, frameworks, software reuse) in a software project. A tentative list of topics: compiler organization; lexical analysis; top-down and bottom-up parsing; symbol tables; semantic analysis; code generation; local and global optimization; register allocation; automatic memory management; optional advanced topics if/when time permits. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Literature | Aho/Lam/Sethi/Ullmann, Compilers - Principles, Techniques, and Tools (2nd Edition) Muchnick, Advanced Compiler Design and Implementation, Morgan Kaufmann Publishers, 1997 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Prerequisites / Notice | Prerequisites: Prior exposure to modern techniques for program construction, knowledge of at least one processor architecture at the assembly language level. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
252-0217-00L | Computer Systems | O | 8 credits | 4V + 2U + 1A | T. Roscoe, S. Shinde, R. Wattenhofer | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Abstract | This course is about real computer systems, and the principles on which they are designed and built. We cover both modern OSes and the large-scale distributed systems that power today's online services. We illustrate the ideas with real-world examples, but emphasize common theoretical results, practical tradeoffs, and design principles that apply across many different scales and technologies. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Objective | The objective of the course is for students to understand the theoretical principles, practical considerations, performance tradeoffs, and engineering techniques on which the software underpinning almost all modern computer systems is based, ranging from single embedded systems-on-chip in mobile phones to large-scale geo-replicated groups of datacenters. By the end of the course, students should be able to reason about highly complex, real, operational software systems, applying concepts such as hierarchy, modularity, consistency, durability, availability, fault-tolerance, and replication. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Content | This course subsumes the topics of both "operating systems" and "distributed systems" into a single coherent picture (reflecting the reality that these disciplines are highly converged). The focus is system software: the foundations of modern computer systems from mobile phones to the large-scale geo-replicated data centers on which Internet companies like Amazon, Facebook, Google, and Microsoft are based. We will cover a range of topics, such as: scheduling, network protocol stacks, multiplexing and demultiplexing, operating system structure, inter-process communication, memory managment, file systems, naming, dataflow, data storage, persistence, and durability, computer systems performance, remove procedure call, consensus and agreement, fault tolerance, physical and logical clocks, virtualization, and blockchains. The format of the course is a set of about 25 topics, each covered in a lecture. A script will be published online ahead of each lecture, and the latter will consist of an interactive elaboration of the material in the script. There is no book for the course, but we will refer to books and research papers throughout to provide additional background and explanation. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Prerequisites / Notice | We will assume knowlege of the "Systems Programming" and "Computer Networks" courses (or equivalent), and their prerequisites, and build upon them. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Electives Students may also choose courses from the Master's program in Computer Science. It is their responsibility to make sure that they meet the requirements and conditions for these courses. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Number | Title | Type | ECTS | Hours | Lecturers | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
252-0293-00L | Wireless Networking and Mobile Computing | W | 4 credits | 2V + 1U | S. Mangold | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Abstract | This course gives an overview about wireless standards and summarizes the state of art for Wi-Fi 802.11, Cellular 5G, and Internet-of-Things, contact tracing with Bluetooth, audio communication, visible light communications, medical technology. The course combines lectures with a set of assignments in which students are asked to work with a JAVA simulation tool, and Arduino boards. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Objective | The 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, Wi-Fi, Internet-of-Things, 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. Throughout the course, insights from telecommunications, toy industry, and medical technology industry are shared. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Content | Wireless Communication, Wi-Fi, Contact Tracing, Bluetooth, Internet-of-Things, 5G, Standards, Regulation, Algorithms, Radio Spectrum, Cognitive Radio, Mesh Networks, Optical Communication, Visible Light Communication. We will address contact tracing, radio link budget, location distance measurements, and Bluetooth in more depth. MedTech basics are also provided. Chapters: 1 Introduction 2 Wireless Communication Basics 3 IEEE 802.11 Wireless LAN (Wi-Fi) 4 IEEE 802.15 Wireless PAN (ZigBee & Bluetooth) 5 Mobile Computing Algorithm Basics: Control and Game Theory 6 Visible Light Communication 7 Audio Communication 8 Cellular Networking Basics (LTE, 5G, Internet-of-Things) 9 Mobile Computing for Automated Medicine Delivery 10 Cognitive Radio, Delay Tolerant Networking, Radio Spectrum Sharing | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Lecture notes | The course material will be made available by the lecturer. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Literature | (1) The course webpage (look for Stefan Mangold's site) (2) The Java 802 protocol emulator "JEmula802" from Link (3) 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. (4) BERLEMANN, L. AND MANGOLD, S. (2009) Cognitive Radio for Dynamic Spectrum Access . New York U.S.A.: John Wiley & Sons. Jan 2009. (5) MANGOLD, S. ET.AL. (2003) Analysis of IEEE 802.11e for QoS Support in Wireless LANs. IEEE Wireless Communications, vol 10 (6), 40-50. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Prerequisites / Notice | Students should have interest in wireless communication, and should be familiar with Java programming. Experience with GNU Octave or Matlab will help too (not required). | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Competencies |
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
252-3110-00L | Human Computer Interaction Number of participants limited to 150. | W | 6 credits | 2V + 1U + 2A | C. Holz, O. Hilliges | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Abstract | The course provides an introduction to the field of human-computer interaction, emphasising the central role of the user in system design. Through detailed case studies, students will be introduced to different methods used to analyse the user experience and shown how these can inform the design of new interfaces, systems and technologies. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Objective | The goal of the course is that students should understand the principles of user-centred design and be able to apply these in practice. As well as understand the basic notions of Computational Design in a HCI context. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Content | The course will introduce students to several methods of analysing the user experience, showing how these can be used at different stages of system development from requirements analysis through to usability testing. Students will get experience of designing and carrying out user studies as well as analysing results. The course will also cover the basic principles of interaction design. Practical exercises related to touch and gesture-based interaction will be used to reinforce the concepts introduced in the lecture. To get students to further think beyond traditional system design, we will discuss issues related to ambient information and awareness. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
151-0107-20L | High Performance Computing for Science and Engineering (HPCSE) I | W | 4 credits | 4G | S. M. Martin, J. H. Walther | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Abstract | This course gives an introduction into algorithms and numerical methods for parallel computing on shared and distributed memory architectures. The algorithms and methods are supported with problems that appear frequently in science and engineering. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Objective | With manufacturing processes reaching its limits in terms of transistor density on today’s computing architectures, efficient utilization of computing resources must include parallel execution to maintain scaling. The use of computers in academia, industry and society is a fundamental tool for problem solving today while the “think parallel” mind-set of developers is still lagging behind. The aim of the course is to introduce the student to the fundamentals of parallel programming using shared and distributed memory programming models. The goal is on learning to apply these techniques with the help of examples frequently found in science and engineering and to deploy them on large scale high performance computing (HPC) architectures. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Content | 1. Hardware and Architecture: Moore’s Law, Instruction set architectures (MIPS, RISC, CISC), Instruction pipelines, Caches, Flynn’s taxonomy, Vector instructions (for Intel x86) 2. Shared memory parallelism: Threads, Memory models, Cache coherency, Mutual exclusion, Uniform and Non-Uniform memory access, Open Multi-Processing (OpenMP) 3. Distributed memory parallelism: Message Passing Interface (MPI), Point-to-Point and collective communication, Blocking and non-blocking methods, Parallel file I/O, Hybrid programming models 4. Performance and parallel efficiency analysis: Performance analysis of algorithms, Roofline model, Amdahl’s Law, Strong and weak scaling analysis 5. Applications: HPC Math libraries, Linear Algebra and matrix/vector operations, Singular value decomposition, Neural Networks and linear autoencoders, Solving partial differential equations (PDEs) using grid-based and particle methods | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Lecture notes | Link Class notes, handouts | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Literature | • An Introduction to Parallel Programming, P. Pacheco, Morgan Kaufmann • Introduction to High Performance Computing for Scientists and Engineers, G. Hager and G. Wellein, CRC Press • Computer Organization and Design, D.H. Patterson and J.L. Hennessy, Morgan Kaufmann • Vortex Methods, G.H. Cottet and P. Koumoutsakos, Cambridge University Press • Lecture notes | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Prerequisites / Notice | Students should be familiar with a compiled programming language (C, C++ or Fortran). Exercises and exams will be designed using C++. The course will not teach basics of programming. Some familiarity using the command line is assumed. Students should also have a basic understanding of diffusion and advection processes, as well as their underlying partial differential equations. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
151-0317-00L | Visualization, Simulation and Interaction - Virtual Reality II | W | 4 credits | 3G | A. Kunz | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Abstract | This lecture provides deeper knowledge on the possible applications of virtual reality, its basic technolgy, and future research fields. The goal is to provide a strong knowledge on Virtual Reality for a possible future use in business processes. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Objective | Virtual Reality can not only be used for the visualization of 3D objects, but also offers a wide application field for small and medium enterprises (SME). This could be for instance an enabling technolgy for net-based collaboration, the transmission of images and other data, the interaction of the human user with the digital environment, or the use of augmented reality systems. The goal of the lecture is to provide a deeper knowledge of today's VR environments that are used in business processes. The technical background, the algorithms, and the applied methods are explained more in detail. Finally, future tasks of VR will be discussed and an outlook on ongoing international research is given. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Content | Introduction into Virtual Reality; basisc of augmented reality; interaction with digital data, tangible user interfaces (TUI); basics of simulation; compression procedures of image-, audio-, and video signals; new materials for force feedback devices; intorduction into data security; cryptography; definition of free-form surfaces; digital factory; new research fields of virtual reality | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Lecture notes | The handout is available in German and English. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Prerequisites / Notice | Prerequisites: "Visualization, Simulation and Interaction - Virtual Reality I" is recommended, but not mandatory. Didactical concept: The course consists of lectures and exercises. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Competencies |
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
227-0124-00L | Embedded Systems | W | 6 credits | 4G | M. Magno, L. Thiele | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Abstract | An embedded system is some combination of computer hardware and software, either fixed in capability or programmable, that is designed for a specific function or for specific functions within a larger system. The course covers theoretical and practical aspects of embedded system design and includes a series of lab sessions. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Objective | Understanding specific requirements and problems arising in embedded system applications. Understanding architectures and components, their hardware-software interfaces, the memory architecture, communication between components, embedded operating systems, real-time scheduling theory, shared resources, low-power and low-energy design as well as hardware architecture synthesis. Using the formal models and methods in embedded system design in practical applications using the programming language C, the operating system ThreadX, a commercial embedded system platform and the associated design environment. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Content | An embedded system is some combination of computer hardware and software, either fixed in capability or programmable, that is designed for a specific function or for specific functions within a larger system. For example, they are part of industrial machines, agricultural and process industry devices, automobiles, medical equipment, cameras, household appliances, airplanes, sensor networks, internet-of-things, as well as mobile devices. The focus of this lecture is on the design of embedded systems using formal models and methods as well as computer-based synthesis methods. Besides, the lecture is complemented by laboratory sessions where students learn to program in C, to base their design on the embedded operating systems ThreadX, to use a commercial embedded system platform including sensors, and to edit/debug via an integrated development environment. Specifically the following topics will be covered in the course: Embedded system architectures and components, hardware-software interfaces and memory architecture, software design methodology, communication, embedded operating systems, real-time scheduling, shared resources, low-power and low-energy design, hardware architecture synthesis. More information is available at Link . | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Lecture notes | The following information will be available: Lecture material, publications, exercise sheets and laboratory documentation at Link . | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Literature | P. Marwedel: Embedded System Design, Springer, ISBN 978-3-319-56045-8, 2018. G.C. Buttazzo: Hard Real-Time Computing Systems. Springer Verlag, ISBN 978-1-4614-0676-1, 2011. Edward A. Lee and Sanjit A. Seshia: Introduction to Embedded Systems, A Cyber-Physical Systems Approach, Second Edition, MIT Press, ISBN 978-0-262-53381-2, 2017. M. Wolf: Computers as Components – Principles of Embedded System Design. Morgan Kaufman Publishers, ISBN 978-0-128-05387-4, 2016. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Prerequisites / Notice | Prerequisites: Basic knowledge in computer architectures and programming. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
227-1037-00L | Introduction to Neuroinformatics | W | 6 credits | 2V + 1U + 1A | V. Mante, M. Cook, B. Grewe, G. Indiveri, D. Kiper, W. von der Behrens | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Abstract | The course provides an introduction to the functional properties of neurons. Particularly the description of membrane electrical properties (action potentials, channels), neuronal anatomy, synaptic structures, and neuronal networks. Simple models of computation, learning, and behavior will be explained. Some artificial systems (robot, chip) are presented. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Objective | Understanding computation by neurons and neuronal circuits is one of the great challenges of science. Many different disciplines can contribute their tools and concepts to solving mysteries of neural computation. The goal of this introductory course is to introduce the monocultures of physics, maths, computer science, engineering, biology, psychology, and even philosophy and history, to discover the enchantments and challenges that we all face in taking on this major 21st century problem and how each discipline can contribute to discovering solutions. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Content | This course considers the structure and function of biological neural networks at different levels. The function of neural networks lies fundamentally in their wiring and in the electro-chemical properties of nerve cell membranes. Thus, the biological structure of the nerve cell needs to be understood if biologically-realistic models are to be constructed. These simpler models are used to estimate the electrical current flow through dendritic cables and explore how a more complex geometry of neurons influences this current flow. The active properties of nerves are studied to understand both sensory transduction and the generation and transmission of nerve impulses along axons. The concept of local neuronal circuits arises in the context of the rules governing the formation of nerve connections and topographic projections within the nervous system. Communication between neurons in the network can be thought of as information flow across synapses, which can be modified by experience. We need an understanding of the action of inhibitory and excitatory neurotransmitters and neuromodulators, so that the dynamics and logic of synapses can be interpreted. Finally, simple neural architectures of feedforward and recurrent networks are discussed in the context of co-ordination, control, and integration of sensory and motor information. Connections to computer science and artificial intelligence are discussed, but the main focus of the course is on establishing the biological basis of computations in neurons. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
402-0209-00L | Quantum Physics for Non-Physicists | W | 6 credits | 3V + 2U | P. Kammerlander | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Abstract | This is an introduction to the physics of quantum mechanics, aimed primarily at students with little to no background in physics. We start from the basic postulates and follow an information-theoretical approach to study the behaviour of quantum systems, from a single spin to entangled particles in space and the hydrogen atom. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Objective | This course teaches the basics of quantum physics, and complements courses in quantum computation and information theory. Students are equipped with tools to tackle complex quantum mechanical problems and foundational questions. The course covers approximately the same content as QM1, but from an information-driven perspective. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Content | Quantum formalism, from qubits to particles in space; Time and dynamics for quantum systems; Problems in 1D; Uncertainty and open systems; Spin; Problems in 3D; Non-locality and foundational aspects of quantum theory | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Lecture notes | Lecture notes will be distributed through the semester. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Literature | Quantum Processes Systems, and Information, by Benjamin Schumacher and Michael Westmoreland, available at Link | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Prerequisites / Notice | This course is aimed at non-physicists, and in particular at students with a background in computer science, mathematics or engineering. Basic linear algebra and calculus knowledge is required (equivalent to first-year courses). Physics knowledge is not required. Physicists and students from a different background than outlined above are welcome at their own risk. Note that while we follow an information-theoretical approach, this is not a course on quantum information theory or quantum computing. It therefore complements those courses offered at ETH in both semesters. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Competencies |
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Seminar | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Number | Title | Type | ECTS | Hours | Lecturers | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
252-2300-00L | Neural Networks and Computational Complexity Number of participants limited to 25. 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 credits | 2S | R. Cotterell | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Abstract | Dependency parsing is a fundamental task in natural language processing. This seminar explores a variety of algorithms for efficient dependency parsing and their derivatioin in a unified algebraic framework. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Objective | The core ideas behind the mathematics of dependency parsing are explored. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Content | Dependency Structures and Lexicalized Grammars: An Algebraic Approach |
- Page 1 of 3 All