# Search result: Catalogue data in Autumn Semester 2016

Computer Science Bachelor | ||||||

Bachelor Studies (Programme Regulations 2008) | ||||||

3. Semester | ||||||

Compulsory Courses (3. Sem.) | ||||||

Number | Title | Type | ECTS | Hours | Lecturers | |
---|---|---|---|---|---|---|

252-0057-00L | Theoretical Computer Science | O | 8 credits | 4V + 2U + 1A | J. Hromkovic | |

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 | 8 credits | 4V + 2U + 1A | T. Roscoe | |

Abstract | Introduction to computer architecture and system programming: Instruction sets, storage hiearchies, runtime structures with an emphasis on computers as engines for the execution of compiled programs. Interaction between system software and the hardware. Problems that arise from the final respresentation, performance measurement and tuning, and program portability issues are covered. | |||||

Objective | The objective is to allow students to understand all aspects of the execution of compiled (C) programs on modern architectures -- the instruction set, the storage resources (registers, stack, memory), input/output, the impact of compiler decisions, and the interaction between the operating system and hardware. Two main themes are correctness issues (esp. those that arise from the finite representation of data) and performance issues (incl. measurement and tuning issues). The interface to the operating system is discussed to prepare for subsequent classes on more advanced systems topics. The two key goals are: 1) To equip students with a thorough understanding of how to write correct programs that run fast on modern computer, and 2) How to write correct and efficient low-level systems code. 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). | |||||

Literature | The course is based in part on "Computer Systems: A Programmer's Perspective" (2nd Edition) by R. Bryant and D. O'Hallaron, with some additional material. | |||||

Prerequisites / Notice | 252-0024-00L Parallel Programming, 252-0014-00L Digital Circuits | |||||

401-0613-00L | Probability and Statistics | O | 6 credits | 3V + 2U | J. Teichmann | |

Abstract | Basic concepts from probability and statistics: - introduction to probability theory - short introduction to basic concepts and methods from statistics | |||||

Objective | a) ability to understand the covered methods from probability theory and to apply them in other contexts b) probabilistic thinking and stochastic modelling c) ability to perform basic statistical tests and to interpret the results | |||||

Content | Basic concepts from probability and statistics with special emphasis on the topics needed in computer science The conceptual goals are - the laws of randomness and probabilistic thinking (thinking in probabilities) - understanding and intuition for stochastic modelling - simple and basic methods from statistics The contents of the course encompasses - an introduction to probability theory: basic concepts (probability space, probability measure), independence, random variables, discrete and continuous distributions, conditional probability, expectation and variance, limit theorems - methods from statistics: parameter estimation, maximum likelihood and moment methods, tests, confidence intervals | |||||

Lecture notes | Lecture notes for the course (in German) will be made available electronically at the beginning of the course. | |||||

401-0663-00L | Numerical Methods for CSE | O | 7 credits | 4V + 2U | 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 | 1. Direct Methods for linear systems of equations 2. Least Squares Techniques 3. Data Interpolation and Fitting 4. Filtering Algorithms 8. Approximation of Functions 9. Numerical Quadrature 10. Iterative Methods for non-linear systems of equations 11. Single Step Methods for ODEs 12. Stiff Integrators | |||||

Lecture notes | Lecture materials (PDF documents and codes) will be made available to participants: Lecture document: Link Lecture Git repository: Link Tablet classroom notes: Link Lecture recording: Link Homework problems: Link | |||||

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. 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. | |||||

Compensatory Courses Compulsory major courses count as compensatory courses. | ||||||

Major | ||||||

Compulsory Major Courses | ||||||

Major in Computer and Software Engineering | ||||||

Number | Title | Type | ECTS | Hours | Lecturers | |

252-0210-00L | Compiler DesignDoes not take place this semester. The course unit will be offered again in the spring semester 2017. | O | 8 credits | 4V + 3U | T. Gross | |

Abstract | This course uses compilers as example to expose modern software development techniques. Compiler organization. Lexical analysis. Top-down parsing via recursive descent, table-driven parsers, bottom-up parsing. Symboltables, semantic checking. Code generation for a simple RISC machine: conditionals, loops, procedure calls, simple register allocation techniques. | |||||

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 (parser generators); the implementation language is Java. 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. Specific topics: Compiler organization. Lexical analysis. Top-down parsing via recursive descent, table-driven parsers, bottom-up parsing. Symboltables, semantic checking. Code generation for a simple RISC machine: expression evaluation, straight line code, conditionals, loops, procedure calls, simple register allocation techniques. Storage allocation on the stack, parameter passing, runtime storage management, heaps. Special topics as time permits: introduction to global dataflow and its application to register allocation, instruction scheduling. | |||||

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-0213-00L | Distributed Systems | O | 8 credits | 6G + 1A | F. Mattern, R. Wattenhofer | |

Abstract | Distributed control algorithms (mutual exclusion, logical clocks), communication models (RPC, synchronous/asynchronous communication, broadcast, events, tupel spaces), middleware, service- and resource-oriented architectures (SOAP, REST), security, fault-tolerance (failure models, consensus), replication (primary copy, 2PC, 3PC, Paxos, quorum systems), shared memory (spin locks, concurrency). | |||||

Objective | Become acquainted with pertinent technologies and architectures of distributed systems. | |||||

Content | We present the characteristics and concepts of distributed systems, and discuss distributed control algorithms (flooding, mutual exclusion, logical clocks), communications models (remote procedure call, client-server models, synchronous and asynchronous communication), abstract communication principles (broadcast, events, tupel spaces), name services, communication middleware for open systems (e.g., REST, SOAP), infrastructure for ad hoc networking (JINI), cloud computing, and mechanisms for security and safety. Having a distributed system may permit getting away with failures and malfunctions of parts of the system. We discuss fault-tolerance issues (models, consensus, agreement) as well as replication issues (primary copy, 2PC, 3PC, Paxos, quorum systems, distributed storage) and problems with asynchronous multiprocessing (shared memory, spin locks, concurrency). To get familiar with message passing communication, some of the exercises will be devoted to a practical lab where participants will develop software for a mobile platform (smartphones). | |||||

Major in Computational Science The lecture 151-0107-20L High Performance Computing for Science and Engineering I in the autumn semester can only together with the lecture 401-0686-10L High Performance Computing for Science and Engineering II in the spring semester be accredited as compulsory course. | ||||||

Number | Title | Type | ECTS | Hours | Lecturers | |

252-0206-00L | Visual Computing | O | 8 credits | 4V + 3U | M. Gross, O. Hilliges | |

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 | |||||

151-0107-20L | High Performance Computing for Science and Engineering (HPCSE) I | W | 4 credits | 4G | M. Troyer, P. Chatzidoukas | |

Abstract | This course gives an introduction into algorithms and numerical methods for parallel computing for multi and many-core architectures and for applications from problems in science and engineering. | |||||

Objective | Introduction to HPC for scientists and engineers Fundamental of: 1. Parallel Computing Architectures 2. MultiCores 3. ManyCores | |||||

Content | Programming models and languages: 1. C++ threading (2 weeks) 2. OpenMP (4 weeks) 3. MPI (5 weeks) Computers and methods: 1. Hardware and architectures 2. Libraries 3. Particles: N-body solvers 4. Fields: PDEs 5. Stochastics: Monte Carlo | |||||

Lecture notes | Link Class notes, handouts | |||||

Major in Theoretical Computer Science | ||||||

Number | Title | Type | ECTS | Hours | Lecturers | |

252-0209-00L | Algorithms, Probability, and Computing | O | 8 credits | 4V + 2U + 1A | E. Welzl, M. Ghaffari, A. Steger, P. Widmayer | |

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. | |||||

Electives Compulsory major courses may also qualify as 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-3110-00L | Human Computer Interaction | W | 4 credits | 2V + 1U | O. Hilliges, M. Norrie | |

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. | |||||

Content | The course will introduce students to various 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 | M. Troyer, P. Chatzidoukas | |

Abstract | This course gives an introduction into algorithms and numerical methods for parallel computing for multi and many-core architectures and for applications from problems in science and engineering. | |||||

Objective | Introduction to HPC for scientists and engineers Fundamental of: 1. Parallel Computing Architectures 2. MultiCores 3. ManyCores | |||||

Content | Programming models and languages: 1. C++ threading (2 weeks) 2. OpenMP (4 weeks) 3. MPI (5 weeks) Computers and methods: 1. Hardware and architectures 2. Libraries 3. Particles: N-body solvers 4. Fields: PDEs 5. Stochastics: Monte Carlo | |||||

Lecture notes | Link Class notes, handouts | |||||

227-0627-00L | Applied Computer Architecture | W | 6 credits | 4G | A. Gunzinger | |

Abstract | This lecture gives an overview of the requirements and the architecture of parallel computer systems, performance, reliability and costs. | |||||

Objective | Understand the function, the design and the performance modeling of parallel computer systems. | |||||

Content | The lecture "Applied Computer Architecture" gives technical and corporate insights in the innovative Computer Systems/Architectures (CPU, GPU, FPGA, special processors) and their real implementations and applications. Often the designs have to deal with technical limits. Which computer architecture allows the control of the over 1000 magnets at the Swiss Light Source (SLS)? Which architecture is behind the alarm center of the Swiss Railway (SBB)? Which computer architectures are applied for driver assistance systems? Which computer architecture is hidden behind a professional digital audio mixing desk? How can data streams of about 30 TB/s, produced by a protone accelerator, be processed in real time? Can the weather forecast also be processed with GPUs? How can a good computer architecture be found? Which are the driving factors in succesful computer architecture design? | |||||

Lecture notes | Script and exercices sheets. | |||||

Prerequisites / Notice | Prerequisites: Basics of computer architecture. | |||||

227-0945-00L | Cell and Molecular Biology for Engineers IThis course is part I of a two-semester course. | W | 3 credits | 3G | C. Frei | |

Abstract | The course gives an introduction into cellular and molecular biology, specifically for students with a background in engineering. The focus will be on the basic organization of eukaryotic cells, molecular mechanisms and cellular functions. Textbook knowledge will be combined with results from recent research and technological innovations in biology. | |||||

Objective | After completing this course, engineering students will be able to apply their previous training in the quantitative and physical sciences to modern biology. Students will also learn the principles how biological models are established, and how these models can be tested. | |||||

Content | Lectures will include the following topics: DNA, chromosomes, RNA, protein, genetics, gene expression, membrane structure and function, vesicular traffic, cellular communication, energy conversion, cytoskeleton, cell cycle, cellular growth, apoptosis, autophagy, cancer, development and stem cells. In addition, three journal clubs will be held, where one/two publictions will be discussed (part I: 1 Journal club, part II: 2 Journal Clubs). For each journal club, students (alone or in groups of up to three students) have to write a summary and discussion of the publication. These written documents will be graded and count as 25% for the final grade. | |||||

Lecture notes | Scripts of all lectures will be available. | |||||

Literature | "Molecular Biology of the Cell" (6th edition) by Alberts, Johnson, Lewis, Raff, Roberts, and Walter. | |||||

227-1037-00L | Introduction to Neuroinformatics | W | 6 credits | 2V + 1U | K. A. Martin, M. Cook, V. Mante, M. Pfeiffer | |

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, the neural architectures of feedforward and recurrent networks will be discussed in the context of co-ordination, control, and integration of sensory and motor information in neural networks. | |||||

252-4101-00L | ACM-LabDoes not take place this semester. | W | 4 credits | 3P | A. Steger | |

Abstract | Solve programming problems from previous ACM Programming Contests (see Link); learn and use efficient programming methods and algorithms. | |||||

Objective | The objective of this course is to learn how to solve algorithmic problems given as descriptions in natural language, similar to those posed in ACM Programming Contests. This includes appropriate problem modeling, choice of suitable (combinatorial) algorithms, and their efficient implementation using C/C++ and the STL. |

- Page 1 of 1