Search result: Catalogue data in Autumn Semester 2016

Computer Science Bachelor Information
Bachelor Studies (Programme Regulations 2008)
Major
Compulsory Major Courses
Major in Computer and Software Engineering
NumberTitleTypeECTSHoursLecturers
252-0210-00LCompiler Design
Does not take place this semester.
The course unit will be offered again in the spring semester 2017.
O8 credits4V + 3UT. Gross
AbstractThis 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.
ObjectiveLearn principles of compiler design, gain practical experience designing and implementing a medium-scale software system.
ContentThis 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.
LiteratureAho/Lam/Sethi/Ullmann, Compilers - Principles, Techniques, and Tools (2nd Edition)

Muchnick, Advanced Compiler Design and Implementation, Morgan Kaufmann Publishers, 1997
Prerequisites / NoticePrerequisites:
Prior exposure to modern techniques for program construction, knowledge of at least one processor architecture at the assembly language level.
252-0213-00LDistributed Systems Information O8 credits6G + 1AF. Mattern, R. Wattenhofer
AbstractDistributed 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).
ObjectiveBecome acquainted with pertinent technologies and architectures of distributed systems.
ContentWe 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.
NumberTitleTypeECTSHoursLecturers
252-0206-00LVisual Computing Information O8 credits4V + 3UM. Gross, O. Hilliges
AbstractThis 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.
ObjectiveThis 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.
ContentCourse 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 notesA 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.
LiteratureMarkus Gross: Computer Graphics, scriptum, 1994-2005
151-0107-20LHigh Performance Computing for Science and Engineering (HPCSE) IW4 credits4GM. Troyer, P. Chatzidoukas
AbstractThis 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.
ObjectiveIntroduction to HPC for scientists and engineers
Fundamental of:
1. Parallel Computing Architectures
2. MultiCores
3. ManyCores
ContentProgramming 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 notesLink
Class notes, handouts
Major in Theoretical Computer Science
NumberTitleTypeECTSHoursLecturers
252-0209-00LAlgorithms, Probability, and Computing Information O8 credits4V + 2U + 1AE. Welzl, M. Ghaffari, A. Steger, P. Widmayer
AbstractAdvanced 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).
ObjectiveStudying and understanding of fundamental advanced concepts in algorithms, data structures and complexity theory.
Lecture notesWill be handed out.
LiteratureIntroduction 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.
  •  Page  1  of  1