C Programming DIY : Do it yourself

Learn C programming on Windows, Linux, or Mac OS. Project-based, slightly rigorous, but easily doable, lots of quizzes
4.1 (26 ratings)
Instead of using a simple lifetime average, Udemy calculates a
course's star rating by considering a number of different factors
such as the number of ratings, the age of ratings, and the
likelihood of fraudulent ratings.
5,517 students enrolled
70% off
Take This Course
  • Lectures 47
  • Length 5 hours
  • Skill Level All Levels
  • Languages English
  • Includes Lifetime access
    30 day money back guarantee!
    Available on iOS and Android
    Certificate of Completion
Wishlisted Wishlist

How taking a course works


Find online courses made by experts from around the world.


Take your courses with you and learn anywhere, anytime.


Learn and practice real-world skills and achieve your goals.

About This Course

Published 11/2014 English

Course Description

This is a course that respects the smartness in you. If you don't like the course, there is always the 30-day money-back guarantee.

Close captioning in English are being added.

This course introduces several components of basic C programming that you will apply in your real-world projects. It focuses purely on traditional C language without any OS specific dependencies. So, this course can be followed by any Windows, Mac OS, or Linux user.

This course is designed to teach C programming through small classroom projects, in an informal way. All the basic topics including the difficult ones like string handling, files, structures, pointers, linked lists, and command-line arguments are covered, though you may not find them listed in an organized manner in the titles that you see down here. There are also over a 100 questions grouped into 37 quizzes to reinforce the concepts.

Noteworthy comments by learners:

I really liked the fact that this course is not as slow as most programming courses which get boring after a little while...All in all it was a fun and awesome course, I will for sure be following other courses from the same teacher --Alessandro Bassi

A good Place to learn C basics...course gives huge opportunity to know ones weakness in C programming. A consecutive lecture and quiz series gives one consolidated approach -- Akash Saxena

Course Highlights

  • Focus towards the way a C program is written in a real-world project.
  • Slightly fast paced and rigorous, yet easily doable.
  • Cover as many concepts as possible in a single yet simple program.
  • Almost each lecture is clubbed with questions to reinforce basic concepts.
  • Constant additions and updates to content

Course Objectives

  • Make the student capable of writing a new C program from scratch on his own.
  • Make the student comfortable in dealing with difficult concepts like pointers
  • Familiarize the student with as many basic features of C as possible.
  • Make the student get comfortable referring to the C Programming Language book
  • Make the student feel happy and accomplished.

This is an evolving course. Future additions to the course could be based on the what the students want to learn next, apart from more additions to the fundamental concepts.

Learning C is a life-changing experience. After you learn C thoroughly, you can never ever become a bad or mediocre programmer in your career.

What are the requirements?

  • Familiarity with some programming language is preferrable, but not mandatory
  • A copy of the book "The C Programming Language", Second Edition, by Brian W. Kernighan and Dennis Ritchie is mandatory
  • A spirit of adventure is absolutely necessary.

What am I going to get from this course?

  • Start developing a full-fledged C program for his or her specific needs within a matter of a day or two, as the course is kept short yet practical, on the lines of a corporate training program.
  • Feel confident about programming in C and become capable of understanding advanced concepts in C and programming in general.

Who is the target audience?

  • Anybody who is interested in programming should take this course.
  • If you already know C language, this is a great refresher course that you'll thoroughly enjoy
  • Any fresher who is aspiring to attend a job interview for a job involving programming in C
  • This course could also be used as part of corporate training program. The course in its current form would span just a day or two for a dedicated student to pick up the fundamentals of C.
  • This course could also be used as a starting point for those aspiring to become device driver writters, embedded systems programmers, arduino enthusiasts, coders on linux, Objective-C starters, and the like, which are highly C intensive.

What you get with this course?

Not for you? No problem.
30 day money back guarantee.

Forever yours.
Lifetime access.

Learn on the go.
Desktop, iOS and Android.

Get rewarded.
Certificate of completion.


Section 1: Introduction: What is our goal in this project?
About C Language
Concepts covered in the first project
Description of the first project
How to answer quizzes
How to learn thoroughly: Repeat the code yourself
Section 2: Task-1 of the project: Generation of 10 random numbers and storing them in files
Let's code: Generate one random number
3 questions

What are include files?


Refer to Page-36 in K&R C book. Section 2.2: Data Types and Sizes.

3 questions

Understand characters in C

1 question

Variations in integer declarations.

Intro to Pointers
3 questions

Simple exercises to understand pointers.

Function Declarations
2 questions

Basic questions on function declarations and calls.

3 questions

Basic concepts on scoping

More on scoping
3 questions

More basics on scoping


C introduced pre-increment/decrement and post-increment/decrement operators like ++a, --a, a++, a--. Though these are convenient shorthands for incrementing and decrementing the value of a variable by 1, these can be used in a wrong way in the code sometimes. For example: b = a++ + ++a; will lead to an undefined behavior.

Though the explanation for this is a little bit at an advanced level of understanding, it might be informative to make a note of it for future reference.

Here are some links that explain why it is not right to code that way:

http://qr.ae/lgIUC (Quora link)


2 questions

Pre and Post increment operations.

Ouput statement: printf
7 questions

Some exercises on printing integers

Commenting the code
3 questions

Trivia on comments


Error in the slide on "Relational and Logical Operations": Please read the "=" operator mentioned in the slide as "==".

3 questions

Some basics on for-statement, relational operators, and symbolic constants

Let's Code: Character array and string copy
3 questions

Basics on address arithmetic

Let's Code: More on strings
3 questions

Some more basics related to character arrays

Let's Code: File creation
3 questions

Some more quizzes on character arrays

Let's Code: Writing into a file
4 questions

Some file basics

Section 3: Task-2 of the project: Creation of linked list
Structures and Lists
4 questions

Some basics on lists and pointers.

Comparison of Lists and arrays
3 questions

Some basics on relationships between arrays, lists, and structures

Memory allocation: malloc
3 questions

More functions for mem alloc apart from malloc

Let's Code: Defining a structure and reading from a file
3 questions

Some basics on structures

Let's Code: Creation of the first list element
3 questions

Some miscellaneous basics.

Let's Code: Creation of the 2nd list element
3 questions

Basics on different forms of if-else statement

Let's Code: Creation of the n-th list element
3 questions

Some basics on do-while and while statements

Why we do not use debugger now
1 question

Using __LINE__

Section 4: Task-3 of the project: Text file reading, String processing, memory allocation
Description of the problem
4 questions

Basics of file read

Array of strings & reading a line from a text file
4 questions

Introducing multidimensional string arrays (Refer Page 217 K&R)

Let's Code: add a string array and read from a file
3 questions

Basics on file writing and how to quit from a program in the middle of execution.

isspace and isalpha
3 questions

Some review questions on characters and structures.

Let's Code: get first word from line
1 question

Fix a problem in the code

Let's Code: Fill in the string field in the structure element
3 questions

review on scoping, function pointer, and sizeof operator

Let's Code: Task-3 completion, compile and run
4 questions

Some basics on NULL, EOF, continue & break statements.

Section 5: Task-4 of the project: Sorting linked list in ascending order based on numbers
Description of the task: Sorting the list in ascending order
3 questions

Some basics on linked list

Let's Code: Sorting in ascending order
3 questions

More on basics of linked lists

Let's Code: Inserting a node in the list
3 questions

Some more basics on linked lists


You might encounter an error in compilation at this point, if you are compiling using gcc.

The function prototyping "insertNodeAscending(struct numAndString *newNode)" has to be done after the structure declaration. Somehow Visual Studio on Windows does not report this as a problem, that
is why I missed it while recording the lectures on Windows. Later when I tried to compile the final code using gcc, I found the problem. There is a video in "Section-8: Compiling the code using gcc compiler" that catches the problem. You may watch that video for more clarity.

4 questions

Some basics on valid memory addresses and pointers

Section 6: Task-5 of the project: Sorting linked list in descending order based on strings
Description of the task: Sorting the list in descending order
1 question

Introduction on conditional compilation

Let's code: Sorting in descending order
Let's code: Completion of task-5, compile and run
1 question

More on linked list basics

7 questions

Introducing some more new concepts

Section 7: Command-line arguments
Let's code: A quick demo of using command-line argument
What are command-line arguments?
Let's code: Using command-line arguments in code
Section 8: Compiling the code using gcc compiler
Demo of using gcc to compile the code on cygwin
Section 9: Where do you want to go from here?
Future additions and possibilites

Students Who Viewed This Course Also Viewed

  • Loading
  • Loading
  • Loading

Instructor Biography

Gayatri TR, Software Trainer and Mentor

The author, who is a coder and researcher, has several years of experience in coding in C for a wide range of projects encompassing device drivers, embedded systems, natural language and speech applications, algorithms & data structures, and much more.

Apart from these, she has deep interest in several other diverse fields like electronic circuits, compiler design, computational linguistics, machine learning, Samskrutam, music, philosophy, and the list goes on..

The author comes with a very strong academic and industrial background with international exposure. She hopes to bring a positive change in the lives of each and every one of her students by sharing her knowledge and wisdom gained through her years of experience.

Ready to start learning?
Take This Course