A Tour of CSF

Created

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.