4.2 out of 5
37 reviews on Udemy

C Programming and Software Engineering Fundamentals

Learn how to code and solve problems using the C programming language, from beginner to advanced!
Esther Peters
201 students enrolled
English [Auto-generated]
Avoid common pitfalls and mistakes other C programmers make
Learn Important software engineering principles
Master pointer and memory management in C
Build custom data structures and algorithms with C programs
You will learn how to create makefiles to run multiple C programs
Use good programming practices when programming in C
Build games and logic-based programs in C
Master all the basic programming fundamentals required in C
Effortlessly work in a unix based environment using shells
Be comfortable to start learning about operating systems and compilers
This course would also make you comfortable enough to start learning C++ programming

**C Programming Fundamentals: Learn C from using Cygwin/Terminal with Clang and Gcc Compilers for Windows, Mac OSX & Linux**

Why learn C you may ask?

For such an old language, it is still one of the most powerful tool any aspiring programmer could have in their toolbox today. It opens your eyes to many lower level processes taking place in your computer.

C is what I like to call a “wild” language, it gives 100% freedom to programmers unlike many modern programming languages. 

We can see the effect C has on many modern languages like Java, C++, Objective-C, C# by observing their syntax. It has paved the way for making a global standard amongst the future languages.

How Low can we go?

C is a much lower level language compared to  other languages like Java i.e it gives you the freedom to perform certain operations that would normally be restricted by other programming languages. After the assembly language, C follows next.

How would this course help you?

Leave the horrifying stories you’ve heard about programming in C, this course would take you from a noob to an expert C programmer providing you with the tools you’ll need to succeed in every aspect of fundamental programming.


We break the core concepts of advanced topics in C such as pointer and memory management. We’ll also look into common errors such as segmentation faults and bus errors–Ones that are very challenging and hard to find. Using this way of teaching you’ll be up and ready to become very fluent at writing code in C.

The course is fully supported by the course instructor, you can be sure to get a quick response/feedback to all your questions.

Environment Setup, History and Usage

Compiler: Windows setup

In this lecture, we would be installing the tools required to run our C programs for the windows operating system. Compilers such as the gcc and clang compilers.

Compiler: Mac OSX setup & Linux Setup

In this lecture, we talk about the compilation tools required for the mac osx operating system such as the compilers and text editors. You can choose from a wide range of text editors but sublime text is recommended.

Brief Intoduction to Unix

History of Unix

In this lecture, we would go through the history of unix and why it is important for the course.

Unix Commands

In this lecture, you would learn how to control your computer using unix commands to create, move,delete and perform other important operations needed for the course.

Compiling our first C program

In this lecture, we would talk more about compilation, what we need, how we do it and why we use these tools in general.

C Fundamentals

Algorithms, Pseudocode & logic building in C programming

In this lecture, we talk about algorithms, why we need them and how to use them. The goal is to help improve the student's logic building skills.

Using Flowcharts to represent Algorithms

In this lecture, we talk about the diagrammatic representation of algorithms using a flowchart. This helps to build the students logic building skills.

Writing our First C Program
Parts of a C Program - Header files, main entry point, C syntax
Assigning Data to Variables, Data formats in C programming

In this lecture you'll be introduced to variables and how we use them to store data for retrieval in C programming.

Arithmetic operators in C

Just like basic mathematics, you can perform arithmetic operations on data in C programming. In this lecture, you would learn about the various arithmetic operators we have in C.

printf() and puts() statement

Printf and puts can be used to print data out to the console. In this lecture, you would learn the difference between the too and why we use one more over the other

typedef and enumerated types (enums) in C programming

How do we create our own grouped data types? In this lecture, we would be learning how to use enums in C.

Boolean Expressions in C Programming

Very commonly we use boolean expressions in C and other major programming languages. In this lecture, we would be learning more about boolean types and how we use them in C programming.

Functions/Routines and Prototypes

One of the most important concepts in C programming. Functions/Routines help us to reduce code repetition. In this lecture, we talk about how to create functions and use them to return values

IF/ELSE statements, Relational and Logical Operators in C Programming

Can we write programs that can make decisions for themselves? In this lecture, we would be learning more about decision making using if and else statements in C programming.

Switch statement

In C programming, switch statements allows us to switch on conditions based on various cases. We can have multiple case statements but only one condition.

the FOR loop

How do we iterate over numbered objects or automate repeated tasks? In this lecture, we would be learning how to use for loops to loop over repeated tasks.

Using while loops
Using the WHILE loop for input validation
the DO-WHILE loop
BREAK and CONTINUE statement
Arrays in C programming

In this lecture, we would be talking about arrays, what they are and how we use them in C programming.

Multi-Dimensional Arrays

In this lecture, we would be talking about multidimensional arrays (2D, 3D) and how we use them in C programming.

Searching –Arrays, functions, control flow & decision making
Multi Dimensional Arrays
Decision Making & Control Flow

Based on what you've learnt so far


Concept of pointers

In this lecture, we discuss in detail what pointers are and how we use them in C programming.

Char array + Arrays in Relation to Pointers
Passing in functions by reference

In this lecture, we talk about passing into functions by reference in C programming.

Pointer Arithmetic

In this lecture, we discuss in detail how to manipulate pointers using pointer arithmetic in C programming.

Pointers to Pointers

In this lecture, we expand on our knowledge of pointers by introducing the concept of pointers to other pointers in C programming.

Standard Input/Output Routines

In this C Programming lecture, we would continue to expand our knowledge on some input and output routines available to us. 

Input/Output and File Processing in C Programming

File Processing: Reading data from a text file

In this C Programming lecture, we would continue to expand our knowledge on how to read data from a file. A file in this context could be a text file or any file you assign your C-program.

Tokenizing a file using delimeters in C

What is tokenization? and How do we tokenize data in C programming? Find out in this lecture as I take you through the steps of writing a C program to tokenize data in a file.

using structs

How do we store a group of related data? We use structs in C Programming! Find out how to use this in this lecture

User defined types

Passing structures to functions

C programming: In this lecture, you will learn how to pass structures into functions! Fear not, for it is very easy!...Once you learn it.

Arrays of structures

Learn how to create arrays of structures in C Programming.

using the typedef statement on structs

C Programming 101: Learn how to use typedef statements on struct to make calling and assigning them easier!

Data Structures, Memory Management and Dynamic Allocation

Dynamic Memory Allocation

Learn how to dynamically allocate memory to objects/variables etc in C programming

Pointers to Structures

Learn about pointers to structures in C programming

Contiguous memory blocks and pointer addresses

Learn about dynamically allocating contiguous blocks of memory to an object in C programming.

Building a Linked List Data Structure From Scratch

C Programming 101: In this project, we would be coding _____ from scratch. This would take you from beginner to intermediate by improving your problem solving skills.

Dynamic Memory Allocation

Modularity, Separate Compilation & File Redefination

modules-Interface & Implementation

Learn about dividing your code into separate modules using the interface and implementation design rule.

Variable Scope, Storage Classes–static variable, extern, header guards

Learn the importance of scope in C programming

Using Makefiles: Compiling multiple files

Learn how to compile multiple C Programming source files using makefiles.

Interface and Implementation

Using an integrated development environment (IDE)

Installing our Integrated development environment (IDE)

In this lecture, you learn how to install an IDE, write and compile C code in it using your existing C compiler.


Congratulations–Where to go from here?

Congratulations on completing the C programming course for absolute beginners! Your certificate should be mailed to you on 100% completion!

Coupon for data structure course

Programming Contest 1: $30 Prize

Contest 1
You can view and review the lecture materials indefinitely, like an on-demand channel.
Definitely! If you have an internet connection, courses on Udemy are available on any device at any time. If you don't have an internet connection, some instructors also let their students download course lectures. That's up to the instructor though, so make sure you get on their good side!
4.2 out of 5
37 Ratings

Detailed Rating

Stars 5
Stars 4
Stars 3
Stars 2
Stars 1
30-Day Money-Back Guarantee


8 hours on-demand video
1 article
Full lifetime access
Access on mobile and TV
Certificate of Completion