Distributed computing systems have become pervasive. From clusters to internet-worked computers, to mobile machines, distributed systems are being used to support a wide variety of applications. This course introduces key concepts and techniques underlying the design and engineering of distributed computing systems. The following are the objectives of this course:
– In-depth understanding of core concepts of distributed computing.
– Construction of applications and supporting system components by doing project work.
The goal of this course is to understand the principles and organization of computer systems and to learn the performance enhancing techniques and quantitative analysis methods used in advanced processors. This course covers high-performance techniques such as pipelining and out-of-order processing, memory hierarchy including a cache memory and virtual memory, interrupt processing, and how to design a processor based on quantitative analysis. In addition, recent important topics such as SIMD and multiprocessors will be introduced and design and simulation for a virtual processor are to be practiced for a comprehensive understanding of computer systems.
(Prerequisite: EE303, EE312)
Lecture on Operating System and Network System handles network middleware. Network middleware is a distributed software layer that works above the network operating system and below the application layer and abstracts the heterogeneity of the underlying environment. The role of middleware in network systems will become increasingly important, especially in emerging technology areas such as mobile computing where the integration of different applications and services from different wired and wireless networks becomes important. Since middleware is represented with providing useful building blocks for the construction of software component, the lecture will introduce basic principles, architectures, interactions in distributed systems, and a broad sense of content in the computing infrastructure.
Every scientific research starts with finding new problems. Likewise, the most important step in security research is to discover new attacks. Today, media is filled with attacks on various systems: Web servers, DNS, Internet banking, e-voting systems, cellular networks, social networks, mobile phones, nuclear power plants, and implantable medical devices. These attacks are originated from various vulnerabilities, such as user interface design, ignorance or security by obscurity, deployment mistakes, and physical exposure. The main objective of this course is to learn how to think like an adversary. In other words, we will look at various ingenious attacks and discuss why and how such attacks were possible. This is the first crucial step to design and deploy systems robust against various attacks. (Prerequisite: EE323, EE415)