Required Textbook

The required textbook for the course is the following custom zyBook assembled specifically for this course by the instructor:

zyBooks are online, interactive textbooks that makes it easy and engaging to learn principles and then immediately put them out in practice using a series of integrated participation and challenge activities. The zyBook for this course includes a web-based C/C++ development tool that makes it trivial to try out small code snippets. The zyBook includes one chapter for each of the 20 topics covered in the course. Students can complete the readings either before or after the topics are covered in lecture.

The first chapter of the zyBook is available free of charge to students after they create a zyBook account. Students can complete zyBook activities in the first chapter while they are finalizing their decision to enroll in the course. Although their work will be saved, this work will not be visible to the instructors until students actually purchase the zyBook. Note that zyBook will offer a full refund for students that drop the course within the first few weeks of the semester. Email to request a refund.

Optional Textbook

The optional 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:

Optional Readings

Relevant sections for each topic as well as for the programming assignments are listed below.

For Programming Assignments Ch. 1, 4–6
Part 1: Procedural Programming
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
Part 2: Basic Algorithms and Data Structures
Topic 7: Lists and Vectors
Topic 8: Complexity Analysis Ch. 20–20.1
Topic 9: Sorting Algorithms Ch. 26
Topic 10: Abstract Data Types Ch. 20.2–20.6
Topic 11: Standard C Libraries
Part 3: Multi-Paradigm Programming
Topic 12: Transition to C++ Ch. 14
Topic 13: Object-Oriented Programming Ch. 14, 15, 18
Topic 14: Generic Programming Ch. 17
Topic 15: Functional Programming Ch. E.6.8
Topic 16: Concurrent Programming Ch. 28
Part 4: More Algorithms and Data Structures
Topic 17: Trees Ch. 22, 24
Topic 18: Tables Ch. 23
Topic 19: Graphs Ch. 25
Topic 20: Standard C++ Libraries