serious skills. comfy setting.

The C Language
A detailed course on C language with insights using the RISC-V assembly.

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
(5)
| 3000+ Enrolled.
Last Updated: 5 Mar 2026| English| 365 day Access.
Includes
 20+ hours of recorded lectures.
 91+ Lessons.
 Emulator based experiments.
 10+ downloadable resource.
 Certificate on completion.
 Exercises and Coding Challenges.
 Several Project implementation.
 Free updates to the course.
What you will 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).
Hey there!
Details of Content
C Language Tour
A quick hands on tour of the C language and a demo to experience it's raw power.
  Roadmap and Mindset
  Sandbox Environment and Basic C Program
  Keep an Eye on Functions, Pointers and Structs
  Example of the RAW power - Functions, Struct and Pointers
Mental models to brain tattoo
How to think like a computer scientist when working in the C language.
  Mental Model of the System
  The mental model of the CPU
  The mental model of the Memory
From Text to Binary
Introduction to the RISC-V ISA and how the text gets converted to 0s and 1s.
  Instruction Encoding and the rv32i ISA
  A tour of Toolchain, QEMU, GDB
  Demo - assembly to binary, QEMU and GDB
  Instruction Encoder Decoder, Makefile and GDB Dashboard
Dwelling in the world of Assembly
How to write assembly programs using the RISC-V RV32I instructions.
  Anatomy of Assembly Program, writing code, debugging in GDB
  Decomposing C to Assembly and the relation
  Getting CPU from assembly to jump to C program
C Keywords - Data Types
Explore the C Keywords to understand the scope and powers of the language.
  Introducing the C Keywords
  Data types, Variables and Integers
  Datatypes - float and double
  Exploring sizes of data types and location in memory
  How integers are stored - 2s complement
  floating point number encoding and few examples
  more floating point - float and double
  signed and unsigned
  const and volatile
  demo - const and volatile
  void, c standard and gnu C manual
  typedef and sizeof
  structs and unions
  enums as named numbers
C Keywords - Branching and Looping
Exploring the branching instructions the C language provides by means of hands on experiments.
  if, else, switch, case, default, do, while, for, continue and break
  goto and return
  Demo - if, else if and else effects at assembly level
  Demo - switch case and effects at assembly level
  Demo - loops - for, do, while, continue and effects at assembly level
  Demo - goto and jumps across functions
  auto, register, extern and static
  Demo - auto keyword
  Demo - register keyword
  Demo - extern keyword
  Demo - static keyword
Variables and Functions
How to save data and group instructions together.
  Introduction to Variables and Functions
  definition vs declaration
  Demo - variable and function names
  Arithmetic operations and pitfalls
Project - 1
Using the concepts learned in the previous sections to implement an interactive program.
  Problem statement
  Problem statement walkthrough
  Setup, variables and I/O
  Using conditions, switch and loops
  debugging scanf issue and cleaning up the code
  guarding against bad inputs and concluding the project
Strings, Array and Pointers
Understanding strings, arrays, pointers, and the relation/differences between them.
  Strings and concept of array and pointers
  Defining and Assigning Arrays
  Arrays and out of bound access
  Strings and Character arrays
  Introduction to the concept of pointers
  Syntax related to Pointers
  Demo - introduction to working with data pointers
  Detour - Endianness
  Demo - Difference between array and pointers
Project - 2
Project based on the concepts learned in the previous sections. Implement a program to generate digital audion.
  Problem Statement
  Generating Digital Audio - walkthrough
  Math concepts and sampling
  Generating samples and file operations
  Demo - Playing the Digital Audio
User defined Datatypes
Exploring ways in which we can define data types that C doesn't already provide.
  Revisiting types of data types
  Structures - Sneak peak
  Anatomy of Struct and examples
  Demo - structs
  unions and how they defer from struct
  Demo - union
  Enums and fun experiments
  Enum and Scope
Project - 3: Embedded Sensor Management
Using the concepts from previous sections to implement a sensor management system.
  Problem Statement
  Introduction and Walkthrough
  Converting specification to data structure
  The case for union and saving memory
  Accessing elements with nested union and structs
Operators
Exploring and understanding the operators available in the C language and how to use them.
  Types of Operators
  Arithmetic Operators
  Arithmetic Operators at Assembly Level
  Relational Operators
  Relational Operators - Assembly Level decomposition
  Use of Relational Operators
  Logical Operators
  Logical Operator - Assembly decomposition
Bitwise Operators
Understand and learn how to use the Bitwise operations for bit manipulation. More importantly, discover the insights and reasons to use such manipulations.
  What are bitwise operations and the types
  Shift Operations - Left, Logical Right and Arithmetic Right
  Bitwise NOT operation
  Understanding using printf
  Understanding the Assembly View
  Exploring the Shift operations
  Assembly view of Shift operation
What sets this apart?
 
C language and pointers with focus on machine behavior.
 
Detailed analysis of data types and significance.
 
Assembly and C Coding without IDE
 
Detailed explanation and view of Programmer’s model of CPU.
 
Mental models of various components in the System to reason based off.
 
A Bottom-Up Approach with the tinge of answering the Whys.
 
Hands-on experiments to prove every concept.
 
Focused on practical professional insights
 
Cover the toolchain utilities like compiler, assembler, linker and debug tools like GDB?
 
Learn at your own pace.
Sample Certificate
Earn a certificate for every technical track by completing 95% of the course work.
Instructors
Piyush Itankar
Embedded Engineer (L5), Google
Google, Ex-Intel

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.

Audience
 
Students in Academia with C as a subject in the course.
 
Firmware and System Software Engineers looking to revisit concepts.
 
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.
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).
FAQs
What is the difference between these courses (paid) and the content on YouTube?
Some lectures from different courses have been put on YouTube as Preview. The are not structured and jump to a topic. The Courses in the Subscription are well structured and focused on developing a skill.

Is this recommended for beginners?
Yes! The courses are taught as if the learner has no idea about the subject. Each course starts of by ensuring that the basics needed to understand the followup lectures is understood.

Why a subscription model?
We are billed for the hosting and bandwidth by the platform provider. While we would very much like to offer lifetime validity, given the recurring bills, we have to ensure we continue to earn enough to be able to fund the effort and bring more value to our learners. The Monthly plan is for those who cannot afford the yearly subscription but can benefit from burst learning. To get the most out of our content, we recommend subscribing to the yearly plan.

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. We use GitHub Codespace to ensure that you don’t struggle with the setup and focus on the learnings. You are always free to setup the environment locally. Although, we won’t support that, but you are free to do so. The courses, as much possible use a Emulator target of a real board, so if you wanted to run the code on real board. You can do so.

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.

I previously purchased a course from inpyjama/pyjamabrah, any discount for me?
Yes. We can offer a discount on the yearly subscription. Please reach us at support@pyjamacafe.com and be sure to include the details of your past investment. We will work on a custom discount for you.

The C Language
A detailed course on C language with insights using the RISC-V assembly.
Bestseller
Beginner
Intermediate
(5)
 20+ hours of recorded lectures.
 91+ Lessons.
 Emulator based experiments.
 10+ downloadable resource.
 Certificate on completion.
 Exercises and Coding Challenges.
 Several Project implementation.
 Free updates to the course.

Newsletter

Stay updated on the technical posts, resources and curated content.

I agree to receive emails.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.