Loading...

Course Code: CS5102
Course Name: Computer Systems
Prerequisites: CS5002L
Syllabus: Preamble: This course provides a comprehensive understanding of how computer systems work and gives a practical exposure to the internals of operating system and networked systems.
Content: Introduction: Review of Computer System Architecture; Principles of Computer System Design; CPU, Memory and I/O architecture. Basic architecture of Linux Operating System.
Process Management: Process and Thread management in Linux, CPU Scheduling Policies. Virtual Machines and Containers. Multithreaded programming, Inter process communication.
Memory Management: Paging, Demand Paging and Virtual memory management. Memory allocation and management strategies in Linux.
Files and I/O: Filesystem implementation in Linux, I/O management, DMA, Network I/O implementation in Linux.
Networked Systems: TCP/IP architecture. Packet routing architecture, Transport protocols, Socket programming. Remote Procedural Call (RPC), Remote memory access through RDMA.
Principles of Distributed Systems: Caching, Replication and consistency, Fault tolerance and Reliability, Atomicity.
Programming assignments would be given with respect to the topics covered in Linux environment centered around Linux process and thread libraries, implementation of scheduling and memory management, networking tools like socket programming, Wireshark, and implementing networked applications.
References: 1. Remzi H. Arpaci-Dusseau & Andrea C. Arpaci-Dusseau (2018). Operating Systems: Three Easy Pieces (1 ed.). Arpaci-Dusseau Books. - https://pages.cs.wisc.edu/~remzi/OSTEP/
2. Larry Peterson & Bruce Davie (2024). Computer Networks: A Systems Approach (2024 ed.). Systems Approach LLC. - https://book.systemsapproach.org/latest.html
3. Randal E. Bryant & David R. O'Hallaron (2016). Computer Systems: A Programmer's Perspective (3 ed.). Pearson
4. Jerome H. Saltzer & M. Frans Kaashoek (2009). Principles of Computer System Design (1 ed.). Morgan Kaufmann