Navigation auf uzh.ch
Instructor(s): |
Prof. Dr. Alberto Bacchelli (Module coordinator) |
Assistants: | |
Scope: | Lecture with exercises, MSc |
ECTS | 6.0 |
Classes: | Tuesdays, 08.15 - 09.45 |
Exercises: | Tuesdays, 12.15 - 13.45 |
Exam: |
Type: written exam. |
Additional Links: | |
Room: |
BIN-2.A.01 (Seminarraum) for classes and exercises. For further information, please check: Times/Rooms/Instructors - Students will be informed in case of further changes. |
Description
Students will deepen their knowledge on advanced topics about the development and evolution of software systems, particularly distributed, data-intensive systems, during this course. The Fundamentals of Software System (FSS) is organized into three modules (distributed systems, database systems, and software evolution), in which different aspects and their relation are analyzed in a distributed data-intensive application. At first, Distributed and database systems allow for the understanding of basic concepts of distributed systems’ encoding demands toward reliable communications on top of unreliable networks (distributed concurrency control), and especially consensus approaches (distributed reliability).
In the second part, this discussion is continued focusing on distributed databases, and especially web-scale databases. This covers the theoretical foundations of such systems (CAP theorem, ACID vs BASE, etc.), general methodologies with respect to consistency and scalability, but also discussion of example systems like Dynamo, Bigtable, or Spanner.
Software evolution comprises an overview of technical and socio-technical aspects. While technical aspects require distinguishing software concerning its architecture (e.g., even-driven or service-oriented) and its technical evolution, the social aspects cover metrics concerning software ownership, code contribution, sustainability, and others. Combining these concepts allows students to understand basic concepts of distributed application design and identify different aspects regarding their development and use.
Content
The students will acquire and be able to apply knowledge on:
This will enable students to develop and analyze on their own, at a later stage, maintainable, efficient, performing, and reliable distributed software systems.
Requirements
Knowledge of bachelor-level topics of distributed systems, databases, and software engineering is necessary for both the lab assignments and following the lectures.
Important
There will be mandatory exercises and a mandatory written exam. They both cover theoretical and practical aspects of the course.
Concerning the exercises, six assignments will be handed out throughout the course. Students are expected to carefully work on these assignments and hand them in by the required deadlines. Three assignments pertain to the 'distributed systems' submodule, one to the 'database systems' submodule, and two to the 'software evolution' submodule.
Students who hand in ...
(a) ... at least four valid assignments receive a +10% bonus over the final exam's points, but not exceeding the maximum 6.0 grade;
(b) ... less than one valid assignment per submodule receive neither a bonus nor a malus; or
(c) ... less than two valid assignments receive a -10% malus over the final exam's points, but not falling short of the 4.0 grade.
Note that the overall number of valid assignments for the course submitted needs to see at least one valid assignment from each submodule. Additionally, valid assignments are counted as "valid", if they clearly show that a measurable amount of work and effort had been spent.
The final FSS course grade is based on the written exam, including the bonus/malus as described.
Course Material
Hint
The information contained on this page complements the official page at the Vorlesungsverzeichnis (VVZ). In case of doubt, the official information from the VVZ is always considered valid.