C Programming DIY : Do it yourself
4.2 (28 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,532 students enrolled
Wishlisted Wishlist

Please confirm that you want to add C Programming DIY : Do it yourself to your Wishlist.

Add to Wishlist

C Programming DIY : Do it yourself

Basic and advanced concepts of C programming on Windows, Linux, or Mac OS. Project-based with pointers and linked lists.
4.2 (28 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,532 students enrolled
Created by Gayatri TR
Last updated 7/2016
Current price: $10 Original price: $105 Discount: 90% off
1 day left at this price!
30-Day Money-Back Guarantee
  • 5 hours on-demand video
  • 1 Supplemental Resource
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
What Will I Learn?
  • 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.
View Curriculum
  • 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.

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. Both the basic and advanced 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 and linked lists.
  • Familiarize the student with as many basic features of C as possible.
  • Make the student get comfortable referring to the C Programming Language book by Brian Kernighan and Dennis Ritchie.
  • Make the student feel happy, self-confident, 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.

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.
Students Who Viewed This Course Also Viewed
Curriculum For This Course
47 Lectures
Introduction: What is our goal in this project?
5 Lectures 14:18
Task-1 of the project: Generation of 10 random numbers and storing them in files
14 Lectures 01:43:35

What are include files?

Quiz: include files & getc
3 questions

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

Intro to Variable Declarations

Understand characters in C

Quiz: What are Characters?
3 questions

Variations in integer declarations.

Quiz: Integer declarations
1 question

Intro to Pointers

Simple exercises to understand pointers.

Quiz: Let's peek into Pointers
3 questions

Function Declarations

Basic questions on function declarations and calls.

Quiz: Functions in C
2 questions


Basic concepts on scoping

Quiz: Scoping
3 questions

More on scoping

More basics on scoping

Quiz: More on scoping
3 questions

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)


Arithmetic operators

Pre and Post increment operations.

Quiz: Arithmetic operators: Pre and Post increment
2 questions

Ouput statement: printf

Some exercises on printing integers

Quiz: Printing values: Format conversions
7 questions

Commenting the code

Trivia on comments

Quiz: Comments in a program
3 questions

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

Let's Code: Generate 10 random numbers

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

Quiz: for-loop, test condition, constants
3 questions

Let's Code: Character array and string copy

Basics on address arithmetic

Quiz: Arrays and address arithmetic
3 questions

Let's Code: More on strings

Some more basics related to character arrays

Quiz: More on strings
3 questions

Let's Code: File creation

Some more quizzes on character arrays

Quiz: Character arrays
3 questions

Let's Code: Writing into a file

Some file basics

Quiz: about files
4 questions
Task-2 of the project: Creation of linked list
8 Lectures 52:43
Structures and Lists

Some basics on lists and pointers.

Quiz: Lists and addresses
4 questions

Comparison of Lists and arrays

Some basics on relationships between arrays, lists, and structures

Quiz: Structures, Arrays, and Lists
3 questions

Memory allocation: malloc

More functions for mem alloc apart from malloc

Quiz: Memory allocation functions
3 questions

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

Some basics on structures

Quiz: More on structures
3 questions

Let's Code: Creation of the first list element

Some miscellaneous basics.

Quiz: Initialization of globals, sizeof etc
3 questions

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

Basics on different forms of if-else statement

Quiz: Variations of if-statement: ternary op and switch stm
3 questions

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

Some basics on do-while and while statements

Quiz: do-while and while
3 questions

Why we do not use debugger now

Using __LINE__

Quiz: Macro Substitution
1 question
Task-3 of the project: Text file reading, String processing, memory allocation
7 Lectures 47:24
Description of the problem

Basics of file read

Quiz: Reading from a file
4 questions

Array of strings & reading a line from a text file

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

Quiz: Multidimensional arrays
4 questions

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

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

Quiz: file write, termination of a program
3 questions

isspace and isalpha

Some review questions on characters and structures.

Quiz: Characters, structures: more review
3 questions

Let's Code: get first word from line

Fix a problem in the code

Quiz: Code Review: Fix a bug
1 question

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

review on scoping, function pointer, and sizeof operator

Quiz: scoping, function pointer, sizeof
3 questions

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

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

Quiz: NULL, EOF, continue, break
4 questions
Task-4 of the project: Sorting linked list in ascending order based on numbers
4 Lectures 26:09
Description of the task: Sorting the list in ascending order

Some basics on linked list

Quiz: Linked list
3 questions

Let's Code: Sorting in ascending order

More on basics of linked lists

Quiz: More on linked lists
3 questions

Let's Code: Inserting a node in the list

Some more basics on linked lists

Quiz: Some more on linked lists
3 questions

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.

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

Some basics on valid memory addresses and pointers

Quiz: memory access, pointers
4 questions
Task-5 of the project: Sorting linked list in descending order based on strings
3 Lectures 18:20
Description of the task: Sorting the list in descending order

Introduction on conditional compilation

Quiz: Conditional compilation
1 question

Let's code: Sorting in descending order

Let's code: Completion of task-5, compile and run

More on linked list basics

Quiz: More on linked list
1 question

Introducing some more new concepts

Quiz: Some more new concepts
7 questions
Command-line arguments
3 Lectures 24:34
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
Compiling the code using gcc compiler
1 Lecture 08:50
Demo of using gcc to compile the code on cygwin
Where do you want to go from here?
2 Lectures 03:38
Future additions and possibilites

About the Instructor
Gayatri TR
4.9 Average rating
38 Reviews
5,801 Students
3 Courses
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. She comes with a very strong academic and industrial background with international exposure.

She is endowed with a rare ability to make difficult problems look simple and motivate a student to learn by himself. She guides the students towards the right path by providing just the right and adequate amount of inputs. Many a time, when she explains certain complex concepts to her colleagues, she gets a response, "Oh, that was easy." 

Her style of motivation is subtle, unique, and assertive, like that of a true guru. With her guidance, one is guaranteed to experience a great sense of achievement gained through one's own efforts.