Distributed Systems Engineering
The Distributed Systems Engineering theme equips students with comprehensive knowledge of the principles, technologies, and methodologies essential for designing, implementing, deploying, and managing distributed computing systems. These systems, comprising interconnected computers collaborating to attain shared objectives, demand adept system engineering skills to ensure scalability. Focused on distributed computation, data processing, and distributed machine learning, this theme emphasizes hands-on experience in engineering real-world systems, enabling students to translate theoretical concepts into practical applications effectively.
Year 1 |
|||
Quarter 1 |
Quarter 2 |
Quarter 3 |
Quarter 4 |
Software Architecture | Core course | Responsible Computer Science | Research course |
Core course | Theme 1 | Theme 1 | Theme 1 |
Core course | Theme 2 | Theme 2 | Theme 2 |
Credits: each course in a theme is 5EC, so each theme is 15EC.
Students choose 2 themes, each of which has 3 courses in the 2nd, 3rd and 4th quarters of the 1st year. For this theme, you will take the following courses:
Q2 - Distributed Algorithms
The course aims to equip students with a comprehensive understanding of fundamental challenges and solutions in distributed computing. Through this course, students will explore essential distributed algorithms, develop the ability to reason about their execution, and gain hands-on experience in programming them. Topics covered include notions of time and ordering of events, distributed algorithms for network overlays, message ordering, detecting global states, termination detection, deadlock detection, mutual exclusion, election, minimum-weight spanning trees, fault tolerance, broadcast, consensus, and agreement, blockchain technology and its relation with consensus.
Q3 - Distributed Data Systems
Starting in the mid-1990s, computing is undergoing a revolution, in which collections of independent computers appear to users as a single, albeit distributed, computing system. Motivated by the increase in the computation capacity of consumer computers, by the commoditization of server-grade machines, and by the advent of the Internet, the distributed computing paradigm has permeated all fields using computers. Current distributed computing applications range from the consumer social networks, peer-to-peer file-sharing, and massively multiplayer online games; to scientific computing using Big Data and stream processing; and to engineering fields and industrial control systems. This course focuses on the systems aspects of distributed computing.
Q4 - Blockchain Engineering
The course provides a comprehensive exploration of blockchain technology, covering replication, tamper-proof data structures, digital identities, distributed consensus, and smart contracts. Students engage in a team-based engineering project to gain hands-on experience in designing, implementing, and testing blockchain solutions. Topics covered include blockchain basics, consensus models, smart contracts, decentralized autonomous organizations, and the re-decentralization of the Internet. By the end of the course, students will have a profound understanding of operational blockchain systems, real-world applications that may be built on top of ledger technology, and the open challenges facing the field.