Advanced C Programming
C Programming for C Programmers
Description
Thank you for taking few seconds to explore my course.
If you have already started learning C programming, and now you are curious about deep understanding about what happens behind the scene, then this course is for you.
My approach in this course is to take every topic down to its roots, and using real-life example instead of naive example.
Starting with the preprocessors, we explore how does it work, and how to debug it with specific compiler flags.
Moving on to functions, we explore the execution model, and how does the CPU handles function calls, argument passing, how local variables are managed in the stack and more.
The pointers ! Probably the topic that is most known of its ambiguity. In this class, we try to simplify things by examples. We explore the dynamic memory allocation concept, and implement a dynamic memory manager as an example.
We explore structures and unions, covered with real-life example.
We take an quick overview about modular design and how to develop the code in a way that can be re-used.
At the end, we develop a sample BMP image editor, aggregating few examples that we did through the course.
Needless to say, you have 30 days money back guarantee. If you find the course not suitable for you (I promise it isn't), you can return it back and get your money.
What You Will Learn!
- Great and very deep understanding of pointers and memory management
- Proficiency in using preprocessor
- The ability to write modular code, that is extendable, readable and maintainable
- Understand how to use C constructs (like structures, unions, arrays, ..) in real-life problems
- 5 Projects to cover most of the topics discussed through the course
Who Should Attend!
- Students who have already taken the first steps in C programming and would like to understand what happens under the hood
- Students planning to use C programming as their major language at work or study
- Students interested in embedded systems, firmware design, kernels, drivers and other low-level programming domains