Matthew Calligaro, 2020
This textbook was created as a resource for students taking CS70, an introductory-level computer science course taught at Harvey Mudd College. The first section introduces major topics in C++, including object lifetime, compilation, memory management, and templates. The second section explores basic data structures including linear data structures, trees, heaps, and hash sets. The final section builds tools for analyzing the runtime of these data structures, including asymptotic, amortized, and best/worst/expected case analysis.
While this text is specifically tailored towards students enrolled in Harvey Mudd's CS70 course, I hope that it may also provide value to students at other institutions or anyone hoping to learn or brush up on core computer science concepts.
In addition to the textbook, this repository contains the following case studies:
- compilation: Compilation, linking, and make
- inheritance: Single inheritance from classes and abstracted classes
- iterators: Iterator functionality and common uses
- objectLifetime: Tracking the five stages of object lifetime in several contexts
- overloading: Type transformation and function overloading
- templates: Function and class templates, including a templated implementation of the min heap data structure
Each case study is contained in a directory with example code, a makefile, and a README.md
which explains the example and recommends experiments which can be run on the code. The intent is for students to clone this repository and modify/experiment with the code in each case study.