# Search result: Catalogue data in Spring Semester 2017

Computer Science (General Courses) | ||||||

Computer Science for Non-Computer Scientists | ||||||

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

252-0232-00L | Software Design | Z | 6 credits | 2V + 1U | D. Gruntz | |

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

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

Content | This 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 notes | no script | |||||

Literature | - Gamma, Helm, Johnson, Vlissides; Design Patterns: Elements of Reusable Object-Oriented Software; Addison-Wesley; 0-2016-3361-2 - Freeman, Freeman, Sierra; Head First Design Patterns, Head First Design Patterns; O'Reilly; 978-0596007126 | |||||

Prerequisites / Notice | The 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++, or Fortran). | |||||

252-0832-00L | Informatics | Z | 4 credits | 2V + 2U | M. Gross, H. Lehner | |

Abstract | The fundamental elements of imperative programming languages (variables, assignments, conditional statements, loops, procedures, pointers, recursion) are explained on the basis of C++. Simple data structures (lists, trees) and fundamental algorithms (searching, sorting) are discussed and implemented. Finally, the concept of object oriented programming is briefly explained. | |||||

Objective | The fundamental elements of imperative programming languages (variables, assignments, conditional statements, loops, procedures, pointers, recursion) are explained on the basis of C++. Simple data structures (lists, trees) and fundamental algorithms (searching, sorting) are discussed and implemented. Finally, the concept of object oriented programming is briefly explained. | |||||

Content | Anhand der Programmiersprache C++ werden die elementaren Elemente der imperativen Programmiersprachen (Variablen, Zuweisungen, bedingte Anweisung, Schleifen, Prozeduren, Pointer) eingeführt. Darauf aufbauend, werden dann einfache Datenstrukturen, z.B. Listen und Bäume, sowie grundlegende Algorithmen, z.B. zum Suchen und Sortieren, behandelt. Elementare Techniken zur Analyse von Algorithmen (wie asymptotische Laufzeitanalyse, Invarianten) werden vermittelt. Abschliessend wird kurz das Konzept der Objektorientierung erläutert. | |||||

Literature | Wird noch bekannt gegeben. | |||||

252-0836-00L | Computer Science II | Z | 4 credits | 2V + 1U | F. Mattern | |

Abstract | Introduction to basic problem solving methods, algorithms, and data structures. Topics: divide and conquer, recursion, sorting algorithms, backtracking, game tree search, data structures (lists, stacks, queues, binary trees), discrete simulation, concurrency. In the assignments and exercises, the programming language Java is used. | |||||

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

Content | Part 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 of algorithms, divide and conquer, recursion, algorithms for sorting, backtracking, game tree search, data structures (lists, stacks, queues, binary trees), discrete simulation, and concurrency. 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 notes | Copies of slides, extended with bonus slides that give hints to advanced concepts and present the historical context of selected concepts. | |||||

Literature | Textbook: Mark Allan Weiss: Data Structures and Problem Solving Using Java, Addison Wesley. | |||||

Prerequisites / Notice | Prerequisite: Part 1 of the course. | |||||

252-0840-01L | Introductory Programming in MATLAB | Z | 2 credits | 2G | T. Hruz | |

Abstract | The lecture "Introductory Programming in MATLAB" provides a basic knowledge about imperative programming. Additionally, the students learn how to apply imperative programming in modeling of domain specific systems. | |||||

Objective | The students should learn how to write programs in MATLAB, resp. how to understand, change and extent existing programs. | |||||

Content | A basic knowledge about imperative programming is explained together with algorithms and data structures for simulation tasks in MATLAB. Additionally, the techniques how to modularize large programs are discussed. During the exercises the students write their own programs in team. The course is closed with a larger project which simulates a complex system from the students main domain of study. 1) MATLAB installation, MATLAB programming environment, Help, variables, expressions, floating point number representation 2) Modeling and simulation in Environmental sciences 3) Program branching, loops, propositional logic 4) Matrices in MATLAB 5) 2D visualization in MATLAB 6) Function, Modularity, Stack, local Variables (scope) 7) Rekursion, 3D visualization 8) Modeling and simulation of dynamic systems in MATLAB | |||||

Literature | Einstieg ins Programmieren mit Matlab, U. Stein, Carl Hanser Verlag. | |||||

252-0842-00L | Introduction to Programming and Problem Solving | Z | 3 credits | 2V + 0.5U | H. Lehner | |

Abstract | Introduction to programming in Java and to problem solving using standard algorithms and data structures. | |||||

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

Content | The 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 - Object-oriented programming - Introduction to GUI programming - Design patterns The project has to be presented during the last lecture on. | |||||

Lecture notes | Lecture website: http://lec.inf.ethz.ch/ppl | |||||

Prerequisites / Notice | Prerequisites: - Application of software tools (252-0839-00) - Application Oriented Programming Using MATLAB (252-0840-01) | |||||

252-0846-00L | Computer Science II | Z | 4 credits | 2V + 2U | F. O. Friedrich Wicker | |

Abstract | Together with the introductory course Informatics I this course provides the foundations of programming and databases. This course particularly covers algorithms and data structures and basics about design and implementation of databases. Programming language used in this course is Java. | |||||

Objective | Basing on the knowledge covered by lecture Informatics I, the primary educational objectives of this course are - constructive knowledge of data structures and algorithms and - the knowledge of relational databases. 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. They have an idea of what happens "behind the secenes" when a program is translated and executed. The know how to write database queries and how to design simple databases. 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. | |||||

Content | We discuss typical data structures and algorithms, the paradigm of object oriented programming, and design principles for the design and usage of relational databases. More generally, formal thinking and the need for abstraction and importance of appropriate modeling capabilities will be motivated. The course emphasizes applied computer science. Concrete topics are complexity of algorithms, divide and conquer-principles, recursion, sort- and search-algorithms, backtracking, data structures (lists, stacks, queues, trees) and data management with lists and tables in relational data bases. | |||||

Lecture notes | The slides will be available for download on the course home page. | |||||

Literature | Robert 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 / Notice | Prerequisites are knowledge and programming experience according to course 252-0845-00 Computer Science I (D-BAUG). |

- Page 1 of 1