Cornell University
School of Electrical and Computer Engineering
ECE 2400 / ENGRD 2140
Computer Systems Programming
Fall 2021
Prof. Christopher Batten
Monday, Wednesday, Friday • 10:10–11:00am • 219 Phillips Hall
home | syllabus | staff | schedule | readings | handouts | resources
Required Textbook
The required textbook for the course is the following custom zyBook assembled specifically for this course by the instructor:
- Title: ECE 2400 Computer Systems Programming
- Link: http://learn.zybooks.com
- Code: CORNELLECE2400BattenFall2021
- Cost: $88
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 support@zybooks.com 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 |