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
A Message from the instructor
What you Learn
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...
C Language Tour
The section focuses on the Roadmap, Mindset and the lense through which this course is to be pursued. We also dive into exploring a basic C program so you can learn to spot the patterns when exploring the code outside of the course. To further empower you, we will also look at the three work horse feature of this language.
Mental Models to Brain tattoo
In this section we will discuss the mental models that you can use to reason about the programs. In an attempt to doing this, we will explore the models of systems from 1970s. System composition and the CPU, Memory and Interactions with environment. This sets the foundation that will enable you to exactly predict the system behavior as a result of the C program that you write.
From text to 0s and 1s
In this section, you will learn how the text gets transformed int 0s and 1s that represent the instructions in the memory.
Dwelling in the World of Assembly
Understanding what the system does as a result of the C program becomes very simple once we know how the C statements may be translated to the assembly code. We will thus spend time mastering the structure of the Assembly programs and the instructions available to us.
C Keywords - Data types
In this section you will spend time internalizing each of the 32 keywords from the C Language and understand the assembly and system level implications.
C Keywords - Branching and Looping
In this section take a look at the keywords that relate to branching and looping
Variables and Functions
We learn how to write C programs and what role variables and functions play in the context of C programs.
Project 1: Implementing a Calculator
Our first project based on the learnings in the previous sections.
To be uploaded...
This course is being actively developed at the moment. More sections/Lectures and exercises are regularly added. Sections prior to this are complete and available for learner to pursue...
How this is different from Others
Feature | Us! | 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.
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.
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 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 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 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.
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
Early praise from YouTube Subscribers
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…
Requirements
Who this course is for
FAQs
What is the difference between this course (paid) and the videos on YouTube?
Only few initial videos are put on YouTube. The Full course has many more videos and is a paid offering. Learners will also have access to the notes, source code files and other resources.
Is this course good for beginners?
Yes! The course is taught as if the learner has no idea about the C programming language.
Why is the course validity 365 days?
We need to maintain the servers that host the courses. At the moment we have enough capital to keep the server afloat for another until. We are striving to make this a lifetime access course. As the funds trickle in, we will revisit the validity and might update it for all the enrolled learners.
Do I need a special machine configuration to take this course?
No! All you will need is an internet connection and the Chrome browser. The hands-on examples and lab work is based on GitHub codespaces platform.
Why is a GitHub account needed?
The Experiments and Labs are based on the GitHub provided Codespaces virtual machine. Codespaces will enable a common work environment for all the learners and avoid the hassle of special setup.
Can I change my email-id post purchase?
As much as we'd like to support that, your account will be linked to your email-id post purchase.
What name will be printed on the Certificate?
The name you use on the platform will be printed as is on the Certificate when it is generated.
Can I follow the steps on my own PC?
Yes for the most part. Better yet would be if you have a linux machine.
How will the open-source contribution work?
We will host few github repos under pyjamabrah with the skeleton code and details asks (in comments) about the subsequent tasks. You can add the code (with your details in the comment if you'd want), create PR (pull-request) and submit. We will review and merge your PR into main.
Will this course be added to `Firmware Engineer's Arsenal`?
No! This is a separate offering and unrelated to my previous work at inpyjama.com. pyjamabrah is exclusively run by me and independent of continuous collaboration with my team.