Design and Engineering of Computer Systems by Indian Institute of Technology Bombay
Design and Engineering of Computer Systems free videos and free material uploaded by IIT Bombay Staff .
Week 1 - Introduction to computer systems.• Introduction and overview of the course• Principles for designing computer systems• Overview of computer system hardware and software
Week 2 - Process management and CPU virtualization• Process abstraction and process management in operating systems• Threads and concurrency• Virtual machines and containers
Week 3 - Memory management• Memory management in operating systems• Virtual memory and paging• Optimizing memory access in user programs
Week 4 - Disk and network I/O• Filesystem data structures and implementation• Synchronous and event-driven APIs for socket-based network communication• Network I/O subsystem in operating systems
Week 5 - Computer networking• Architecture of the Internet• Internet routing, transport and applications• Network security
Week 6 - End-to-end application design• Inter-process and inter-thread synchronization• Architecture of multi-tier applications• Case studies and examples of systems design
Week 7 - Performance engineering• Performance measurement and analysis• Techniques to improve performance of computer systems• Caching, horizontal and vertical scaling, load balancing
Week 8 - Reliability engineering• Techniques for fault tolerance in computer systems• Replication, consistency, and atomicity• Case studies of designing reliable computer systems
In this course, we will understand how to design and engineer real-world computer systems, covering important concepts cutting across multiple topics such as operating systems, computer networks, computer architecture, virtualization, cloud computing, performance analysis, and distributed systems. The course is accessible to anyone who has a basic introduction to computer programming; no other prior knowledge is assumed.The course concepts will be covered in a bottom-up manner, beginning with a discussion of the building blocks of computer systems, and ending with case studies and examples of end-to-end design of real-world computer systems. We start with an overview of computer systems hardware. We then understand how the operating system manages the hardware, and how user applications are built over the operating system. We will also understand how user applications communicate over the Internet.
We will then study how a computer system is assembled from various sub-components, using examples from real life. Next, we will learn how to measure the performance of computer systems, and how to optimize for good performance. Finally, we will study some techniques to improve the fault tolerance and reliability of computer systems. The course will not be tied to any specific programming language or framework, but will focus on the best practices and principles for designing and engineering computer systems. It is expected that by the end of the course, students will get a good understanding of how real-world computer systems work, and will be able to apply the concepts learnt in the course to design systems on their own.
PRE-REQUISITE :Introduction to programming. A previous course in operating systems or computer networks can be helpful, but not necessary.
INDUSTRY SUPPORT :Computer Systems, Operating Systems, Computer Networking, Distributed Systems
INTENDED AUDIENCE :Senior UG students or PG students in Computer Science. Working professionals.
Write a public review