A Tour of CSF
Links
Introduction
This course is about computer systems (hardware + software) from the programmer's perspective (how they work together).
What you will learn:
- How computers work down to hardware (OS runtime library interfaces, machine-level ISA/assembly language, processor features, OS features)
- How to optimize application performance
- How to avoid pitfalls like security vulnerabilities
- How to take full advantage of the computer's and OS's capabilities
A computer system (hardware) is made up of:
- CPU: processing
- RAM: store and return short term memory values
- Storage: store long term values
- Network interface: allows a computer to interact with other computers
- Graphics Cards: display graphics
- USB hub: allow user interaction
A computer system (software) is made up of (from lowest layer to highest). Each layer provides an interface to the layer above
- OS Kernal: abstracts hardware interactions like memory. System calls (open, read, write).
- C Library: programming language runtime library (like a translation system) that provides higher level mechanisms for your program.
- Application Libraries: provides functionality
- Application program: can interact with all the layers above.
Computer networks allow your program to communnicate with peer systems.
Binary Data Representation
Numbers can be represented as:
- continuous: numbers can have any values. Think of physical phenomenas (mass, velocity).
- discrete: a number can have one set of possible values, where the set of possible values are enumerable. Think of a range of integers.
Digital computers use a discrete representation for all data because internally, information is represented using digital voltages.
- High voltage (1) vs low voltage (0)
- Digital circuits have many advantages over analog circuits. We will always get an exact value. Analogs are inexact because of measurement errors and noise so you cannot get repeatable results.
- Computer hardware operates on binary (base 2) data.
Linked from Computer System Fundamentals