* About abstractions
* Many abstractions between the electrons and an application
* This course looks at the middle
* Starting at human-readable programs
* Descending to abstract hardware units called gates
* Not too deep, by necessity
---
## Academic Goals
* In general
* Solidify your understanding of computing
* Low level programming and execution
* Data representation
* Concepts in architecture
* Memory and cache, digital logic, performance concerns, etc
* Prepare you for future topics
---
## A Moving Target

What I see
* Linux philosophy
* small, powerful, single-purpose programs
* Try a text editor on linux, code is just text
* gedit, sublime, etc
* vim
* emacs
* Just give your programs the .c extension
* Think about it!
---
## Today's Topics
* Basic C syntax
* Explanation of a program
---
## Starting Point
basic.c:
```C
/*
* This is an example program.
* It prints out "Hello world!"
*/
#include