We may earn an affiliate commission when you visit our partners.
Ali Badran

So want to get into programming and learn Excellent Choice .

Learning C makes you a better programmer in other languages like C++, Java, or C#. Also, you get to know how things really work "under the hood" and you will find it really easy to learn any other programming language when you learn C.

Why Choose This Course ?

I made sure this course is unique. It is easy and simple, efficient, doesn't waste your time, and most importantly makes you a

Read more

So want to get into programming and learn Excellent Choice .

Learning C makes you a better programmer in other languages like C++, Java, or C#. Also, you get to know how things really work "under the hood" and you will find it really easy to learn any other programming language when you learn C.

Why Choose This Course ?

I made sure this course is unique. It is easy and simple, efficient, doesn't waste your time, and most importantly makes you a

I put together all that I have learned -Online and in University- in ONE course. Here, you will get what you need to be a programmer. No useless stuff, you will save your time with straight-to-point videos.

What Will You Get ?

- Develop your programming skills: From "Nothing " to "Pro"

- In-depth knowledge and practice - 6+ Hours Course with 11+ Hours of Exercises

- Flexible learning - At Your Own Pace, On Any Device

- Zero-fluff - Straight to the point, no time wasted

- Clear delivery - I explain every single thing clearly, step-by-step

REMEMBER: you have a "30-Days" money back guarantee, so don't worry if you have any doubts...

So what are you waiting for?

Enroll now

What's inside

Learning objectives

  • "master" the c programming language
  • Deeply understand the fundamentals of programming
  • Think like a programmer: from zero to hero
  • Work with pointers like a pro !
  • Understand how computer memory works
  • Manage memory manually: dynamic allocation
  • Solve many "beginner to advanced" programming problems
  • Be able to solve really complex programs
  • How to build a clean, professional program
  • Organize your project: headers and sources
  • How to divide your program into small pieces: functions
  • Write clean code: best practices, writing conventions, ...
  • Get the knowledge you need to learn any other programming language "very" easily
  • Show more
  • Show less

Syllabus

You Will Acquire The Needed Knowledge to Start Diving in C Programming
Installing Code::Blocks IDE
Basic Program Structure, Comments
The Build Process
Read more
Variables and Data Types
Constants and Addresses
Input and Output (scanf(), printf())
Arrays
Strings (char arrays)
Operators
Control Flow (Decisions)
Control Flow (Loops)
Functions, Scope
Solve Basic Programs, Think Like a Programmer, Confidently Use all What We have Learned so Far
Power n^n
Sum of Input
Divisors of a Number
Perfect Number
Expression
Sum of Even and Odd Numbers
Project: Menu Program - Part 02
Prime Number
min and max
GCD and LCM
Fibonacci sequence
Lucky Number
1D Array: Sum and Product
1D Array: Element Occurrence
1D Array: Occurrence Of Min and Max
1D Array: Multiples of 7
1D Array: Fill <= 150
2D Array: print [row-row, column-column]
2D Array: Rain Fall
Carpet Cleaning Service
Cents Conversion
Project: Tic-Tac-Toe (XO) Game - Part 01
Project: Tic-Tac-Toe (XO) Game - Part 02
Project: Tic-Tac-Toe (XO) Game - Part 03
Header Files
Project: Menu Program - Part 01
Project: Menu Program - Part 03
Project: Menu Program - Part 04
Strings: Read a string
Strings: Copy String to String
Strings: Reverse String
Strings: Our Own Strlen()
Strings: Our Own strcpy()
Strings: Our Own strcat()
Strings: Our Own strcmp()
Strings: Squeeze Spaces
Strings: Reversed and Squeezed
Strings: Starts With
Strings: String Occ in String - Method 01
Strings: String Occ in String - Method 02
Strings: Index Of Each String Occ
Strings: indexOf()
Strings: lastIndexOf()
Strings: Palindrome String - Method 01
Strings: Palindrome String - Method 02
Strings: Char Occ and Index
1D Array Order Odd then Even
Use Your Own Data Type, Enjoy The Power Of Pointers !
Structures Part - 01 - Our Own Data Type !
Structures Part - 02 - sizeof(), typedef
Structures Part - 03 - Initializing person Variables
Structures Part - 04 - Addresses
Structures Part - 05 - person Array
Structures Part - 06 - Define person Globally
Structures Part - 07 - Nested Structures
Pointers Part - 01 - Intro
Pointers Part - 02 - Working with Pointers
Pointers Part - 03 - Use The Correct Type
Pointers Part - 04 - Arrays, Pointer Arithmetic
Pointers Part - 05 - Pointer Arithmetic Continued
Pointers Part - 06 - Pointer Comparison
Pointers Part - 07 - Bad Pointer, void Pointer
Pointers Part - 08 - Something Interesting
Pointers Part - 09 - Small Exercise (Must Watch)
Pointers Part - 10 - const With Pointers
Pointers Part - 11 - Pointer to a Pointer
Pointers Part - 12 - swap(pointer, pointer)
Pointers Part - 13 - Pointers and Arrays [AFTER THE EXERCISES]
Pointers Part - 14 - Pointers and Strings
Pointers Part - 15 - More String Functions (string.h)
Pointers Part - 16 - Pointers and 2D Arrays (pointer to pointer)
Pointers Part - 17 - Array of Strings (2D Array)
Pointers Part - 18 - Array of Strings (Array of Pointers)
Solve Complex Structure/Pointer Related Exercises
Struct and Pointer: student, fillStudent()
Pointer: What is The Output
Pointer: value and content
Pointer: swap pointer values
Pointer: swap(int, int)
Struct: point
Struct: rectangle
Struct and Pointer: fillPoints(), fillPoint()

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Provides a comprehensive introduction to C programming, starting with basic concepts and progressing to more advanced topics like pointers and memory management, which is suitable for beginners
Explores how computer memory works and teaches manual memory management, which is essential for understanding how software interacts with hardware at a fundamental level
Focuses on C, which provides a solid foundation for learning other programming languages like C++, Java, and C#, due to its emphasis on low-level details and memory management
Includes numerous programming problems, ranging from beginner to advanced, that help learners develop their problem-solving abilities and think like a programmer
Covers best practices and writing conventions for writing clean and professional code, which is crucial for maintainability and collaboration in software development projects
Uses Code::Blocks IDE, which may not be the Integrated Development Environment that is most widely used in industry or academia

Save this course

Save C Programming: Become A Pro! Think Like a Programmer! to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in C Programming: Become A Pro! Think Like a Programmer! with these activities:
Review Basic Programming Concepts
Reinforce fundamental programming concepts like variables, data types, and control flow to build a solid foundation for learning C.
Browse courses on Programming Fundamentals
Show steps
  • Review notes from previous programming courses or tutorials.
  • Complete online quizzes or exercises on basic programming concepts.
  • Write simple programs using basic programming constructs.
Read 'C Programming Absolute Beginner's Guide'
Gain a comprehensive understanding of C programming fundamentals through a beginner-friendly guide.
Show steps
  • Read the first few chapters covering basic syntax and data types.
  • Try the example programs provided in the book.
  • Take notes on key concepts and syntax rules.
Practice Pointer Exercises
Sharpen your understanding of pointers through targeted exercises, a crucial skill for mastering C programming.
Show steps
  • Work through online pointer exercises on platforms like HackerRank or LeetCode.
  • Write small programs that use pointers to manipulate data.
  • Debug pointer-related errors in existing code snippets.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Develop a Simple Calculator Program
Apply your C programming knowledge by building a practical calculator program that reinforces concepts like input/output, operators, and control flow.
Show steps
  • Design the calculator's user interface and functionality.
  • Write C code to handle user input, perform calculations, and display results.
  • Test the calculator thoroughly with various inputs and edge cases.
Create a C Programming Cheat Sheet
Consolidate your understanding of C syntax and concepts by creating a concise cheat sheet for quick reference.
Show steps
  • Identify the most important C syntax rules and concepts.
  • Organize the information into a clear and easy-to-read format.
  • Include examples and explanations for each concept.
Contribute to a C Project on GitHub
Gain practical experience and collaborate with other developers by contributing to an open-source C project.
Show steps
  • Find a C project on GitHub that interests you and aligns with your skill level.
  • Read the project's documentation and contribution guidelines.
  • Identify a bug or feature to work on and submit a pull request.
Read 'The C Programming Language'
Deepen your understanding of C with the classic reference guide written by the language's creators.
Show steps
  • Read the chapters on advanced topics like pointers, structures, and file I/O.
  • Work through the exercises at the end of each chapter.
  • Compare your solutions with those available online.

Career center

Learners who complete C Programming: Become A Pro! Think Like a Programmer! will develop knowledge and skills that may be useful to these careers:
Embedded Systems Engineer
An embedded systems engineer develops software for devices like microcontrollers, often working close to the hardware. This course, focusing on the C programming language, equips aspiring embedded systems engineers with the foundational skills necessary for programming hardware. The course's deep dive into memory management and pointers is particularly relevant, as embedded systems often require manual memory allocation and direct hardware interaction. A prospective embedded systems engineer should take this course as it provides an understanding of how systems work and manipulate data at a very low level.
Systems Programmer
A systems programmer works on the core components of an operating system or other low level software. This course offers a deep understanding of C, a language frequently used in systems programming. The ability to manage memory and work with pointers, both of which are covered extensively in this course, are critical to building robust and efficient systems software. This course may be useful to anyone looking to become a systems programmer, and its practical approach with many exercises helps build the necessary skills.
Software Developer
Software developers apply principles of computer science and mathematical analysis to design, develop, and test software. Core to a software developer's abilities is an understanding of programming fundamentals, which this course provides. This course’s emphasis on algorithms, data structures, and problem-solving will translate directly to many coding applications in a software developer's work. Anyone looking for a software development career may find that this course provides a solid base for that transition. With its focus on practical programming in C, this material provides a robust base for other programming languages.
Game Programmer
Game programmers create the code that makes video games function, and often work with game engines, graphics APIs, and other specialized tools. This course helps build a strong foundation in C, which is frequently used in game development to optimize performance and manage resources. This course's focus on pointers, memory management, and the structure of programs is particularly useful to game programmers involved in low-level systems. Prospective game programmers should take this course as it addresses core concepts directly relevant to their field.
Firmware Engineer
Firmware engineers develop the low-level software that controls hardware devices and embedded systems. The course's focus on the C language is directly applicable, as this is the language of choice for firmware programming. The course's detailed work with pointers, memory management via dynamic allocation, and hardware interaction will help anyone looking to become a firmware engineer. This course may be useful in developing those skills with its hands-on approach and exercises.
Operating Systems Developer
An operating systems developer works on the fundamental software that manages a computer's hardware and resources. The C programming language, a focus of this course, is widely used in operating systems development. This course’s coverage of memory management, pointers, and low-level programming constructs are directly relevant to the work of an operating systems developer. The course's exercises and projects provide useful practical experience to build a foundation in systems programming, making this course especially helpful to developers aspiring to work in the field.
Robotics Engineer
A robotics engineer designs and builds robots, requiring skills in both mechanical and software engineering. This course may be useful to those focusing on the software aspect of robotics as it provides a foundation in C, a common language for controlling robots and other embedded systems. The knowledge gained about pointers, memory allocation, and programming fundamentals, all covered in this course, are vital for writing efficient and reliable robot control code. Anyone wanting to control robots should take this course to build a solid base of knowledge.
Software Architect
A software architect designs the high-level structure of a software system. While often working with languages other than C, this course’s focus on fundamental programming concepts would help in understanding the impact of code at a systems-level. This course may be useful in building a foundational understanding of how software interacts with hardware. This perspective will be helpful when designing software architectures. The understanding of memory management gained in this course helps in designing efficient and performant software systems.
Compiler Developer
Compiler developers create the tools that translate human-readable code into machine code. A deep understanding of low-level programming and memory management, such as the topics covered in this course, is useful to understanding the underlying hardware. This course may be useful to aspiring compiler developers as it provides a strong foundation in C, a language often involved in this field. The practice with pointers and memory manipulation covered in the course would be invaluable to anyone working on this type of software.
Database Developer
Database developers design, implement, and maintain the systems that store and manage data. While database development often involves higher-level languages, this course’s focus on memory management, pointers, and low-level operations provides valuable insight into the workings of a computer, helping produce performant software solutions. This course may be helpful when an aspiring database developer needs to understand the relationship between software and hardware. Anyone wishing to go into this field may find that this course provides a foundation to build from.
High-Performance Computing Engineer
High performance computing engineers write software to run on large-scale computing systems. This course's in-depth treatment of C, along with its focus on memory management and pointers, is quite aligned with the needs of this role. Given the performance limitations of these high performance systems, this course may be useful to writing efficient programs. High performance computing engineers must optimize to get the best throughput from software. This course's deep dive into low level computer engineering makes it very helpful to this approach.
Technical Consultant
A technical consultant advises clients on the best use of technology, and often uses a wide range of technologies to do so. While this course focuses on C, the core programming concepts and problem-solving skills it teaches will transfer to other languages. This course may be helpful as it establishes a foundation in structured programming. By learning these fundamental principles, a technical consultant is better prepared to understand a variety of software solutions. This course's emphasis on a systematic approach to programming will be useful to this role.
Quality Assurance Engineer
Quality assurance engineers are responsible for testing software to make sure that it is free of errors. This course may be helpful to some quality assurance engineers who want to understand the programming fundamentals of software they may test. The course's emphasis on building and debugging programs may prove useful to a quality assurance engineer who has to understand how to effectively test software. This course provides exposure to building functional programs, which is helpful to test the same.
Data Scientist
Data scientists analyze large datasets to find insights and create models. While this course may not directly teach data science techniques, it helps build a foundation in software development. A data scientist who wants to build software might consider this course as it may be helpful to build up their programming knowledge. The skills gained in memory management and solving programming problems will be relevant to any software development task.
Web Developer
A web developer creates websites and web applications. While web development commonly involves other languages, understanding basic programming principles can still be useful. This course may be helpful to a web developer. It can provide a better understanding of how software executes at a systems level and how to approach complex problems. The problem-solving skills gained from this course could be useful to anyone writing any sort of software.

Reading list

We've selected two books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in C Programming: Become A Pro! Think Like a Programmer!.
This book, often referred to as 'K&R,' is the definitive guide to the C programming language, written by its creators. It provides a comprehensive and authoritative explanation of C syntax, semantics, and usage. While it can be challenging for absolute beginners, it is an invaluable resource for anyone serious about mastering C. It is commonly used as a textbook in university courses and by industry professionals.
Is designed for individuals with no prior programming experience, making it an excellent resource for beginners. It covers the fundamentals of C programming in a clear and accessible manner. It is particularly useful for understanding basic syntax, data types, and control structures. While not as in-depth as some advanced texts, it provides a solid foundation for the course.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser