This hands-on self-paced C programming course provides a comprehensive introduction to the ANSI C language, emphasizing portability and structured design. Students are introduced to all major language elements including fundamental data types, flow and control. Thorough treatment is given to the topics of string and character manipulation, dynamic memory allocation, standard I/O, macro definition, and the C runtime library.

The course explains the use of aggregate structures, unions, and pointers early on so the students can practice extensively in the hands-on labs.




Learning Objectives

In this course, you will learn the following:

  • Components of a C program
  • Using the C preprocessor
  • Using standard runtime libraries
  • Using make to build programs
  • Working with debugger utilities
  • Using data types, storage classes and scope
  • Using typedef to make code more readable and portable
  • Using operators and expressions
  • Working with conditional and looping constructs
  • Initializing a pointer
  • Accessing the value addressed by a pointer
  • Declaring and initializing arrays and multidimensional arrays
  • I/O functions






Topics and Subtopics

The following topics and subtopics are covered in this course:





1- Overview of C Programming Language

  • Operating System Independence
  • Design Goals and Capabilities
  • Flavors of C

2- Compiler Directives and the C Preprocessor

  • Compile-Time Directives
  • Use of typedef
  • C Preprocessor Syntax

3- Fundamental Data Types, Storage Classes, and Scope

  • Fundamental Data Types and Qualifiers
  • Constants and Strings
  • Storage Classes
  • Scope and Block Structure
  • Scope and Data Hiding
  • Data Initialization

4- Pointers and Dynamic Allocation

  • Advantages of Pointers
  • User of Pointers
  • Pointer and Address Arithmetic
  • Dynamic Storage Allocation
  • sizeof Operator
  • Double Indirection

5- Macros

  • Functions vs. Inlining
  • Purpose of Macros
  • Use of Macros
  • Making Code More Readable
  • Auto Adjustment of Compile Time Values
  • Conditional Compilation
  • Making Code Portable
  • Simplifying Complex Access Calculations
  • Advanced Micro Design Tips
  • Using Macros to Help Write Portable Programs
  • When to Use a Macro instead of a Function
  • Using Macros for Debugging

6- Arrays

  • Purpose of Arrays
  • Declaring an Array
  • Initializing an Array
  • Addressing Elements
  • Stepping Through an Array
  • Variable Size Arrays
  • Arrays of Pointers
  • Arrays of Strings
  • Passing an Array to a Function
  • Dynamic Memory Allocation
  • Multidimensional Arrays

7- Basic Formatted I/O

  • Standard I/O Library
  • Character Set Encoding
  • Standard Input and Output
  • Character I/O Functions
  • Formatted I/O Functions
  • String Constants

8- Program Debugging

  • Problem Analysis
  • Instrumenting with printif
  • Instrumenting with ctrace
  • The Purpose of Debuggers
  • How Not to Use Debuggers
  • Symbolic Debuggers

9- Operators and Expressions

  • Arithmetic, Logical, and Bit Operators
  • Precedence and Associativity
  • Assignment and Casting
  • The Conditional Operator

10- Flow Control Constructs

  • Conditional Constructs: if, switch
  • Looping Constructs: while, do, for
  • Programming Style



Project 1- C Program to check whether the given integer is positive or negative

Project 2- C Program to find greatest of three numbers

Project 3- C Program to display Fibonacci series

Project 4- C Program to check if number is even or odd

Project 5- C Program to arrange numbers in ascending order

Project 6- C Program to convert uppercase string to lowercase string


Requirements

None.



Related Courses



Complete Training Bundle

If you are serious about becoming a pro software engineer, you should enroll in our Complete Training Bundle for Software Engineers class, This bundle covers all essential and practical topics related to software design and development. For $290 monthly subscription, you can have access to 300+ hours of hands-on project-based training covering all courses related to software development like Python, Java, Kotlin, C/C++ Go and more. Click here to learn more.




Private Tutoring Classes

To take skills you learn from this course to the next level, taking the following tutoring classes are highly recommended. It is also a great opportunity to discuss your questions and problems related to this course with an experienced instructor:



What Is Next?

After finishing this course, you can enroll in any of following classes:



Recommended Free Courses

If you are new to the IT or programming, we suggest the following free courses:


Choose a Pricing Option

junior C/C++ and Linux Developer

Tom Brownlee - Junior C/C++ and Linux Developer


Tom has been working with computers since his childhood. When he was about 12, he learned the very fundamentals of C++ during a summer camp.

Currently he is a CS major at DigiPen Institute of Technology, specializing in Linux development, network programming, and game development.

He is an adept C/C++ developer with strong background in Linux bash scripting.


He has taught C/C++ and Linux as a tutor to many students. 

Choose a Pricing Option