Prerequisite (if any): Introduction to Programming or Systems Programming, Foundations of Computing Systems Lab (prerequisite/corequisite)
Course Content
Boolean logic and its implementation - binary digits (bits), transistors and switching circuits, basic gates and boolean operations using gates, composability of gates and building blocks of digital circuits such as multi-bit gates, and multiplexers/demultiplexers. (3 lectures)
Combinational circuits - Binary number system, signed numbers (two’s complement), adder and multiplier circuits (3 lectures)
Sequential circuits - latches and flip-flops, registers, SRAM and DRAM cells and their characteristics, memory hierarchy (3 lectures)
Instruction Set Architecture - program counter, register set, basic operations - arithmetic, branch, and I/O operations, instruction encodings (machine instructions) (3 lectures)
CPU design - instruction and data memory, operations within a CPU such as fetch, decode, execute, and writeback (6 lectures)
Assembler - Instruction mnemonics, instruction sequences, symbols, working of an assembler - symbol table and two-pass assembler (6 lectures)
Stack machines - PUSH and POP instructions, procedures and subroutines, execution stack and argument passing (6 lectures)
Compilation - Lexing and parsing, Abstract syntax tree, syntax-directed translation, illustration of these concepts through an expression to postfix conversion (6 lectures)
Operating systems - Program loading and execution, program isolation (processes, virtual memory and threads) (6 lectures)
Learning Outcomes
-
Understand the abstractions and interfaces that are the building blocks of modern computer systems
-
Appreciate the interactions and challenges related to the fundamental building blocks of a computer system (Computer Architecture and Organization, Operating Systems, and Compilers)
Text Books
- Noam Nisan, and Shimon Schocken, The Elements of Computing Systems: Building a Modern Computer from First Principles, The MIT Press. ISBN-10: 0262640686 ISBN-13: 978-0262640688
References
-
Harold Abelson, Gerald Jay Sussman, and Julie Sussman, Structure and Interpretation of Computer Programs, Published by The MIT Press, ISBN-10: 8173715270, ISBN-13: 978-8173715273
-
Randal E. Bryant, and David R. O'Hallaron, Computer Systems: A Programmer's Perspective, Published by Pearson Education India, ISBN-10: 9332573905, ISBN-13: 978-9332573901
-
Maurice Bach, Design of the UNIX Operating System, Published by Prentice Hall, ISBN-10: 0132017997, ISBN-13: 978-0132017992
Past Offerings
- Offered in Aug-Nov, 2023 by Sandeep Chandran
Course Metadata
Item | Details |
---|---|
Course Title | Foundations of Computing Systems |
Course Code | CS2011 |
Course Credits | 3-0-0-3 |
Course Category | PMC |
Proposing Faculty | Piyush P Kurur & Sandeep Chandran |
Approved on | Senate 20 of IIT Palakkad |
Course prerequisites | Introduction to Programming or Systems Programming, Foundations of Computing Systems Lab (Prerequisite & Corequisite) |
Course status | NEW |