Learn C Programming
A free, interactive online C course. You write C on every lesson - variables, control flow, functions, pointers, memory management - with AI hints when something segfaults, and a free certificate when you finish.
121,440+ codders enrolled
- Beginner friendly
AI-assisted coding help
Hands-on interactive lessons
Audio narration on every lesson
Quizzes to test your knowledge
Free certificate of completion
Syllabus
Section 1
Fundamentals
Start sectionStartExpandCollapseBuild a strong foundation with essential concepts and basic skillsIntroduction
4 lessons326- 01C LanguageChallenge
- 02Hello World!ChallengeQuiz
- 03CommentsQuiz
- 04Basic Program StructureChallengeQuiz
Variables
11 lessons1485- 01Data TypesChallengeQuiz
- 02IntegerChallengeQuiz
- 03Float - DoubleChallengeMasteryQuiz
- 04CharactersChallengeQuiz
- 05BooleansChallengeMasteryQuiz
- 06ConstantsChallengeQuiz
- 07printf BasicsChallengeQuiz
- 08Variable Naming RulesChallengeQuiz
- 09Type Casting Part 1ChallengeMasteryQuiz
- 10Type Casting Part 2ChallengeQuiz
- 11Recap ChallengeChallenge
Operators
9 lessons1161- 01Arithmetic OperatorsChallengeQuiz
- 02Modulo OperatorChallengeMasteryQuiz
- 03Increment/DecrementChallengeQuiz
- 04Assignment OperatorsChallengeQuiz
- 05Relational OperatorsChallengeQuiz
- 06Logical Operators Part 1ChallengeQuiz
- 07Logical Operators Part 2ChallengeQuiz
- 08Logical Operators Part 3ChallengeMasteryQuiz
- 09Recap ChallengeChallenge
Control Flow
7 lessons944- 01If StatementChallengeQuiz
- 02If - ElseChallengeQuiz
- 03Else-IfChallengeMasteryQuiz
- 04Switch CaseChallengeMasteryQuiz
- 05Ternary Conditional OperatorChallengeQuiz
- 06Recap ChallengeChallenge
- 07Nested If - ElseChallengeQuiz
Input & Output
5 lessons626- 01Format SpecifiersChallengeQuiz
- 02scanf BasicsChallengeMasteryQuiz
- 03Recap Challenge #1Challenge
- 04Input ValidationChallengeQuiz
- 05Recap Challenge #2Challenge
Loops
9 lessons1053- 01For LoopChallengeMasteryQuiz
- 02While LoopChallengeQuiz
- 03Do While LoopChallengeQuiz
- 04BreakChallengeQuiz
- 05ContinueChallengeQuiz
- 06Recap Challenge #1Challenge
- 07Nested LoopsChallengeMasteryQuiz
- 08Infinite LoopsQuiz
- 09Recap Challenge #2Challenge
Functions
7 lessons1039- 01Declare a FunctionChallengeQuiz
- 02Return TypesChallengeMasteryQuiz
- 03ParametersChallengeMasteryQuiz
- 04Recap Challenge #1Challenge
- 05Recursion BasicsChallengeMasteryQuiz
- 06Function PrototypesChallengeQuiz
- 07Recap Challenge #2Challenge
Arrays
8 lessons1247- 01Declaring ArraysChallengeQuiz
- 02Accessing ElementsChallengeQuiz
- 03Modifying ElementsChallengeMasteryQuiz
- 04Multidimensional ArraysChallengeMasteryQuiz
- 05Recap Challenge #1Challenge
- 06Arrays as Function ArgumentsChallengeMasteryQuiz
- 07Array AlgorithmsChallengeMasteryQuiz
- 08Recap Challenge #2Challenge
Final Challenges
3 lessons3- 01GradesChallenge
- 02PeaksChallenge
- 03TVChallenge
Section 2
Logic & Flow
Start sectionStartExpandCollapseMaster advanced C programming with a focus on data structures and flow control. Learn to work with complex arrays, collections, error handling, and time management.Pointers Fundamentals
6 lessons540- 01What is a Pointer?Quiz
- 02Declaring PointersChallengeQuiz
- 03The Address-Of Operator (&)ChallengeQuiz
- 04The Dereference Operator (*)ChallengeQuiz
- 05NULL PointersChallengeQuiz
- 06Recap: Pointer BasicsChallenge
Pointers and Arrays
5 lessons531- 01Array Names as PointersChallengeQuiz
- 02Array Elements - PointersChallengeQuiz
- 03Pointer ArithmeticChallengeQuiz
- 04Comparing PointersChallengeQuiz
- 05Recap: Pointer Array TraversalChallenge
Character Arrays and Strings
8 lessons858- 01Strings as char ArraysChallengeQuiz
- 02The Null TerminatorChallengeQuiz
- 03String Input with scanfChallengeQuiz
- 04Using strlen()ChallengeQuiz
- 05Using strcpy()ChallengeQuiz
- 06Using strcat()ChallengeQuiz
- 07Using strcmp()ChallengeQuiz
- 08Recap: Basic String FunctionsChallenge
Project: Simple Text Utility
Project5 lessons1- 01Project OverviewChallenge
- 02Counting CharactersProject
- 03Counting VowelsProject
- 04Convert to UppercaseProject
- 05Final OutputProject
Pointers and Functions
6 lessons641- 01Pass-by-ValueChallengeQuiz
- 02Passing Pointers to FunctionsChallengeQuiz
- 03Modifying Vars via PointersChallengeQuiz
- 04A Classic Example: SwapChallengeQuiz
- 05Passing Arrays to FunctionsChallengeQuiz
- 06Recap: Function Pointer ArgsChallenge
Memory Management
7 lessons652- 01Stack vs. Heap MemoryQuiz
- 02Dynamic Allocation - malloc()ChallengeQuiz
- 03Using sizeof() for AllocationChallengeQuiz
- 04Checking Allocation FailureChallengeQuiz
- 05Freeing Memory with free()ChallengeQuiz
- 06Allocating with calloc()ChallengeQuiz
- 07Recap: Dynamic ArrayChallenge
Structures (structs)
6 lessons540- 01What is a Struct?Quiz
- 02Declaring a StructChallengeQuiz
- 03Creating Struct VariablesChallengeQuiz
- 04Accessing Struct MembersChallengeQuiz
- 05Initializing StructsChallengeQuiz
- 06Recap: Student Data StructChallenge
Structs and Pointers
6 lessons643- 01Pointers to StructsChallengeQuiz
- 02The Arrow Operator (->)ChallengeQuiz
- 03Passing Structs by ValueChallengeQuiz
- 04Passing Struct PointersChallengeQuiz
- 05Dynamic Allocation of StructsChallengeQuiz
- 06Recap: Modifying Struct - PtrChallenge
Project: Simple Contact Entry
Project5 lessons1- 01Project: Define Contact StructChallenge
- 02Function to Create a ContactProject
- 03Function to Populate a ContactProject
- 04Function to Display a ContactProject
- 05Putting It All TogetherProject
Enums and Typedef
6 lessons640- 01enum for Named ConstantsChallengeQuiz
- 02Declaring and Using EnumsChallengeQuiz
- 03Enums in Switch StatementsChallengeQuiz
- 04Using typedef for Type AliasesChallengeQuiz
- 05typedef with StructsChallengeQuiz
- 06Recap: Typedef & Enum PracticeChallenge
Final Recap Challenges
3 lessons3- 01Recap: Dynamic String ConcatChallenge
- 02Recap: Array of StructsChallenge
- 03Recap: Word Frequency CounterChallenge
Section 3
Object Oriented Programming
Start sectionStartExpandCollapseDiscover how to organize code with classes, objects, and reusable structuresModular Programming Basics
5 lessons433- 01Header FilesQuiz
- 02Include GuardsChallengeQuiz
- 03Source FilesChallengeQuiz
- 04Static FunctionsChallengeQuiz
- 05Recap: Modular CalculatorChallenge
Objects and Methods
6 lessons642- 01Structs as ObjectsChallengeQuiz
- 02The 'Self' PointerChallengeQuiz
- 03Const CorrectnessChallengeQuiz
- 04Pointer vs ValueChallengeQuiz
- 05Helper MethodsChallengeQuiz
- 06Recap: Point ManagerChallenge
Object Lifecycle
5 lessons533- 01Constructor PatternChallengeQuiz
- 02Destructor PatternChallengeQuiz
- 03Stack InitializationChallengeQuiz
- 04Deep CopyChallengeQuiz
- 05Recap: String WrapperChallenge
Encapsulation
5 lessons435- 01Opaque Pointers ConceptQuiz
- 02Defining Opaque StructsChallengeQuiz
- 03Getters and SettersChallengeQuiz
- 04Validation in SettersChallengeQuiz
- 05Recap: Secret BoxChallenge
Project: Simple Bank Account
Project6 lessons1- 01Project SetupChallenge
- 02Implementation of AccountProject
- 03Deposit LogicProject
- 04Withdraw LogicProject
- 05Get BalanceProject
- 06Project Finale: Main LoopProject
Inheritance via Composition
5 lessons531- 01Struct EmbeddingChallengeQuiz
- 02The First Member RuleChallengeQuiz
- 03Accessing Parent MembersChallengeQuiz
- 04UpcastingChallengeQuiz
- 05Recap: Shape HierarchyChallenge
Function Pointers
5 lessons534- 01Declaring Function PointersChallengeQuiz
- 02Calling Function PointersChallengeQuiz
- 03Typedef for Function PointersChallengeQuiz
- 04Passing Functions as ArgumentsChallengeQuiz
- 05Recap: Calculator DispatchChallenge
Polymorphism
6 lessons641- 01Function Pointers in StructsChallengeQuiz
- 02Simulating MethodsChallengeQuiz
- 03The Interface ConceptChallengeQuiz
- 04Implementing InterfacesChallengeQuiz
- 05Polymorphic IterationChallengeQuiz
- 06Recap: GreeterChallenge
Project: Shape Drawer
Project5 lessons1- 01Project OverviewChallenge
- 02Circle ImplementationProject
- 03Rectangle ImplementationProject
- 04Polymorphic UsageProject
- 05Shape ContainerProject
Generic Containers
5 lessons534- 01Void Pointers RecapChallengeQuiz
- 02Generic WrapperChallengeQuiz
- 03Generic SwapChallengeQuiz
- 04Generic CompareChallengeQuiz
- 05Recap: Generic ArrayChallenge
Design Patterns in C
4 lessons425- 01Singleton PatternChallengeQuiz
- 02Factory PatternChallengeQuiz
- 03Iterator PatternChallengeQuiz
- 04Recap: Logger FactoryChallenge
Final Challenges
4 lessons48- 01RPG CharacterChallenge
- 02Dynamic String BuilderChallenge
- 03Generic StackChallenge
- 04Event SystemChallengeQuiz
C courses
Hands-on C courses, free to start in your browser.
Beginner Challenges - Practice Basic Concepts
PopularPut your beginner coding knowledge to test and try to solve this programming challenges, use any language you want, Happy Coding!
Certificate on completion
- 20
- 20
Coding Problems
PopularPut your programming problem solving skills to the test using the exercises with different difficulties in this course. Designed for coders with some prior knowledge of the basic syntax in any programming language.
Certificate on completion
- 32
- 31
Coding Problems: Volume 2
Put your programming problem solving skills to the test using the exercises with different difficulties in this course. Designed for coders with some prior knowledge of the basic syntax in any programming language. This course is an extension of the first Coding Problems
Certificate on completion
- 25
- 24
Stack - Data Structures Series #1
In this course, you will learn about the Stack data structure, create a Stack from zero using your preferred language, and practice coding challenges with it!
- 13
- 6
- 1
Recursion Challenges - Master The Recursive Thinking
Recursion is an important concept in computer science and a very powerful tool in writing algorithms. In this course, you will use recursion to solve challenges from beginner to advanced. In the end, you will ace this topic.
Certificate on completion
- 15
- 15
Star Pattern Bootcamp
Put your programming problem solving skills to learn how to print star patterns range from simple to complex, involving different levels of nested loops, conditional statements, and mathematical calculations.
- 30
- 28
Why learn C with Coddy
- Write and run real C code in your browser. No GCC install, no Makefile, no toolchain setup. Each exercise compiles your C program server-side and shows the output instantly.
- C the way it's actually used: pointers and references, arrays, strings, structs, dynamic memory with
mallocandfree, file I/O. The C foundations every systems programmer needs. - AI hints help you read and fix C compiler errors and segfaults so the language feels approachable instead of cryptic from day one.
- Free C programming certificate when you finish the course. A credible signal for systems, embedded, OS, and game-engine roles where C fluency is expected.