Search result: Catalogue data in Spring Semester 2019

Computer Science (General Courses) Information
Computer Science for Non-Computer Scientists
NumberTitleTypeECTSHoursLecturers
252-0002-00LData Structures and Algorithms Information Z8 credits4V + 2UF. Friedrich Wicker
AbstractThis course is about fundamental algorithm design paradigms (such as induction, divide-and-conquer, backtracking, dynamic programming), classic algorithmic problems (such as sorting and searching), and data structures (such as lists, hashing, search trees). Moreover, an introduction to parallel programming is provided. The programming model of C++ will be discussed in some depth.
ObjectiveAn understanding of the design and analysis of fundamental algorithms and data structures. Knowledge regarding chances, problems and limits of parallel and concurrent programming. Deeper insight into a modern programming model by means of the programming language C++.
ContentFundamental algorithms and data structures are presented and analyzed. Firstly, this comprises design paradigms for the development of algorithms such as induction, divide-and-conquer, backtracking and dynamic programming and classical algorithmic problems such as searching and sorting. Secondly, data structures for different purposes are presented, such as linked lists, hash tables, balanced search trees, heaps and union-find structures. The relationship and tight coupling between algorithms and data structures is illustrated with geometric problems and graph algorithms.

In the part about parallel programming, parallel architectures are discussed conceptually (multicore, vectorization, pipelining). Parallel programming concepts are presented (Amdahl's and Gustavson's laws, task/data parallelism, scheduling). Problems of concurrency are analyzed (Data races, bad interleavings, memory reordering). Process synchronisation and communication in a shared memory system is explained (mutual exclusion, semaphores, monitors, condition variables). Progress conditions are analysed (freedom from deadlock, starvation, lock- and wait-freedom). The concepts are underpinned with examples of concurrent and parallel programs and with parallel algorithms.

The programming model of C++ is discussed in some depth. The RAII (Resource Allocation is Initialization) principle will be explained. Exception handling, functors and lambda expression and generic prorgamming with templates are further examples of this part. The implementation of parallel and concurrent algorithm with C++ is also part of the exercises (e.g. threads, tasks, mutexes, condition variables, promises and futures).
LiteratureCormen, Leiserson, Rivest, and Stein: Introduction to Algorithms, 3rd ed., MIT Press, 2009. ISBN 978-0-262-03384-8 (recommended text)

Maurice Herlihy, Nir Shavit, The Art of Multiprocessor Programming, Elsevier, 2012.

B. Stroustrup, The C++ Programming Language (4th Edition) Addison-Wesley, 2013.
Prerequisites / NoticePrerequisites:
Lecture Series 252-0835-00L Informatik I or equivalent knowledge in programming with C++.
252-0232-00LSoftware Design Information Z6 credits2V + 1UD. Gruntz
AbstractThe course Software Design presents and discusses design patterns regularly used to solve problems in object oriented design and object oriented programming. The presented patterns are illustrated with examples from the Java libraries and are applied in a project.
ObjectiveThe students
- know the principles of object oriented programming and can apply these.
- know the most important object oriented design patterns.
- can apply design patterns to solve design problems.
- discover in a given design the use of design patterns.
ContentThis course makes an introduction to object oriented programming. As programming language Java is used. The focus of this course however is object oriented design, in particular design patterns. Design patterns are solutions to recurring design problems. The discussed patterns are illustrated with examples from the Java libraries and are applied in the context of a project.
Lecture notesno script
Literature- Gamma, Helm, Johnson, Vlissides; Design Patterns: Elements of Reusable Object-Oriented Software; Prentice Hall;ISBN 978-0201633610
- Freeman, Freeman, Sierra; Head First Design Patterns, Head First Design Patterns; O'Reilly; ISBN 978-0596007126
Prerequisites / NoticeThe course Software Design is designed for students in the computational sciences program, but is open to students of all programs. The precondition is, that participants have knowledge in structured programming (e.g. with C, C++, C# or Java).
252-0832-00LInformatics Information Z4 credits2V + 2UH. Lehner, M. Schwerhoff
AbstractThe course covers the fundamental concepts of computer programming with a focus on systematic algorithmic problem solving. Teached language is C++. No programming experience is required.
ObjectivePrimary educational objective is to learn programming with C++. When 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 secenes" when a program is translated and executed.
Secondary goals are an algorithmic computational thinking, undestanding the possibilities and limits of programming and to impart the way of thinking of 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 orientiation deals with classes, inheritance and polymorphy, 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 notesA script written in English will be provided during the semeter. The script and slides will be made available for download on the course web page.
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.
252-0836-00LComputer Science II Information
Only for ITET BSc, Programme Regulations 2016.

The course will be offered for the last time in FS19.
Z4 credits2V + 1UF. Mattern, V. C. Coroama
AbstractIntroduction to basic problem solving methods, algorithms, and data structures. Topics: divide and conquer, recursion, sorting algorithms, backtracking, game tree search, data structures (lists, stacks, binary trees, etc.), discrete simulation, concurrency, complexity, verification. In the assignments and exercises, the programming language Java is used.
ObjectiveIntroduction to the general methods of computer science for electrical engineers. Also provides basic skills for advanced exercises and projects later in the electrical engineering program.
ContentPart II of the lecture concentrates on the most common problem solving skills, algorithms, and data structures. It also teaches fundamental concepts and mechanisms of structured programming. Furthermore, working with formal systems, the necessity of abstraction, and the importance of modeling in computer science will be motivated. The emphasis of the lecture is on practical concepts of computer science. Specific topics are: complexity and correctness of algorithms, divide and conquer, recursion, algorithms for sorting, backtracking, game tree search, data structures (lists, stacks, inary trees, etc.), discrete simulation, concurrency, and verification. For the assignments and exercises, the programming language Java is used. Here, also modularization, abstraction, encapsulation, and object orientation will be considered. Occasionally, short remarks on the historical context of relevant concepts are given. In the practice groups, students program an automatic player for the game "Reversi"; at the end of the semester a tournament will take place.
Lecture notesCopies of slides, extended with bonus slides that give hints to advanced concepts and present the historical context of selected concepts.
LiteratureTextbook: Mark Allan Weiss: Data Structures and Problem Solving Using Java, Addison Wesley.
Prerequisites / NoticePrerequisite: Part 1 of the course.
252-0840-02LApplication-Oriented Programming Information Z2 credits2GL. E. Fässler, M. Dahinden
AbstractThis course provides important basic concepts for interdisciplinary programming projects. The programming language is Python and Matlab.
ObjectiveStudents learn

- how to encode a problem into a program, test the program, and correct errors.
- to understand and improve existing code.
- to implement models from the natural sciences as a simulation.
ContentThe following programming concepts are introduced in the lecture:

1. Variables, data types
2. Condition check, Loops, logics
3. Arrays
4. Functions
5. Matrices
6. Random

In the practical part of the course, students work on small programming projects with a context from natural sciences. Electronic tutorials are available as preparation.
LiteratureL. Fässler, M. Dahinden, D. Komm, and D. Sichau: Einführung in die Programmierung mit Python und Matlab. Begleitunterlagen zum Onlinekurs und zur Vorlesung, 2016. ISBN: 978-3741250842.
Prerequisites / NoticeNo prior knowledge is required for this course.It is based on application-oriented learning. The students spend most of their time working through programming projects with data from natural science and discussing their results with teaching assistants. To learn the programming basics there are electronic tutorials available.
252-0842-00LIntroduction to Programming and Problem Solving Information Restricted registration - show details
Number of participants limited to 40.
Z3 credits2V + 0.5UD. Komm
AbstractIntroduction to programming in Java and to problem solving using standard algorithms and data structures.
ObjectiveThe goals of this lecture are first, to become familiar with the programming language Java, and second, to be able to solve given problems of the student's subject area (for example data processing) with their own programs.

The students should know standard algorithms and data structures, they should know how to use them and also what properties the algorithms and data structures have. The goal is, that students are able to make a reasonable choice of algorithms and data structures for a given problem and that they can implement their own program to solve the given problem.

The students will work on an own project during the lecture. They will need to present the project during the last lecture.
ContentThe following topics will be covered:
- Programming concepts vs. programming languages
- Introduction to Java
- Arrays
- Methods and parameters
- Classes, types and objects
- I/O, using the keyboard and the screen, reading and writing files
- Exceptions
- Lambda Expressions and the Stream API
- Data structures
- Introduction to GUI programming
Lecture notesLecture website: Link
Prerequisites / NoticeAttention: This is a block-course that takes place only during the first seven weeks of the semester. These seven weeks are very intensive as the graded projekt is also being implemented during this time.

Recommendation:
- Application of software tools (252-0839-00)
- Application Oriented Programming Using Python (252-0840-01)
252-0846-00LComputer Science II Information Z4 credits2V + 2UF. Friedrich Wicker, H. Lehner
AbstractTogether with the introductory course Informatics I this course provides the foundations of programming. This course particularly covers algorithms and data structures. Programming languages used in this course are Java and Python.
ObjectiveBasing on the knowledge covered by lecture Informatics I, the primary educational objectives of this course are constructive knowledge of data structures and algorithms.

When successfully attended the course, students have a good command of the mechanisms to construct an object oriented program. They know the typically used control and data structures and understand how an algorithmic problem is mapped to a sufficiently efficient computer program.

Secondary goals are an algorithmic computational thinking, undestanding the possibilities and limits of programming and to impart the way of thinking of a computer scientist.
ContentWe discuss typical data structures and algorithms.

More generally, formal thinking and the need for abstraction and importance of appropriate modeling capabilities will be motivated. Concrete topics are complexity of algorithms, divide and conquer-principles, recursion, sort- and search-algorithms, elementary dynamic data structures, algorithms on graphs.

The concepts of the lectures will be motivated with applications. The programming languages used in the lectures and the practical exercises are Java and Python.

For the exercises an online-compiler and online-submission system is used.
Lecture notesThe slides will be available for download on the course home page.
LiteratureRobert Sedgewick, Kevin Wayne, Introduction to Programming in Java: An Interdisciplinary Approach, Addison-Wesley, 2008

T. Cormen, C. Leiserson, R. Rivest, C. Stein, Introduction to Algorithms , 3rd ed., MIT Press, 2009
Prerequisites / NoticePrerequisites are knowledge and programming experience according to course 252-0845-00 Computer Science I (D-BAUG).
252-0848-00LComputer Science I Information Z4 credits2V + 2UM. Schwerhoff, H. Lehner
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++. When 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 of 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 polymorphy, 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 notesA script written in English will be provided during the semester. The script and slides will be made available for download on the course web page.
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.
252-0861-00LEngineering Tool: Introduction to C++ Programming Information Restricted registration - show details
The Engineering Tool-courses are for MAVT Bachelor’s degree students only.
Only one Engineering Tool course can be chosen per semester.
Z0.4 credits1KH. Lehner
AbstractThe event provides an introduction to programming in C++ by means of an interactive tutorial.
ObjectiveBuild up an understanding of basic concepts of imperative programming. Reading and writing of first simple programs.
ContentIn this course we will gently introduce you to the basics of computer programming. To program a computer means to give it a sequence of commands (a computer program) so that it exactly does what you want it to do.
Prerequisites / NoticeBelegung der Lerneinheit nur möglich, wenn das Programmierprojekt bearbeitet und abgegeben wird. Wird im Falle einer Belegung das Programmierprojekt nicht abgegeben, so wird die Lerneinheit als nicht bestanden bewertet («Abbruch»).
252-0862-00LEngineering Tool: Modelling Information
The Engineering Tool-courses are for MAVT Bachelor’s degree students only.
Only one Engineering Tool course can be chosen per semester.
Z0.4 credits1KM. Schwerhoff
AbstractThis course provides an introduction to modelling, i.e. the representation of real-world entities and systems in computer programs. Basic modelling techniques will be introduced and illustrated, and students will apply these techniques in small projects, by modelling parts of systems such as a lift or a railway network.
ObjectiveStudents develop an intuition for modelling the essential aspects of simple applications from their field. They learn how to transform such a model into a computer program.
Prerequisites / NoticeLecture Series Informatik 252-0832-00L or equivalent knowledge in programming with C++. Engineering Tool: Advanced Programming with C++ is recommended, but not mandatory.

Work on a programming project. Course can only be taken if the programming project is executed and submitted. If no solution to the programming project is submitted, the course is considered failed ("drop out").
252-3900-00LBig Data for Engineers Information
This course is not intended for Computer Science and Data Science students!
Z6 credits2V + 2U + 1AG. Fourny
AbstractThis course is part of the series of database lectures offered to all ETH departments, together with Information Systems for Engineers. It introduces the most recent advances in the database field: how do we scale storage and querying to Petabytes of data, with trillions of records? How do we deal with heterogeneous data sets? How do we deal with alternate data shapes like trees and graphs?
ObjectiveThe key challenge of the information society is to turn data into information, information into knowledge, knowledge into value. This has become increasingly complex. Data comes in larger volumes, diverse shapes, from different sources. Data is more heterogeneous and less structured than forty years ago. Nevertheless, it still needs to be processed fast, with support for complex operations.

This combination of requirements, together with the technologies that have emerged in order to address them, is typically referred to as "Big Data." This revolution has led to a completely new way to do business, e.g., develop new products and business models, but also to do science -- which is sometimes referred to as data-driven science or the "fourth paradigm".

Unfortunately, the quantity of data produced and available -- now in the Zettabyte range (that's 21 zeros) per year -- keeps growing faster than our ability to process it. Hence, new architectures and approaches for processing it were and are still needed. Harnessing them must involve a deep understanding of data not only in the large, but also in the small.

The field of databases evolves at a fast pace. In order to be prepared, to the extent possible, to the (r)evolutions that will take place in the next few decades, the emphasis of the lecture will be on the paradigms and core design ideas, while today's technologies will serve as supporting illustrations thereof.

After visiting this lecture, you should have gained an overview and understanding of the Big Data landscape, which is the basis on which one can make informed decisions, i.e., pick and orchestrate the relevant technologies together for addressing each business use case efficiently and consistently.
ContentThis course gives an overview of database technologies and of the most important database design principles that lay the foundations of the Big Data universe.

It targets specifically students with a scientific or Engineering, but not Computer Science, background.

The material is organized along three axes: data in the large, data in the small, data in the very small. A broad range of aspects is covered with a focus on how they fit all together in the big picture of the Big Data ecosystem.
- physical storage (HDFS, S3)
- logical storage (key-value stores, document stores, column stores, key-value stores, data warehouses)
- data formats and syntaxes (XML, JSON, CSV)
- data shapes and models (tables, trees, graphs)
- an overview of programming languages with a focus on their type systems (SQL, XQuery)
- the most important query paradigms (selection, projection, joining, grouping, ordering, windowing)
- paradigms for parallel processing (MapReduce) and technologies (Hadoop, Spark)
- optimization techniques (functional and declarative paradigms, query plans, rewrites, indexing)
- applications.

Large scale analytics and machine learning are outside of the scope of this course.
LiteraturePapers from scientific conferences and journals. References will be given as part of the course material during the semester.
Prerequisites / NoticeThis course is not intended for Computer Science and Data Science students. Computer Science and Data Science students interested in Big Data MUST attend the Master's level Big Data lecture, offered in Fall.

Requirements: programming knowledge (Java, C++, Python, PHP, ...) as well as basic knowledge on databases (SQL). If you have already built your own website with a backend SQL database, this is perfect.

Attendance is especially recommended to those who attended Information Systems for Engineers last Fall, which introduced the "good old databases of the 1970s" (SQL, tables and cubes). However, this is not a strict requirement, and it is also possible to take the lectures in reverse order.
  •  Page  1  of  1