
Ali brings 26+ years of programming experience to this C programming course, teaching C, C++, data structures, algorithms, and web programming online, with roles in project management and software architecture.
Why should C language be used and prioritized over other programming languages?
Discover how a compiler translates high-level source code into machine code or intermediate code for compiled languages, generating executables and libraries, and contrasts with interpreters.
Choose Gini as the lightweight, cross-platform ide for this course. It integrates any compiler or interpreter and is easy to install and upgrade.
Install the development tools on Windows by setting up the Genie editor, installing gcc via mingw or Dev-C++, configuring paths and Windows API support, and verifying gcc --version.
Learn to install essential Linux development tools on Lubuntu using GUI package manager or terminal, including tcc, genie, and gcc, with apt or yum, and optionally configure Apache and PHP.
C is a statically typed language, with data types defined at compile time and fixed; variables retain their type within scope and cannot change later.
Learn why C is a case-sensitive language and how identifiers must match exact capitalization to compile, with examples showing errors when keywords or variables use different cases.
Type fast to convert ideas into working C code and test early. Learn essential IDE shortcuts like ctrl-left/right, home, end, save with ctrl+1/2/3, and F9 to build in Genie.
Master the minimal C program by implementing a main function that returns an integer and includes stdio.h. Learn to print text with printf and understand function brackets and curly braces.
Learn how to read user input in C with scanf and display results with printf. Use the ampersand to pass an address to scanf and learn %d and %c.
Learn how to use single line and multi-line comments in C, including // and /* ... */, to document code and guide future developers, and the compiler ignores them.
Discover how variables and identifiers store user input in memory for processing. Follow naming rules: start with a letter or underscore, avoid spaces and keywords, and note the data types.
Explore C data types from characters to integers and floating point numbers, and learn how signed, unsigned, and size varies across 8, 16, 32, and 64 bit systems.
Master arithmetic operations in C using the assignment operator and arithmetic operators—addition, subtraction, multiplication, division, and modulus—and apply the pmdas order of operations to complex expressions.
Explore additional assignment operators in C, such as plus equals and increment/decrement, and learn prefix vs postfix behavior with practical printf examples.
Learn how arrays store multiple characters in C, distinguish strings from single chars, and manage memory, bounds, and the null terminator using strcpy and printf.
Learn to create and initialize arrays of integers, characters, and floating point types, define capacity, use curly braces for initial values, and rely on the compiler to determine undefined sizes.
Assign constant values to arrays, define or omit size, and learn index-based initialization with zero-initialization of unspecified elements, plus computing size with sizeof.
Explore the concepts of signed and unsigned data types, learn how ranges differ, observe overflow behavior, and use limits to print minimum and maximum values.
Explore the scope of constants in c, showing a constant defined as 105 remains accessible for calculations like area and pi, and how defining it inside a function affects visibility.
Learn how sized integer types ensure consistent 8, 16, 32, and 64 bit ranges across compilers by using stdint.h and fixed width types like int32_t and uint64_t, with unsigned suffixes.
Explore the enum data type in C, showing how named constants map to indices, how assigning values updates subsequent ones, and how typedef creates a reusable day-of-week type.
Explore typecasting in C by converting integers to floating point values, using explicit casts and appropriate printf format specifiers to preserve decimals.
Explore how if-else chains drive decision making in C by comparing user input with relational operators, learning when to use braces for multiple statements and how equals versus assignment work.
Explore relational operators in C, mastering equality checks with double equals, and comparisons such as greater than, less than, not equal, and greater than or equal to, using if statements.
Learn how to implement nested if else statements by building a small shop program that handles meat and fruit options, including beef, lamb, and invalid option handling.
Explore switch-case in C as a readable alternative to if-else, using constant case labels, demonstrating fall-through behavior, break, default, and nested switches with a speed example.
Discover how structures in C group diverse data types into a single user defined data type, accessed via the dot operator, to organize complex information like student records.
Explore nested structures in C by building a student with a parent and a location, access inner elements with the dot operator, and use typedef to create clear, embedded structures.
Explore unions in C, memory-sharing structures where all members share one location and the size equals the largest member, with only one active at a time for space optimization.
Discover how unions enable flexible memory management for multi-sensor data logging in C, storing diverse data types in a single memory space for efficient data capture and interpretation.
Explore union implementation in C using typedef to define compact data types and see how the largest member holds and updates all fields in memory for a sensor data example.
Explore how loops enable iteration in C by executing a block of code repeatedly based on a condition, including for, while, and do-while variants.
Explore how c loops use initialization, condition, and a modifier to control execution in for, while, and do-while, including semicolons, braces, and the infinite loop risk.
Learn how the for loop in c uses initialization, condition, and increment to drive iteration, producing a two times table and an asterisk pyramid.
Learn to convert a for loop into a while loop by moving initialization before the loop, placing the condition in while, and updating inside the body for the same result.
Learn the do-while loop in C and how it differs from the while loop, executing at least once before checking the condition, using the do keyword.
Explore labels in C, where an identifier followed by a colon marks a point in code and goto transfers execution to that point, with caution about readability and safety.
Explore labels in C by implementing a label and using goto to control program flow from start to end, and learn to break an infinite loop with a conditional jump.
Explore common c string and io functions, including string copy and concatenation with strcpy, get s and put s, and string comparisons with strcmp and strcmp i.
Format and store a message in a string using printf-style formatting; create a buffer, format age and height with %d, include a newline, and write to the string with sprintf.
Learn to print quotes, backslashes, and the percent sign in C using escape sequences, including escaping double quotes and doubling percent signs.
Practically implement the function structure in C by identifying the return type, function name, and arguments, and distinguishing declarations from definitions, plus understanding the function body and the void case.
Explain how functions that return a value work, return an integer like a square, print results, and warn that missing a return yields garbage; note debugging and file-writing examples.
Learn how functions in C take arguments or parameters, declare them, and return values, with examples of summing two integers and passing any number of arguments or user defined types.
Learn to declare and call functions with no arguments using void, avoid incorrect calls with arguments, and introduce ellipsis notation as the next topic.
Learn to implement default arguments in C using a struct to hold parameters and a macro to call the function with optional fields.
Showcases how a C function with three arguments behaves when types are omitted, with the compiler defaulting to 32-bit integers for arguments and the return value.
Understand pass by value in C, where the function uses a copy of the argument and leaves the original variable unchanged. A square example illustrates this default for data types.
Master recursive functions in C by understanding the base case and inductive steps. See factorial and printing in reverse order to illustrate progression toward termination and avoiding infinite recursion.
Explore the scope of variables across global, local, and block contexts, and show how static variables inside a function retain values across calls and require an initial value.
Explore how const is used in function arguments and return values, learn that constants must not be modified, and see why const precedes the data type in C.
Learn how preprocessor directives control compilation, define constants, and enable conditional compilation with macros, include guards, and stringification, expanding code before the compiler processes it.
Explain macros and their implementation using define and ifdef, show header guards and header files, and highlight predefined macros like __FILE__ and __DATE__.
Discover c macro concatenation and macro substitution, including parameterized macros and for loops, with emphasis on avoiding variable shadowing.
Explore parameterized macros and stringification in C, showing how macros expand inline before compiling, how to encode parameters within function brackets, and how stringification converts arguments into strings for debugging.
Explore pragma directives that control compilation, emphasizing pragma once to include header files only once, and review poison, startup, and exit concepts and their cautions.
Learn how to create a simple C file IO program using fopen, W mode, writing to a text file with fprintf, and closing with fclose.
Explore writing and reading binary data in C by saving a struct to a binary file, inspecting its 108-byte size, and differentiating binary from text files.
Learn how to read binary records in C using fread, verify the number of bytes read with size_t, and print data like name, age, and rating while handling errors.
learn to use the mode modifier b to enable binary mode with r, w, or a for reading, writing, or appending in binary mode (rb, wb, ab).
Learn how to seek to a specific byte in a file, read and overwrite data with fseek and fgetc, and determine file size by seeking to end using f del.
Determine the end of file when reading by processing one character at a time and breaking on the EOF constant from stdio; explain why post-read EOF checks are preferred.
Is prior programming experience required? Short answer is "NO", because this course is designed for absolute beginners; but, if you already have programming experience, you would be able to learn C within [probably] couple of days.
What you learn and earn from this C Course?
You would be able to code (pretty much any kind of software application), i.e. general, complex, a database driven, web, GUI application, as well as complex algorithmic stuff after finishing the course.
You will have completed understanding on C language and it's capabilities
You will learn to code Web Applications in pure C
You will learn to code Windows GUI Application in pure C
You will also learn concepts and implementation of Object Oriented Programming in C
You will learn Data Structures and Algorithms
You will be learning from (five) Student Projects that are included in this course (specifically coded / tailored for this course)
You will learn SOC - Separation of Concerns
You will learn Modular programming approach
You will learn real-life application development, linking external stuff, and completing your application in shorter time.
Outline overview:
Basic Programming concepts, Variables, Constants, Type-casting
Data Types, all kind of Operators (arithmetic / relational / logical etc.) , Basic input / output / Unicode Character set
Arrays, VLAs, Matrices, Structures, Unions , bit-fields
Decision Making (if-else, switch, ternary), Nested decisions / statements
Loops (for, while, do-while), Nested Loops
File IO (reading writing appending - Binary / Text data)
Functions (Basic, with/without parameters, Variadic, Pass by ref/value, Recursion), Scope of variables / constants. Advance use of "const"
Pre-processor / Macros - in depth study
Pointers in details, Pointer Arithmetic, Function Pointers
Storage Classes
Data Structure & Algorithms - Linked Lists (doubly / singly / circular), Stacks, Queues, Trees, Graphs & Hash-Tables, Sorting algorithms etc.)
Creating & Working with Shared / Static Libraries .SO / .DLL / .A / .LIB (Implicit and explicit linking of shared libraries)
Bitwise operations / Bit manipulation in detail
You will also learn about CGI & Web programming - HTTP (get / post) , SQL, HTML, etc
GUI Programming to build fully functional Windows Applications
Object Oriented Programming using C
Along with Additional topics you can find in last chapter (which will gradually be updated with new topics)
5 - Student database projects are included in this course, and are demonstrated in form of video lectures