C Programming Language Refresher Course
3.3 (49 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
5,638 students enrolled

C Programming Language Refresher Course

Basic and advanced concepts of C programming on Windows, Linux, or Mac OS. Project-based with pointers and linked lists.
3.3 (49 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
5,638 students enrolled
Created by Gayatri TR
Last updated 7/2016
English [Auto]
Current price: $62.99 Original price: $104.99 Discount: 40% off
2 days left at this price!
30-Day Money-Back Guarantee
This course includes
  • 5 hours on-demand video
  • 1 downloadable resource
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
Training 5 or more people?

Get your team access to 4,000+ top Udemy courses anytime, anywhere.

Try Udemy for Business
What you'll 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.
Course content
Expand all 47 lectures 04:59:31
+ 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

Note: Error in slide on "Relational Operators": "=" should actually be read as "==".

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
  • 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.

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

                                  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.  There are also over a 100 questions grouped into 37 quizzes to reinforce the concepts.

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. The book is popularly known as the Bible of C.

  • 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 this course is for:
  • 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.