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.2 (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,508 students enrolled
$50
Take This Course
  • Lectures 47
  • Contents Video: 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

Discover

Find online courses made by experts from around the world.

Learn

Take your courses with you and learn anywhere, anytime.

Master

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.

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

Curriculum

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

What are include files?

03:35

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
05:39
3 questions

Simple exercises to understand pointers.

Function Declarations
09:54
2 questions

Basic questions on function declarations and calls.

Scoping
07:30
3 questions

Basic concepts on scoping

More on scoping
10:05
3 questions

More basics on scoping

02:35

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)

http://stackoverflow.com/questions/4176328/undefined-behavior-and-sequence-points

2 questions

Pre and Post increment operations.

Ouput statement: printf
01:07
7 questions

Some exercises on printing integers

Commenting the code
02:08
3 questions

Trivia on comments

08:29

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
10:29
3 questions

Basics on address arithmetic

Let's Code: More on strings
10:16
3 questions

Some more basics related to character arrays

Let's Code: File creation
10:07
3 questions

Some more quizzes on character arrays

Let's Code: Writing into a file
06:55
4 questions

Some file basics

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

Some basics on lists and pointers.

Comparison of Lists and arrays
02:46
3 questions

Some basics on relationships between arrays, lists, and structures

Memory allocation: malloc
03:16
3 questions

More functions for mem alloc apart from malloc

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

Some basics on structures

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

Some miscellaneous basics.

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

Basics on different forms of if-else statement

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

Some basics on do-while and while statements

Why we do not use debugger now
02:19
1 question

Using __LINE__

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

Basics of file read

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

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

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

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

isspace and isalpha
03:41
3 questions

Some review questions on characters and structures.

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

Fix a problem in the code

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

review on scoping, function pointer, and sizeof operator

Let's Code: Task-3 completion, compile and run
09:20
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
05:47
3 questions

Some basics on linked list

Let's Code: Sorting in ascending order
08:16
3 questions

More on basics of linked lists

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

Some more basics on linked lists

04:14

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
01:58
1 question

Introduction on conditional compilation

Let's code: Sorting in descending order
11:48
Let's code: Completion of task-5, compile and run
04:34
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
07:28
What are command-line arguments?
06:43
Let's code: Using command-line arguments in code
10:23
Section 8: Compiling the code using gcc compiler
Demo of using gcc to compile the code on cygwin
08:50
Section 9: Where do you want to go from here?
Future additions and possibilites
02:33
Conclusion
01:05

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