
Introducing himself, Senthil outlines his extensive programming experience and fluency in C, C++, Java, and Python, and announces his role as the course instructor; a LinkedIn link is provided.
Learn C with easy, fun, hands-on lessons to build a solid foundation in concepts, debunking the notion that C is difficult, and gain super powers to build anything in C.
Begin this course with no prior programming experience or complex math required. Understand basic arithmetic, and focus on patient learning as your prerequisite.
Take a tour map of delightful C course, outlining C's history, uses, features, and setup, then a hands-on path from basics to advanced programs with debugging tips and career directions.
Discover how Dennis Ritchie designed C in the late 1960s and early 1970s as a general purpose language for Unix, with strongly typed data and compilers like GCC, Clang, MSVC.
Explore how C powers Linux and BSD kernels, Postgres databases, Apache and Nginx web servers, and game engines like Quake and Doom.
Explore how to use online c ide tools without installation, including onlinegdb, geeks for geeks, codechef, and ideone, to write, compile, and run c programs in your browser.
Configure your C programming environment by setting up a VirtualBox virtual machine, Ubuntu Linux, and the gcc compiler or Visual Studio for Windows users.
Install and configure VirtualBox to run Ubuntu Linux, including downloading the VirtualBox installer, creating a new virtual machine, attaching the Ubuntu ISO, and completing the installation and installing GCC.
Disable wayland via gdm3 custom.conf to fix the screen flicker. Install atom editor from a .deb package, launch it, and create a sample c file to see syntax highlighting.
Install Visual Studio Community 2017, download and install desktop development with C++. Create an empty C++ project named myfirst, add a source file, build successfully, then run the program.
The main function serves as the entry point for C applications and can call other functions. There are two versions: one without arguments and one with program flags.
Write a classic hello world program in C using stdio.h and printf. Compile with gcc or cl and run the executable to print 'Classic hello world'.
Explore how the printf function prints variables and reveals execution progress by pairing format specifiers with corresponding data arguments, using %d, %c, %f, and %s.
Learn how scanf reads input from the standard input in c using format specifiers %d, %c, %f, %s and the addresses of variables in stdio.h, similar to printf.
Explore the delightful-c repository on GitHub, clone or download, unzip, and complete the 003-03 sizeof ints and floats template by filling steps and compiling with gcc.
Explore how a C application relies on a layered system, from hardware and kernel to libc, and how system calls connect kernel to libc.
See how C sits close to the CPU and RAM, translating to assembly and even inline assembly. Learn memory concepts like allocation, freeing, addresses, and memory access to optimize performance.
Discover inline assembly by mixing C with ARM assembly, using asm volatile, and seeing how the compiler embeds assembly in C and the register keyword reveals low-level concepts.
Translate a simple C program to assembly by compiling add2_integers with gcc -S to produce program2.s, illustrating addl and movl on the cpu.
Explore how memory locations and addresses function in C programming, using bytes, hexadecimal notation (0x...), and the CPU's role in reading and writing values.
Discover how a simple integer variable holds a value and its memory address. Print the address with printf %p and & and compile the program with gcc to observe it.
Demonstrate dynamic memory allocation in C by using malloc from stdlib.h to allocate 1 MB, check allocation, print status with printf, and then free the memory after use.
Explore the core C datatypes, including integers (signed and unsigned), real numbers (floats and doubles), chars and strings, plus pointers and enums.
Learn to define integers in C with int, declare variables for 25 violin students and 13 French students, and print the total with printf, showing 38.
learn how to add real numbers in C using float or double, illustrated with prices like 4.65 and 8.95, and print the result with printf, using two decimals.
Explore how float, double, and integer types differ in capacity, and learn to use limits.h and float.h to determine their min and max values across architectures; print them with printf.
Explore how the sizeof operator reveals datatype sizes in memory. See how char, int, long int, float, and double occupy bytes and relate these counts to malloc.
Explore how signed and unsigned integers work in C, including signed long long int and unsigned long long int, their min and max values, and printing with %lld and %llu.
Demonstrate integer wrap around in C by contrasting signed and unsigned types, showing maximum values wrap to zero for unsigned, with a before/after print routine and a clock analogy.
Explore valid and invalid datatype conversions, illustrate narrowing and widening conversions with examples like long long to int and float to pointer, and explain potential loss.
Examine narrowing and widening type conversions in C, including unsigned long long int, long long int, int, float, and double, and identify data loss and infinity.
Explore type casting in C by comparing narrowing conversions, overflow risk, and lossy conversions, then see explicit casting of double to int with examples using %d and %f.
Explore how a variable acts as a human readable alias to a memory location, enabling read and write operations through a name like f, with hexadecimal notation for addresses.
Explore the assignment operator and addition in C with hands-on examples, including integer and float math, incrementing with x +=, and printf outputs.
Explore the subtraction operator and decrement in C, using int and float examples to compute adults, dollars left, and x-=, with sample code and output demonstrations.
Demonstrate the C multiplication and division operators with integers and floats, including x = x * 4, x *= 4, and x /= 4, plus practical examples.
Learn how C represents infinity with INF and not a number with NAN. See how the modulo operator computes remainders and checks divisibility.
Explore post-increment and pre-increment operators in C, showing how j = k++ returns the current value then increments, while j = ++k increments first then assigns.
Examine post-decrement and pre-decrement operators in c, noting how j and k update with k-- and --k. See how their evaluation order yields different results in code.
Explore how operator precedence governs expressions like 3 + 4 * 5, showing multiplication takes precedence and how parentheses can yield 35 instead of 23 in a simple C example.
Demystify operator associativity in C, showing how operators determine the grouping of expressions and influence evaluation.
Discover the C math library (libmath) and math.h, using pow, sqrt, exp, and log under IEEE-754 rules. Learn to read man math, pass arguments, and obtain return values.
Explore relational operators to compare values and drive if statements, and outline bit operators—or, and, xor, not, left shift, and right shift—plus basic datatype arithmetic and assignments.
Learn how to write and use functions in C, understand their return values and side effects, and assemble small functions into programs with examples like 4 and 6 producing 10.
Explore defining and calling functions in C, covering return types, void, function naming, arguments, braces, and function calls, illustrated by add_two_integers and DRY principles.
Learn how void functions in C return no value, declare the void return type, and print results with printf, while calling with char arguments and exploring function definition styles.
Learn how in C programming, a function signature defines return and argument types, and how a function declaration (prototype) resolves calls before definition, including the role of header files.
Organize a C program into compilation units by building from main.c and addition.c. Declare a prototype for add_two_int, define it in addition.c, and link the object files into an executable.
Learn how header files (.h) centralize function declarations for external modules, using #include to share additions across files, and how refactoring into addition.h improves maintenance and compilation.
Explore how the return keyword exits a function, may return values or nothing, supports multiple return points, and how local variables on the stack cannot have their addresses returned.
Learn to use the C libmath functions pow, sqrt, exp, and log by exploring their signatures from math.h, reviewing manual pages, and implementing a sample program that prints results.
Explore global variables and extern declarations in C. See how a variable defined in one file can be accessed across the program, with lifetime and ownership considerations.
Explore how a C program maps to memory across .text, .data, .bss, heap, and stack, and see how global and initialized or uninitialized data appear in assembly and during loading.
Explain top level static variables in C, their active scope within a compilation unit, and their lifetime, controlled by the static keyword, unlike global variables accessed externally via extern.
Delve into function level static variables in C, showing how a static variable inside a function retains state across calls, unlike local stack variables.
Explore code blocks in C within functions, learn how braces create local variables with block scope, including nested blocks, and see a demonstration of block-specific variables and prints.
Explore conditional statements in C, detecting changing conditions and taking appropriate actions. Learn how programs respond to internal and external changes, using real-world analogies like traffic lights and data streams.
Demonstrates conditional statements in C by detailing the if statement, its parts, and how to act when a condition is met, including returning infinity for a zero denominator.
Explore the if else statement in C, detailing condition checks, then and else bodies, with a make animals example that prints barking for dogs (value 1) and silence for others.
Learn to use if, else if, and else to test multiple conditions in C, handling animals like dog, cat, duck, bird, and unknown cases with corresponding prints.
Explore the switch statement in C, defining cases, applying break statements, and using a default to handle unknown values. Learn through animal examples and practical code demonstrations.
Learn how equality and inequality operators work in C, using if-else blocks to compare x to values like 5 and 6 and print true or false outcomes.
Explore greater than and lesser than relational operators through value comparisons in if statements and loops, using a function to test positive, negative, and range checks.
Explore how greater than or equal to and less than or equal to operators compare values, control if conditions, and determine which code blocks execute in practice.
Explore the ternary operator as a shorthand for if statements in C, using a condition, a question mark, and a colon to return 1 or 0 in divisibility by five.
Explore recursion basics, base cases, and stack behavior. Learn how functions call themselves, termination conditions, and practical examples.
Define enums to model categories like dog, cat, and horse, assign implicit or explicit values, and use a switch to trigger actions such as barking or miaowing.
Demonstrates typedef in C to create aliases for data types, preserving underlying properties while allowing readable names for integers, floats, long long, and enums, with example printing and switch usage.
Explore how relational operators combine with logical and, or, and not to form complex condition checks in C. Implement a range check using min and max.
Explore how the C preprocessor serves as the first stage of compiling, converting source into a form the compiler understands and showing how header content is included.
Explore the define macro in c, how the preprocessor replaces text patterns with substitutions, and the use of arguments and potential pitfalls.
The lecture explains using the C preprocessor to conditionally enable or disable code blocks with #if, #ifdef, and #endif, and how to enable flags via define or gcc -D options.
Explain how the #ifndef directive controls code by checking if a flag is not defined, using #endif to end the block and enable or disable printing.
Explain how a header guard prevents multiple inclusion and compiler errors by defining a guard flag at the top and ending with end-if.
Learn how preprocessor directives guard production builds by separating development features from production code, preventing wrong configurations and stopping compilation when development code leaks into production.
Learn how ifdefined and predefined macros in C automatically expand to enable debugging, printing the function name, file name, line number, and build time for debugging output.
Become the C programmer who not only knows the language syntax but also understands the underlying principles and inner workings of the language.
This course is created in the most comprehensive, yet easy to understand way as it is explained with real world analogies.
This course has 150+ lectures, 21 hours of video in high quality HD resolution,115+ coding sessions, 65+ programming assignments (bonus assignments which will be updated continuously throughout the course).
Whether you have never programmed before, already know some basics, find pointers to be challenging, or want to understand the language in great depth and how it works under the hood in easy to understand and fun way, then this course is for you.
This course will teach you C in a practical manner. Each C concept is taught with a full coding screencast and a set of hands-on assignments (solutions included).
You can write C programs, regardless of your operating system, whether its Linux, Mac or Windows. All installation steps are clearly explained.
Here is exactly what we cover in this course:
# All the C and programming fundamentals: things like data types, functions, loops, conditionals, arrays, strings, pointers, structs, unions and more.
# Everything you need to know in order to gain a deep understanding of how C works behind the scenes: inline assembly, C to assembly, writing to memory, manipulating memory with pointers
# Learn how to structure code using header files, extern keyword and usage of flags
# Learn how to debug code using debuggers
# Learn how to build and write make files
You will get lifetime access to over 150 plus HD quality lectures and related coding assignments.Learn at your own pace, whenever you want.
Downloadable starter code and final code for each programming assignment.
Free helpful support in the course Q&A when you have questions.
This course comes with a 30 day money back guarantee! If you are not satisfied in any way, you’ll get your money back. Plus you can have access to all the coding assignments and bonus assignments as a thank you for trying the course.
So what are you waiting for?
Learn C language that will broaden your knowledge, feed your curiosity, open new career options all in a fun and practical way!
Join me in the only C programming course that you will need!