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