Search result: Catalogue data in Autumn Semester 2018

Computer Science Bachelor Information
Basic Courses
NumberTitleTypeECTSHoursLecturers
252-0057-00LTheoretical Computer Science Information O7 credits4V + 2UJ. Hromkovic, H.‑J. Böckenhauer
AbstractConcepts 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?
ObjectiveLearning the basic concepts of computer science along their historical development
ContentThis 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 notesThe lecture is covered in detail by the textbook "Theoretical Computer Science".
LiteratureBasic 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 / NoticeDuring the semester, two non-obligatory test exams will be offered.
252-0061-00LSystems Programming and Computer Architecture Information O7 credits4V + 2UT. Roscoe
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
computer.
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
401-0213-16LAnalysis II Information O5 credits2V + 2UE. Kowalski
AbstractDifferential and Integral calculus in many variables, vector analysis.
ObjectiveDifferential and Integral calculus in many variables, vector analysis.
ContentDifferential and Integral calculus in many variables, vector analysis.
LiteratureFür allgemeine Informationen, sehen Sie bitte die Webseite der Vorlesung: https://metaphor.ethz.ch/x/2017/hs/401-0213-16L/
401-0663-00LNumerical Methods for CSE Information O8 credits4V + 2U + 1PR. Alaifari
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
Content1. 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 notesLecture materials (PDF documents and codes) will be made available to the participants through the course web page:
https://metaphor.ethz.ch/x/2018/hs/401-0663-00L/
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.

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.
  •  Page  1  of  1