Class Central is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

NPTEL

Design and Engineering of Computer Systems

NPTEL and Indian Institute of Technology Bombay via Swayam

This course may be unavailable.

Overview

Prepare for a new career with $100 off Coursera Plus
Gear up for jobs in high-demand fields: data analytics, digital marketing, and more.
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 SystemsINTENDED AUDIENCE :Senior UG students or PG students in Computer Science. Working professionals.

Syllabus

Week 1 - Introduction to computer systems.• Introduction and overview of the course• Principles for designing computer systems• Overview of computer system hardware and softwareWeek 2 - Process management and CPU virtualization• Process abstraction and process management in operating systems• Threads and concurrency• Virtual machines and containersWeek 3 - Memory management• Memory management in operating systems• Virtual memory and paging• Optimizing memory access in user programsWeek 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 systemsWeek 5 - Computer networking• Architecture of the Internet• Internet routing, transport and applications• Network securityWeek 6 - End-to-end application design• Inter-process and inter-thread synchronization• Architecture of multi-tier applications• Case studies and examples of systems designWeek 7 - Performance engineering• Performance measurement and analysis• Techniques to improve performance of computer systems• Caching, horizontal and vertical scaling, load balancingWeek 8 - Reliability engineering• Techniques for fault tolerance in computer systems• Replication, consistency, and atomicity• Case studies of designing reliable computer systems

Taught by

Mythili Vutukuru

Tags

Reviews

Start your review of Design and Engineering of Computer Systems

Never Stop Learning.

Get personalized course recommendations, track subjects and courses with reminders, and more.

Someone learning on their laptop while sitting on the floor.