C is an old programming language. It’s an important starting language in computer engineering since:
- The language interacts so closely with hardware.
- It introduces concepts in the context of memory.
- It requires us to implement functions by hand.
It lacks things like objects and classes, but it does introduce finer control of memory and hardware components. Not to be confused with C++ — which is not a superset of C but closely related.
C versions are expressed by the year of release. The most common versions are C89, C99, and C11.
Language features
- Data types
- Qualifiers
- Memory access
- Preprocessor
Libraries
Tools
Resources
- Jorengarenar’s blog, for applications and some tips
- For an introduction to the language:
- Beej’s Guide to C Programming, by Brian Hall (2023)
- Modern C, by Jens Gustedt (2021)
Courses
- APS105 — Computer Fundamentals, for introductory C
- ECE243 — Computer Organization, for embedded C
- ECE344 — Operating Systems, for systems C