Search result: Catalogue data in Autumn Semester 2020

Computational Science and Engineering Bachelor Information
Bachelor Studies (Programme Regulations 2018)
First Year Compulsory Courses
First Year Examination Block 1
401-0151-00LLinear Algebra Information Restricted registration - show details O5 credits3V + 2UV. C. Gradinaru
AbstractContents: Linear systems - the Gaussian algorithm, matrices - LU decomposition, determinants, vector spaces, least squares - QR decomposition, linear maps, eigenvalue problem, normal forms - singular value decomposition; numerical aspects; introduction to MATLAB.
ObjectiveEinführung in die Lineare Algebra für Ingenieure unter Berücksichtigung numerischer Aspekte
LiteratureK. Nipp / D. Stoffer, Lineare Algebra, vdf Hochschulverlag, 5. Auflage 2002
Peter J. Olver / Chehrzad Shakiban, Applied linear algebra, 2nd ed. 2018, 10.1007/978-3-319-91041-3 , online in ETH-BIB
252-0025-01LDiscrete Mathematics Information Restricted registration - show details O7 credits4V + 2UU. Maurer
AbstractContent: 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).
ObjectiveThe 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.
ContentSee course description.
Lecture notesavailable (in english)
252-0856-00LComputer Science Information Restricted registration - show details O4 credits2V + 2UF. Friedrich Wicker, M. Schwerhoff
AbstractThe course covers the fundamental concepts of computer programming with a focus on systematic algorithmic problem solving. Taught language is C++. No programming experience is required.
ObjectivePrimary educational objective is to learn programming with C++. After having successfully attended the course, students have a good command of the mechanisms to construct a program. They know the fundamental control and data structures and understand how an algorithmic problem is mapped to a computer program. They have an idea of what happens "behind the scenes" when a program is translated and executed. Secondary goals are an algorithmic computational thinking, understanding the possibilities and limits of programming and to impart the way of thinking like a computer scientist.
ContentThe course covers fundamental data types, expressions and statements, (limits of) computer arithmetic, control statements, functions, arrays, structural types and pointers. The part on object orientation deals with classes, inheritance and polymorphism; simple dynamic data types are introduced as examples. In general, the concepts provided in the course are motivated and illustrated with algorithms and applications.
Lecture notesEnglish lecture notes will be provided during the semester. The lecture notes and the lecture slides will be made available for download on the course web page. Exercises are solved and submitted online.
LiteratureBjarne Stroustrup: Einführung in die Programmierung mit C++, Pearson Studium, 2010
Stephen Prata, C++ Primer Plus, Sixth Edition, Addison Wesley, 2012
Andrew Koenig and Barbara E. Moo: Accelerated C++, Addison-Wesley, 2000
First Year Examination Block 2
401-0231-10LAnalysis 1 Information Restricted registration - show details O8 credits4V + 3UE. Kowalski
AbstractReelle und komplexe Zahlen, Grenzwerte, Folgen, Reihen, Potenzreihen, stetige Abbildungen, Differential- und Integralrechnung einer Variablen, Einführung in gewöhnliche Differentialgleichungen
ObjectiveEinführung in die Grundlagen der Analysis
Lecture notesChristian Blatter: Ingenieur-Analysis (Kapitel 1-4)
LiteratureKonrad Koenigsberger, Analysis I.
Christian Blatter, Analysis I.
402-0043-00LPhysics I Restricted registration - show details O4 credits3V + 1UT. Esslinger
AbstractIntroduction to the concepts and tools in physics with the help of demonstration experiments: mechanics of point-like and ridged bodies, periodic motion and mechanical waves.
ObjectiveThe concepts and tools in physics, as well as the methods of an experimental science are taught. The student should learn to identify, communicate and solve physical problems in his/her own field of science.
ContentMechanics (motion, Newton's laws, work and energy, conservation of momentum, rotation, gravitation, fluids)
Periodic Motion and Waves (periodic motion, mechanical waves, acoustics).
Lecture notesThe lecture follows the book "Physics" by Paul A. Tipler.
LiteraturePaul A. Tipler and Gene P. Mosca, Physics (for Scientists and Engineers), W. H. Freeman and Company
Repetition Fist Year Computational Science and Engineering BSc
900-9021-00LRepetition Fist Year Computational Science and Engineering BSc Restricted registration - show details 0 creditsnot available
GRUPPEN 3. Semester
900-9021-10LGruppen Rechnergestützte Wissenschaften BSc, 3. Semester Restricted registration - show details
This course unit is being used for grouping the excercises classes. The groups are fix and can't be changed during the semester.

Only for 3rd semester CSE students and repeaters.
O0 creditsnot available
Basic Courses
Block G1
401-0353-00LAnalysis 3 Information Restricted registration - show details O4 credits2V + 2UM. Iacobelli
AbstractIn this lecture we treat problems in applied analysis. The focus lies on the solution of quasilinear first order PDEs with the method of characteristics, and on the study of three fundamental types of partial differential equations of second order: the Laplace equation, the heat equation, and the wave equation.
ObjectiveThe aim of this class is to provide students with a general overview of first and second order PDEs, and teach them how to solve some of these equations using characteristics and/or separation of variables.
Content1.) General introduction to PDEs and their classification (linear, quasilinear, semilinear, nonlinear / elliptic, parabolic, hyperbolic)

2.) Quasilinear first order PDEs
- Solution with the method of characteristics
- COnservation laws

3.) Hyperbolic PDEs
- wave equation
- d'Alembert formula in (1+1)-dimensions
- method of separation of variables

4.) Parabolic PDEs
- heat equation
- maximum principle
- method of separation of variables

5.) Elliptic PDEs
- Laplace equation
- maximum principle
- method of separation of variables
- variational method
LiteratureY. Pinchover, J. Rubinstein, "An Introduction to Partial Differential Equations", Cambridge University Press (12. Mai 2005)
Prerequisites / NoticePrerequisites: Analysis I and II, Fourier series (Complex Analysis)
401-0647-00LIntroduction to Mathematical Optimization Restricted registration - show details O5 credits2V + 1UD. Adjiashvili
AbstractIntroduction to basic techniques and problems in mathematical optimization, and their applications to a variety of problems in engineering.
ObjectiveThe goal of the course is to obtain a good understanding of some of the most fundamental mathematical optimization techniques used to solve linear programs and basic combinatorial optimization problems. The students will also practice applying the learned models to problems in engineering.
ContentTopics covered in this course include:
- Linear programming (simplex method, duality theory, shadow prices, ...).
- Basic combinatorial optimization problems (spanning trees, shortest paths, network flows, ...).
- Modelling with mathematical optimization: applications of mathematical programming in engineering.
LiteratureInformation about relevant literature will be given in the lecture.
Prerequisites / NoticeThis course is meant for students who did not already attend the course "Mathematical Optimization", which is a more advance lecture covering similar topics. Compared to "Mathematical Optimization", this course has a stronger focus on modeling and applications.
401-0663-00LNumerical Methods for CSE Restricted registration - show details O8 credits2V + 2U + 3PR. Hiptmair
AbstractThe 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* Computing with Matrices and Vectors
* Direct Methods for linear systems of equations
* Least Squares Techniques
* Data Interpolation and Fitting
* Filtering Algorithms
* Data Interpolation and Data Fitting in 1D
* Approximation of Functions in One Dimension
* Numerical Quadrature
* Iterative Methods for non-linear systems of equations
Lecture notesLecture materials (PDF documents and codes) will be made available to the participants through the course web page, whose address will be announced in the beginning of the course.
LiteratureU. 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 / NoticeThe 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.
Block G2
402-0811-00LProgramming Techniques for Scientific Simulations IO5 credits4GR. Käppeli
AbstractThis lecture provides an overview of programming techniques for scientific simulations. The focus is on basic and advanced C++ programming techniques and scientific software libraries. Based on an overview over the hardware components of PCs and supercomputer, optimization methods for scientific simulation codes are explained.
ObjectiveThe goal of the course is that students learn basic and advanced programming techniques and scientific software libraries as used and applied for scientific simulations.
252-0061-00LSystems Programming and Computer Architecture Information Restricted registration - show details O7 credits4V + 2UT. Roscoe, A. Klimovic
AbstractIntroduction 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.
ObjectiveThe 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
ContentThis 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
LiteratureThe 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 / Notice252-0029-00L Parallel Programming
252-0028-00L Design of Digital Circuits
Block G3
All course units within Block G3 are offered in the spring semester.
Block G4
All course units within Block G4 are offered in the spring semester.
Core Courses from Group I (Modules)
Module A
151-0107-20LHigh Performance Computing for Science and Engineering (HPCSE) I Information W4 credits4GP. Koumoutsakos, S. M. Martin
AbstractThis 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.
ObjectiveWith 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.
Content1. 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
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 / NoticeStudents 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.
Module B
263-2800-00LDesign of Parallel and High-Performance Computing Information W9 credits3V + 2U + 3AT. Hoefler, M. Püschel
AbstractAdvanced topics in parallel and high-performance computing.
ObjectiveUnderstand concurrency paradigms and models from a higher perspective and acquire skills for designing, structuring and developing possibly large parallel high-performance software systems. Become able to distinguish parallelism in problem space and in machine space. Become familiar with important technical concepts and with concurrency folklore.
ContentWe will cover all aspects of high-performance computing ranging from architecture through programming up to algorithms. We will start with a discussion of caches and cache coherence in practical computer systems. We will dive into parallel programming concepts such as memory models, locks, and lock-free. We will cover performance modeling and parallel design principles as well as basic parallel algorithms.
Prerequisites / NoticeThis class is intended for the Computer Science Masters curriculum. Students must have basic knowledge in programming in C as well as computer science theory. Students should be familiar with the material covered in the ETH computer science first-year courses "Parallele Programmierung (parallel programming)" and "Algorithmen und Datenstrukturen (algorithm and data structures)" or equivalent courses.
Core Courses from Group II
No offering in the Autumn Semester
Bachelor's Thesis
If you wish to have recognised 402-2000-00L Scientific Works in Physics instead of 401-2000-00L Scientific Works in Mathematics (as allowed for the CSE programme), take contact with the Study Administration Office ( after having passed the performance assessment.
401-2000-00LScientific Works in Mathematics
Target audience:
Third year Bachelor students;
Master students who cannot document to have received an adequate training in working scientifically.
O0 creditsM. Burger, E. Kowalski
AbstractIntroduction to scientific writing for students with focus on publication standards and ethical issues, especially in the case of citations (references to works of others.)
ObjectiveLearn the basic standards of scientific works in mathematics.
Content- Types of mathematical works
- Publication standards in pure and applied mathematics
- Data handling
- Ethical issues
- Citation guidelines
Prerequisites / NoticeDirective Link
401-2000-01LLunch Sessions – Thesis Basics for Mathematics Students
Details and registration for the optional MathBib training course:
Z0 creditsSpeakers
AbstractOptional MathBib training course
402-2000-00LScientific Works in Physics
Target audience:
Master students who cannot document to have received an adequate training in working scientifically.

Directive Link
W0 creditsC. Grab
AbstractLiterature Review: ETH-Library, Journals in Physics, Google Scholar; Thesis Structure: The IMRAD Model; Document Processing: LaTeX and BibTeX, Mathematical Writing, AVETH Survival Guide; ETH Guidelines for Integrity; Authorship Guidelines; ETH Citation Etiquettes; Declaration of Originality.
ObjectiveBasic standards for scientific works in physics: How to write a Master Thesis. What to know about research integrity.
401-3990-18LBachelor's Thesis Restricted registration - show details
Only for Computational Science and Engineering BSc, Programme Regulations 2018.

Successful participation in the course unit 401-2000-00L Scientific Works in Mathematics or 402-2000-00L Scientific Works in Physicsis is required.
For more information, see
O14 credits30DSupervisors
AbstractThe BSc thesis concludes the curriculum. In their BSc thesis, students should demonstrate their ability to carry out independent, structured scientific work. The purpose of the BSc thesis is to deepen knowledge in a certain subject and to bring students into closer contact with applications in an existing computational group. The BSc thesis requires approximately 420 hours of work.
ObjectiveIn their Bsc thesis students should demonstrate their ability to carry out independent, structured scientific work. The purpose is to deepen knowledge in a certain subject and to enable students to collaborate in an existing scientific group to take a computational approach to problems encountered in applications.
Prerequisites / NoticeThe supervisor responsible for the Bachelor thesis defines the task and determines the start and the submission date. The Bachelor thesis concludes with a written report. The Bachelor thesis is graded.
  •  Page  1  of  1