Foundations of Compupting Systems
Foundations of Compupting Systems
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)
Sequential circuits - latches and flip-flops, registers, SRAM and DRAM cells and
their characteristics, memory hierarchy (3 lectures)
CPU design - instruction and data memory, operations within a CPU such as fetch,
decode, execute, and writeback (6 lectures)
Stack machines - PUSH and POP instructions, procedures and subroutines, execution
stack and argument passing (6 lectures)
SYSTEMS PROGRAMMING:
Linux Fundamentals - linux file system, absolute and relative file paths, pseudo
files, Linux terminal, navigation and simple commands, version control (1 lecture +
3 hours lab)
Makefile, make variables, pattern substitutions and wildcards, Organizing code into
multiple folders, order-only prerequisites of Makefiles (2 lectures + 6 hours lab)
Shell scripting, I/O redirection, UNIX pipe ( | ) and command pipelines (2 lectures
+ 6 hours lab)