The C Language

the language, the tools and the programming techniques

This course dives into the practical applications of the C language, emphasizing hands-on learning to solidify key concepts. Delivered in an engaging and unconventional style, the lessons go beyond theory, equipping you with the skills to apply C programming in real-world scenarios.

By the end of the course, you’ll feel confident in your mastery of the C language, adept at using it alongside the tools and utilities professional C programmers rely on daily.

Bestseller Beginner Intermediate | Delivered by Piyush Itankar

(4.83) (6 ratings) 150 students

Last updated: 6 Mar' 2025 | English | 365 days Access.

Course Includes

~ 13.5 hr  on-demand Video.
47  Recorded lessons.
downloadable resources.
29  Quiz questions to reinforce learning.
Certificate  on completion of course.
Cheat sheets and/or quick reference guides.
Case studies based on open-source code.
Coding exercises and challenges.
Code reviewing based learning.
New content regularly added!

A Message from the instructor

What you Learn

Mental models to use when coding in C.
What is machine code.
Instruction Set Architecture and Assembly coding.
GNU toolchain utilities/programs (gcc, as, ld wtc).
GNU Debugger (GDB).
Automation using Makefiles.
How text is converted to 0s and 1s.
Syntax and Structure of C Programs.
Data types, variables, declaration/definition.
Arrays, Strings and Pointers.
Structs and Union.
arithmetic, logical, relational operators in C.
Functions and Modules/Libraries in C.
Pointers and how to use them in Design.
Types of pointers.
Bit fields and Bit manipulation.
Const and volatile type qualifiers
Controlling placement of code and data in memory.
Loops - for, while, do while.
Branching - if, if-else, switch, goto.
Mixing Assembly and C and the need for it.
Booting RISC-V CPU from scratch.
Cross compiling and what it means.
memory management - Stack vs. Heap.
Dynamic memory allocation (malloc, calloc, realloc, free).
Compiler optimizations (-O1, -O2, -O3, -Os, -Ofast).

16 preview lectures

Here are 16 lectures from the course as a YouTube Playlist. You can experience the flow of the course and the teaching style first hand before starting with the full course.

Full course will be available on the learning portal and include all the other lectures, attachments, project files and more.

Details of Course contents

The list below is a complete list of lectures, quizzes, code reviews, projects, notes etc available on the learning portal at the moment. This list is constantly update with new content every few days...

How this is different from Others

FeatureUs!Others
Basic C Syntax.
Data types, strings, pointers, operators and other basics.
Code development without IDE, like how the professionals do it.
Decomposition of C code into Assembly and conversion to machine code.
Mental models to aid thinking and reasoning.
A Bottom-Up Approach with the tinge of answering the `Whys`.
Mixing C with Assembly
Real and applicable Case study and programming projects
Project-Based Learning - Develop and learn with a simple yet effective project like C shell, memory allocator, etc.
Teach with insights at the CPU level.
Cover Assembly Language and Machine code.
Cover the toolchain utilities like compiler, assembler, linker and debug tools like GDB?

Certificate

The journey through the course is a challenging one! The course is packed with insights and will take time to sink in. Will be awarded with a Certificate of Mastery if you complete 95% of the course work.

What you see above is a sample certificate (`Test Roy` is a sample student name). The design of this certificate will be modified from time to time to make it more shiny and reflect the rightly earned pride!

There will always be a dedicated certificate identification and a URL to verify it at. This should enable anyone to check the authenticity of the certificate.

The Design and Deliberation

There are many courses on the internet. I assure nothing comes close to this! C Language has been my daily driver at work for the past decade, and unlike the kernel developers, I used this language to program CPUs from scratch. This means, I have used the C language in its most RAW form - without any standard libraries. By the end of this course you will have first hand experience of that RAW power and will be able to use this language like a seasoned professional.

Over time, I have learnt that there are more C developers than meets the eye. The general public and students don’t necessarily get to see it from where they are.

Why I created this course?

I have had an interesting observations on repeat over the years - Most engineers learn and use C the wrong way and this course attempts teach C the right way. This course is a way to correct that. There is a way to look at the world using C, this course is an attempt to teach that skill.

I have had the wonderful opportunity to host several interns, lead recent college graduates, mentor early career professionals and interview close to 100 working professionals from the industry for different lower level positions in my team.

Over time, it dawned on me that although many used C on daily basis not everyone knew how to reason about their code at the System Level. For example, when I ask

What does the volatile keyword in C do?

A common answer is

It tells the compiler not to optimize out a variable.

While the answer is correct, very rarely people can explain what the implications are! A good answer to the question is -

The variable is not cached in the CPU registers!

An answer at the CPU level hits very differently and confirms that the engineer has a very deep level of systems level understanding.

This course is very carefully designed to teach and reinforce such system level understanding!

Learning Portal

The course is structured into Sections which have Chapters, Quizzes, Coding Challenges and Articles within them. Chapters also have a nice description to orient the learner as to what to expect, the Quizzes help reinforce the learnings from the Lectures.

A Clean interface and neatly sectioned topics

For the Lectures, you have the option to adjust the playback speed from x0.25 to x2 depending on what works best for you. The Code I write and explain is also shared as attachments.

Lectures

I like the old school way of chalk-and-board when it comes to explaining the fundamental concepts. Doodles and Scribbling help drive the point home.

Screenshots from the lectures

The lectures are more of us both sitting together and me explaining you on the paper how things work! I scribble on the screen, digital whiteboard and on the Code on the screen - This (trust me), I believe helps keep your focus on exactly the concept I want you to internalize.

The other thing that I use to ensure you don’t struggle with the vocabulary of the language is - Repeat critical things on repeat throughout the Course!

Hands on real world Skills

The course is based on GitHub codespaces, which means you will not need any special machine, just access to the internet and chrome browser. We set up the working environment on a Linux powered Cloud Virtual machine available to all GitHub users.

We learn system level interaction by decomposing C to ASM.

We will install all the toolchain and utilities required in codespaces, you personal machine stays untouched. Of course, if you want to setup everything on your machine there are steps for that too!

The RISC-V ISA and Debugging

I have based the Course on the RISC-V Instruction set Architecture. This architecture has few instructions and helps us focus on learning and not be lost in the detailed nuances of the instructions. Further, there is a huge community out there, support and documentation is available easily.

We run the code

We learn by converting the C code to Assembly and reasoning about what the system will do as a result. To be able to look into the system, we will use gdb.

Coding Challenges and Reviews

After every important concept there is a coding test, where you fix a given code. Not only this ensures that you have internalized the concepts but also trains you to judge someone else’s code (in this case mine). Code reviews at work and when contributing to Open-Source code is an important thing.

The course is scattered with hands-on coding challenges which reinforce the concepts.

The code environment on the platform is set to enforce a delay between every run to ensure you get into the habit of thinking before acting. Once you have fixed the code, the platform will run checks on it and rate you based on the outcome.

Quizzes and Reports

Quizzes are deliberately based on the content from the lectures. They will test you and force you to very carefully follow each word in the Lectures. These are a way to reinforce the vocabulary, concept and language used and delivered in the Lectures.

A sample quiz report

As above, after every quiz, a detailed report is generated with a personalized feedback on how well you have done and what you should do or focus on next to master this language.

Instructors

Piyush Itankar
Embedded Engineer (L5), Google
Electrical Engineer holding a Master’s degree in Embedded Systems, with a proven track record at industry giants. At Intel, contributed expertise to Navigation Firmware, Bluetooth Driver development, and RF validation software. Currently thriving as an Embedded Software Engineer at Google, drove innovation in Firmware development for the Power Management Sub-system on Tensor SoCs (Pixel Phones) and presently advancing system software for the Pixel Watch.

Early praise from YouTube Subscribers

(4.83) course rating. 6 ratings

Because the course is brand new, we released some lectures on YouTube to get early feedback, and it has been a banger! You will not regret taking this course…

@n.5s4584
11/Feb/2025
I just wanted to take a moment to appreciate the amazing content you create! Your videos are not only engaging but also incredibly valuable. I’ve learned so much from your channel, and I always look forward to your uploads. Thank you for sharing your knowledge and insights—keep up the great work! Wishing you all the success you deserve.
@its_me_to-i4e
11/Feb/2025
Your content is amazing! Last time, I bought the advanced C pointer course, and it was so helpful for embedded systems. Please consider making the course fees more affordable so that students like me can easily access them. Keep up the great work
@sharifyy
(5)
10/Feb/2025
your content is amazing, I give it 5 stars
@techpartel9858
2/Feb/2025
The flow of this course is Amazing. It covers a whole system overview of how your C code runs and how it's dumped in your hardware. Everything is excellent. Thank you, @piyush.
@EEShyama
2/Feb/2025
Loving these lectures!! Please keep them coming.
@Simi-bc8sb
1/Feb/2025
Great content. I really appreciate. Thank you
@ElizabethGreene
(5)
31/Jan/2025
Was there any reason why you preferred the RISCV32i chip over an x86 chip in QEMU? I appreciate the lesson in cross compiling too, but was curious why. Thanks for making these. 10/10
@RavindraBhandari-nf8vs
(4)
31/Jan/2025
I like your teaching method 🫡
@soumyadipkar9451
(5)
31/Jan/2025
Enjoyed the session a lot sir! GDB Dashboard is truly amazing! 🔥
@vimalathithand917
31/Jan/2025
Just what I was looking for ! I'm sure that this series is going to be a blast ! Please don't stop the series in the middle and thanks a lot !
@aadishm4793
30/Jan/2025
Great content!!
@Ujjaval___
30/Jan/2025
AMAZING VIDEOS
@aadishm4793
30/Jan/2025
Awesome as all the videos 👍👍🔥
@Padmalayarawal
(5)
30/Jan/2025
Really loved your new content, can't ask for more crazy stuff.
@shabeehabbas4737
29/Jan/2025
Hello bro just saw the this video and I cant wait to start the course, the roadmap is unconventional which is why I think its the most awesome one, please dont stop uploading such great content ❤❤❤
@ankitrajbhar6045
(5)
31/Jan/2025
This is what I actually needed in life today.. thanks a tons..

Requirements

GitHub account to do the hands-on coding in Codespaces.
Interest in the lower level working of the system.
Some exposure to Digital systems is good (but not strictly required).
Basic understanding of number systems, logic gates, bits and bytes is good to have (but not strictly required).

Who this course is for

Students in Academia with C as a subject in the course.
Early Career Professionals using C as development language.
Embedded Systems Engineers.
System Software Engineers.
Electrical/Electronics Engineers working on hardware programming.
Systems Engineer seeking gain system level insights.
Those curious to learn the underlying details of Systems and how to program it using C.
Those seeking a job change and preparing for interviews.

FAQs