ECE 2400 C/C++

In Spring 2024, I took over ECE2400 / ENGRD 2400 on Computer Systems Programming. I am super excited to teach this course – no better way to enable capable, real-time robots given typical resource constraints than understanding how to make the most of programming in C!

The course will prepare students for more advanced coursework in computer engineering (e.g., embedded systems, computer architecture) as well as more advanced coursework that focuses on a single type of computer systems software (e.g., compilers, operating systems, databases). By the end of this course, students should be able to:

  • describe a variety of algorithms and data structures and how to analyze these algorithms and data structures in terms of time and space complexity;
  • apply the C and C++ programming languages to implement algorithms and data structures using a variety of programming paradigms;
  • evaluate various algorithm and data structure alternatives and make a compelling qualitative and/or quantitative argument for why one approach is superior;
  • create non-trivial C/C++ programs (roughly 1,000 lines of code) and the associated testing strategy starting from an English language specification; and
  • write concise and comprehensive technical reports that describe a program implemented in C/C++, explain the testing strategy used to verify functionality, and evaluate the program to characterize its performance and memory usage.

Please check the Cornell roster for more information.