We may earn an affiliate commission when you visit our partners.
Paul Chin, PhD

If you are completely new to programming and want a simple introduction, then this course is for you. This course is partly based on the textbook C How to Program by Deitel and Deitel. C Programming is still a common requirement for Engineering and Computer Science students as it is the language of choice for low-level programming, eg, in embedded systems, OS kernel programming, device drivers and modules programming and  so on. Because C works very closely with the processor, performance-critical applications are mostly written in C and it has become the backbone of modern operating systems, compilers, interpreters, third-party libraries, and databases. In addition, C is a small language that is designed to cost minimal performance overhead which makes it ideal for embedded systems. C is the language of choice for implementing Operating Systems for Windows, Linux and OSX.

Read more

If you are completely new to programming and want a simple introduction, then this course is for you. This course is partly based on the textbook C How to Program by Deitel and Deitel. C Programming is still a common requirement for Engineering and Computer Science students as it is the language of choice for low-level programming, eg, in embedded systems, OS kernel programming, device drivers and modules programming and  so on. Because C works very closely with the processor, performance-critical applications are mostly written in C and it has become the backbone of modern operating systems, compilers, interpreters, third-party libraries, and databases. In addition, C is a small language that is designed to cost minimal performance overhead which makes it ideal for embedded systems. C is the language of choice for implementing Operating Systems for Windows, Linux and OSX.

Features of this course:

  1. Beginner friendly

  2. Exercises and solutions explained in detail

  3. Plenty of practical exercises

Who this course is for:

  1. Engineering and Computer Science students

  2. Anyone interested to learn the fundamental concepts of programming

Learning Outcomes:

By the end of this course, you will be equipped with the basic concepts of programming to further your studies in more advanced topics.

Enroll today and I will see you inside.

Enroll now

Here's a deal for you

We found an offer that may be relevant to this course.
Save money when you learn. All coupon codes, vouchers, and discounts are applied automatically unless otherwise noted.

What's inside

Learning objectives

  • Basic c syntax
  • Getting inputs
  • Arithmetic in c
  • Decision control - equality and relational operators
  • C language keywords
  • If-else statements
  • While-loops: counter controlled repetitions
  • While-loops: sentinel controlled repetitions
  • Compound assignments, increment and decrement operators
  • For-loops
  • Switch-selections
  • Logical operators
  • Functions
  • Header files
  • Passing arguments by value and by reference
  • Scope rules
  • Random number generation
  • Enum basics
  • Arrays basics
  • Strings and passing arrays to functions
  • 2d arrays
  • And more . . .
  • Show more
  • Show less

Syllabus

Introduction

Intro and welcome to the course.

(optional) Textbook used in this course

Installing the tools
Read more

Installing Dev-C++

Using multiple printf and comments

Textbook references for printf, escape sequences and comments.

Getting inputs and adding integers

Textbook discussion on getting inputs, adding integers & memory concepts

Arithmetic in C

Exercise 2.16 (Arithmetic)

Exercise 2.17 (Final Velocity)

Decision control: Equality and Relational Operators

C Keywords

Exercise 2.19 (Arithmetic, Largest Value and Smallest Value)

if-else statements

While : counter controlled iteration

While-Loops: sentinel controlled iteration

Compound assignments, increment and decrement operators

Exercise 3-32 (Square of Asterisks)

Exercise 3-33 (Hollow Square of Asterisks)

For-Loop Basics

Exercise 4-16 (Triangle-Printing Program)

Switch Selection Basics

Exercise 4-5 (Switch selection)

Logical Operator Basics

Exercise 4-27 (Pythagorean Triples)

Introduction to functions

Exercise 5-15 (Hypotenuse Calculations)

Header Files

Passing arguments by value and by reference

Scope Rules

Random number generation basics

Exercise 5-32 (Guess the number)

Enum Basics

Array Basics

Exercise 6-12 (Array Loops)

Strings and Passing Arrays to Functions

2D Arrays

Bonus Lecture

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Based partly on a textbook by Deitel and Deitel, which is a common textbook used in university-level C programming courses
Covers C, which remains a common requirement for engineering and computer science students due to its use in low-level programming
Includes exercises and solutions explained in detail, which can help beginners grasp fundamental programming concepts more easily
Uses Dev-C++, which is an older IDE that may not be as feature-rich or actively maintained as more modern alternatives
Explores topics like header files and scope rules, which are essential for understanding how to structure and organize C code in larger projects
Teaches C, which is the language of choice for implementing operating systems for Windows, Linux, and OSX, offering practical knowledge

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

Beginner-friendly introduction to c

According to learners, this course provides a positive and beginner-friendly introduction to C programming. Many appreciate the clear explanations and detailed exercises that help solidify understanding of basic concepts. While the course is effective for foundational knowledge, some learners mention that it may lack depth for more advanced topics or real-world application. Overall, it serves as a solid starting point for students and hobbyists new to programming or the C language.
The course is widely considered suitable for those new to programming.
"As a complete beginner, I found this course to be an excellent starting point."
"It is perfect for anyone who is new to coding and wants to learn C basics."
"The pacing and content are well-suited for someone with no prior programming experience."
Students praised the quantity and quality of practice problems.
"The practical exercises provided were great for hands-on practice."
"I liked the plenty of exercises; they really helped reinforce the lectures."
"Having exercises explained in detail made it much easier to learn and practice."
Many reviewers found the course explanations easy to follow.
"The explanations were very clear and easy to understand for someone new to C."
"I appreciated how clearly the concepts were explained, making complex ideas seem simple."
"Instructor explained every concept very well. It is helpful for beginners."
Some reviewers noted potential issues with the recommended tools.
"Setting up the Dev-C++ environment had a few minor issues for me."
"The recommended IDE felt a bit outdated compared to other options available now."
"I had some trouble getting the compiler set up correctly based on the instructions."
Some users felt the course didn't cover more complex topics sufficiently.
"While great for basics, it doesn't go deep into more advanced C features or best practices."
"Could use more coverage on pointers, memory management, or data structures."
"I felt it could be more comprehensive for students seeking deeper knowledge."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Introduction to C Programming with these activities:
Review Basic Programming Concepts
Reinforce fundamental programming concepts like variables, data types, and control flow to prepare for the C-specific syntax and paradigms.
Browse courses on Programming Fundamentals
Show steps
  • Review notes from any prior programming courses or tutorials.
  • Complete online quizzes or exercises on basic programming concepts.
  • Write simple programs in a language you are already familiar with.
Read 'C Programming Absolute Beginner's Guide'
Supplement the course material with a beginner-friendly guide to C programming, reinforcing key concepts and providing additional examples.
Show steps
  • Obtain a copy of 'C Programming Absolute Beginner's Guide'.
  • Read the chapters corresponding to the topics covered in the course.
  • Work through the examples and exercises provided in the book.
Implement Basic Algorithms in C
Solidify understanding of C syntax and control flow by implementing common algorithms like sorting and searching.
Show steps
  • Choose a set of basic algorithms (e.g., bubble sort, linear search).
  • Write C code to implement each algorithm from scratch.
  • Test the implementations thoroughly with various inputs.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Create a C Programming Cheat Sheet
Consolidate knowledge of C syntax and common functions by creating a personal cheat sheet for quick reference.
Show steps
  • Review the C syntax and functions covered in the course.
  • Organize the information into a concise and easy-to-read format.
  • Include examples and explanations for each syntax element or function.
Develop a Simple Calculator Program
Apply C programming skills to build a practical application that reinforces concepts like input/output, arithmetic operations, and decision control.
Show steps
  • Design the calculator's functionality and user interface.
  • Write C code to handle user input, perform calculations, and display results.
  • Test the calculator thoroughly with various inputs and edge cases.
Study 'The C Programming Language'
Deepen understanding of C programming with the classic reference guide, providing insights into the language's design and implementation.
Show steps
  • Obtain a copy of 'The C Programming Language'.
  • Read the chapters relevant to the course topics.
  • Work through the examples and exercises, paying close attention to the explanations.
Contribute to a C Project on GitHub
Gain practical experience and learn from experienced developers by contributing to an open-source C project.
Show steps
  • Find a C project on GitHub that interests you.
  • Read the project's documentation and contribution guidelines.
  • Identify a bug or feature to work on and submit a pull request.

Career center

Learners who complete Introduction to C Programming will develop knowledge and skills that may be useful to these careers:
Operating Systems Developer
Operating Systems Developers create, maintain, and improve operating systems that manage computer hardware and software resources. Since C is a primary language for operating system development, learners of this course will benefit from the course's instruction on C's core syntax, functions, and control structures. The course also explores more advanced topics, such as arrays, random numbers, and enums, which may also prove useful in understanding how to build and maintain operating systems. This course provides an excellent introduction to the kinds of low-level programming that an operating system developer is responsible for.
Embedded Systems Engineer
Embedded Systems Engineers design, develop, and test software for devices like microcontrollers and sensors. This role frequently involves low-level programming, directly interacting with hardware, which is why a course that introduces C programming is essential. The course's focus on core C concepts, such as arithmetic, control flow, functions, and arrays, helps build a foundation in embedded systems development. This course may be useful for those seeking to work in the engineering field of embedded systems.
Firmware Engineer
Firmware Engineers specialize in developing the low-level software that controls the hardware of electronic devices. This job is very similar to that of an Embedded Systems Engineer. The course's emphasis on C fundamentals, along with topics like decision control, loops, and functions, builds a strong foundation for working with the constrained environments typical of firmware development. Additionally, this course's introduction to arrays and strings may be useful in the context of firmware. The practical exercises also provide a good starting point.
Systems Programmer
Systems Programmers are responsible for developing and maintaining low-level software components like device drivers, compilers, and system utilities. This course may be particularly useful to them because C is the language of choice for systems programming. A systems programmer will benefit from learning about C language keywords, header files, arrays, and how to pass arguments. The course’s coverage of control flow and logical operators prepares a learner to deal with the complexities of system development.
Compiler Developer
Compiler Developers design, implement, and optimize compilers and other language processing tools. The work of a Compiler Developer requires a deep understanding of a machine's architecture and how it executes code, which is why this course's introduction to C fundamentals is useful. Knowledge of C is central to understanding how low-level instructions are generated. This course's basic coverage of arrays, pointers, and memory management may prove useful to a potential Compiler Developer.
Game Engine Developer
Game Engine Developers work on the core tools that game developers use. There are many parts of game engine development that require a deep understanding of low-level programming. C is often used in the development of high-performance game engines, which is why this course may be useful. This course can help you understand how the different parts of a game engine work together. The foundational C syntax, control flow, functions, and random number generation taught in this course can help a learner understand the basics of game engine architecture.
Robotics Engineer
Robotics Engineers design, build, and program robots. Often, this involves programming low-level code to control actuators and process sensor data. C is sometimes used in robotics, which is why this course can be valuable. This course's basic introduction to C programming, including core syntax, data structures, and control structures may be useful to a person seeking to become a robotics engineer. This course may help provide a suitable foundation.
Database Developer
Database Developers design, develop, and maintain databases. While database work often involves higher-level languages, knowing how to work with C can be beneficial. C plays a role in database kernel implementations and performance optimization, which is why this course may be helpful. This course covers low-level concepts, such as arrays, strings, and functions, that will help a database developer better understand how database systems work under the hood.
Tools Developer
Tools Developers create and maintain software used by other programmers. This role often requires a deep understanding of programming fundamentals. While C might not be the primary language a tools developer uses, this course's content helps build a foundation. The concepts of control flow and basic data structures will help the tools developer understand the tools they are building. This course may be helpful to a person seeking to become a tools developer.
Software Engineer
Software Engineers design, develop, and test software applications across a wide range of domains and platforms. Although many software engineers do not work directly with C, learning the fundamentals of C programming, as provided in this course, helps build a solid foundation in programming principles. The course’s focus on control flow, loops, and functions may be valuable for those who go on to work with higher-level programming languages. This course may be useful to those intending a general career in software engineering.
Application Developer
Application Developers create software applications for specific purposes and platforms. C itself can be used for this task, however a course in C programming is beneficial even if the developer later uses another language. This course may be helpful for Application Developers because it provides a strong foundation in programming principles. Control flow, functions, and data structures are the foundation for application development and are covered in this course.
Technical Consultant
Technical Consultants advise clients on technical matters, often involving software and hardware. While a Technical Consultant does not necessarily program, the foundational understanding of how systems work at a low level that this course may provide can prove valuable. The concepts of control flow, loops, functions, and memory management will allow a consultant to speak to their clients with more confidence. This course may be useful to a person seeking to become a Technical Consultant.
Quality Assurance Engineer
Quality Assurance Engineers test software and systems to ensure quality and functionality. While they are not primarily programmers, knowledge of software fundamentals is valuable for a Quality Assurance engineer because it allows them to better understand code. The fundamentals of programming that are presented in this course may prove helpful in the performance of their duties. This course may be useful to those who seek to become a Quality Assurance Engineer.
Network Engineer
Network Engineers design, implement, and manage computer networks. Sometimes, network engineers may be responsible for low-level programming to configure network devices. This course may be useful because it provides the basic programming concepts needed to work with C. Gaining insight into control structures, functions, and data structures may prove valuable to an aspiring Network Engineer.
Data Scientist
Data Scientists analyze complex data to derive insights. While C is not typically used in data science, the fundamental programming concepts introduced in this course may be helpful in understanding more advanced languages and data structures. They may be useful in low-level data processing and optimization. This course may be useful to those seeking to enter the field of Data Science.

Reading list

We've selected two books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Introduction to C Programming.
This book, often referred to as 'K&R,' is the definitive guide to the C programming language, written by its creators. While it can be challenging for absolute beginners, it provides a deep and thorough understanding of C. It is highly recommended for those who want to master C and understand its underlying principles. is commonly used as a textbook at academic institutions and by industry professionals.
Is designed for individuals with no prior programming experience, making it an excellent resource for beginners. It covers the fundamentals of C programming in a clear and accessible manner. The book provides step-by-step instructions and numerous examples to help readers grasp the core concepts. It serves as a valuable companion to the course, offering additional explanations and practice exercises.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser