Core Themes of CS107 how and why of 107: how is program data represented in the hardware how does the heap work and how is it implemented how does a computer know how run code how does an executable map onto computer systems why is my program doing one thing when I expect it to do something else “why is this broken system behaving the way it does?” Core Goals of CS107 fluency pointers and memory, and how to make use of them an executable’s address space + runtime behavior competency the translation of C to and from assembly implement programs with limits of computer arithmetic identify bottlenecks and improve runtime performance navigate Unix ethical frameworks to design and implement software exposure computer architecture Content of CS107 bits and bytes chars and c strings pointers stacks and heaps generics: use them assembly: reverse an engineering of binary heap allocators: implement malloc and free