Required Textbook

The required textbook for the course is "All of Programming," by A. Hilton and A. Bracy (2015). The book costs $10 and is only available as an ebook through the Google Play Store. The book takes advantage of the ebook format to include over seven hours of embedded videos. You can find general information about the book at this link:

The first four chapters of the book are available for free here:

When you are ready to purchase the book, you will need to do so through the Google Play Store using this link:

After buying the book you will see a "read" button which will enable you to read the book online.

Reading Ebook Offline on Laptop

If you would like to read the ebook offline, you should first download and install the Chrome browser, and then download the Google Play Books Web Reader App for Chrome:

If you now enter chrome://apps in the Chrome address bar you should see a "Play Books" button which will take you to your Google Play library. If you hover the mouse over the book you will see a check box which you can use to ensure the book is downloaded for offline reading.

Reading Ebook on Android or iOS Devices

If you would like to read the ebook on your Adroid or iOS device, you simply need to install the corresponding Google Play Books app, and hopefully the ebook will be ready to go in your library.

Reading Ebook on Ereader

If you would like to read the ebook on your ereader, you will need to go through a few steps. You can find out more here:

Reading Assignments

The required reading assignments for each topic as well as for the programming assignments is listed below. All readings are from "All of Programming," by A. Hilton and A. Bracy (2015). By the time of the final exam, students will have read almost all of Part I and II, as well as a significant portion of Part III.

For Programming Assignments Ch. 1, 4–6
Part 1
Topic 1: Introduction to C Ch. 2
Topic 2: C Recursion Ch. 7
Topic 3: C Types Ch. 3
Topic 4: C Pointers Ch. 8, 10.3
Topic 5: C Arrays Ch. 9, 10–10.2
Topic 6: C Dynamic Allocation Ch. 12–12.2
Topic 7: Introduction to Data Structures and Algorithms
Topic 8: Complexity Analysis Ch. 20–20.1
Topic 9: Abstract Data Types Ch. 20.2
Topic 10: Sorting Algorithms Ch. 26
Topic 11: Standard C Library
Part 2
Topic 12: Transition from C to C++ Ch. 14
Topic 13: C++ Object-Oriented Programming Ch. 14, 15
Topic 14: C++ Inheritance Ch. 18
Topic 15: C++ Templates Ch. 17
Topic 16: C++ Threads
Topic 17: Trees Ch. 22
Topic 18: Tables Ch. 23
Part 3
Topic 19: POSIX Standard Library Ch. 11–11.2

Optional Reading Materials

The following three books provide additional background or more advanced material for each of the three parts of the course. All of these books are on reserve at Uris Library, and many of these books are also available as ebooks through the Cornell library.

C++ is such a powerful and expressive language there are many, many different approaches to achieve the same goal. Some of these approaches are better than others, but it is hard to find general advice on effectively using C++ in practice. The following excellent books by Scott Myers provide a concrete list of useful and easy to understand advice. Gradually reading these books can help transform good programmers into great programmers. All four books are available as ebooks through the Cornell library.