This course explores the inner workings of computer systems while teaching you the C programming language. Learn the fundamentals of operating systems, memory management, and file systems. Explore how microprocessors execute instructions and how peripherals communicate with the main system. By the end, you'll have an understanding of computer architecture and be able to optimize system performance using C.



Gain a deep understanding of stack and heap memory allocation which are essential concepts for understanding how programs run and manage memory.
Learn about automatic memory management techniques, including various garbage collection algorithms, to ensure efficient memory usage and avoid memory leaks.
Explore a variety of data types, including primitive and complex types, and learn the operations that can be performed on each which will ensure efficient data manipulation and storage.
Discover how object-oriented programming paradigms can be implemented in C, and understand the underlying mechanisms that support these high-level abstractions.
Practice programming with functions in C, including the use of recursive functions, function pointers, and understanding function semantics to write efficient and modular code.
Learn about the design and production of different computer hardware components, including CPUs, memory units, and peripheral devices, to understand their roles in a computer system.
This course is delivered online through an institution of the Lower Cost Models Consortium (LCMC) that is different than your degree-granting institution that awards the academic credit for the course.