Start here...first principles (C)
Start here