Cornell University
School of Electrical and Computer Engineering
ECE 2400 / ENGRD 2140
Computer Systems Programming
Fall 2017
Prof. Christopher Batten
206 Upson Hall • Monday, Wednesday, Friday • 10:10–11:00am
home | details | schedule | readings | handouts | resources | sponsors
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.
- R. Sedgewick. Algorithms in C, Parts 1–4, 3rd
edition.
Addison-Wesley, 1998.
[ amazon | publisher | reserves | ebook ] - M. Weiss. Data Structures and Algorithm Analysis in C++, 4th
edition.
Pearson, 2013.
[ amazon | publisher | reserves ] - W.R. Stevens and S.A. Rago. Advanced Programming in the UNIX Environment, 3rd
edition.
Addison-Wesley, 2013.
[ amazon | publisher | reserves | ebook ]
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.
- S. Myers. Effective C++, 3rd
edition.
Addison-Wesley, 2005.
[ amazon | ebook ] - S. Myers. More Effective C++, 1st edition.
Addison-Wesley, 1996.
[ amazon | ebook ] - S. Myers. Effective STL, 1st edition.
Addison-Wesley, 2001.
[ amazon | ebook ] - S. Myers. Effective Modern C++, 1st edition.
O'Reilly, 2014.
[ amazon | ebook ]