We may earn an affiliate commission when you visit our partners.
Daniel McCarthy

It's time to finally master the C programming language. Dan, your tutor, has been developing in the C programming language for over ten years and has a lot of experience to give. In this course you will learn C programming on Windows. What makes this course different from the others is that you will actually use the compiler. An IDE will just not do it for us. We will be using the compiler ourselves this will give you the experience you need to manually use the GCC compiler. Be A Pro.

Read more

It's time to finally master the C programming language. Dan, your tutor, has been developing in the C programming language for over ten years and has a lot of experience to give. In this course you will learn C programming on Windows. What makes this course different from the others is that you will actually use the compiler. An IDE will just not do it for us. We will be using the compiler ourselves this will give you the experience you need to manually use the GCC compiler. Be A Pro.

This course will teach you everything about the C programming language, you will be taken through the basics all the way to more complicated concepts such as functions, pointers and library development. Best of all this course is made to be beginner friendly.

We end this course by creating a book program that allows a user to create books, save them to disk and then read them again.

Once you have finished this course you will be experienced in the C programming language and will have no trouble moving forward with your own personal projects. This course is great for students who need that extra push

This course is beginner friendly regardless of your current skill level

Introduction Video Music by Ben Sound

Enroll now

What's inside

Learning objectives

  • How to know the c programming language very well
  • How to manually use the "gcc" c compiler
  • How to automate project building with "makefiles"

Syllabus

Introduction
Null Terminators And The Ascii Table
In this section we install everything we need and create a Hello World program
Installing The Compiler
Read more
Creating A Hello World Program
In this section you will learn the C programming language

Learn all about variables and how to use them

Functions Explained
Primitive Types
Arrays
Multi-Dimensional Arrays
Receiving input from the keyboard
Pointers And Memory Addresses
Function Pointers
Structures And Structure Pointers
Preprocessor
Headers And Object Files
If Statements
Operators
Loops
Legacy C
Nesting Statements
Global Variables And Positioning
Extern Keyword
Character Arrays Vs Character Pointers
Typedef Explained
Booleans Explained
Unions
Hex And Binary
Code Commenting
Automated Building With Makefiles
Casting
Creating Libraries
Goto Keyword
Memory Allocation And Stack Vs Heap
Memory Functions
Reading And Writing Files
Const Explained
Static Functions Explained
Bitwise Operators And Bit Shifting
Argc And Argv
Seeking In Files
Switches

This lecture discusses enumerations in the C programming language

Simple Book Program - Part 1
Simple Book Program - Part 2
Simple Book Program - Part 3
In this section you can practice the skills you have learned

Let's see how much you can remember with this quiz

Pointer Practice

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Begins with the fundamentals and progresses to more complex topics like functions, pointers, and library development, making it suitable for learners with little to no prior experience
Teaches how to manually use the GCC compiler and automate project building with Makefiles, which are valuable skills for professional C development and build automation
Includes a section dedicated to pointer practice and a quiz to test knowledge, which can help students reinforce their understanding of key concepts
Focuses on C programming on Windows, which may not be directly transferable to other operating systems like Linux or macOS without some adjustments
Covers legacy C, which may be useful for maintaining older codebases but is not necessarily relevant for modern C development
Uses the GCC compiler, which is a standard tool, but the course emphasizes manual usage, which may not align with modern IDE-driven development workflows

Save this course

Save C Programming On Windows For Beginners to your list so you can find it easily later:
Save

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 C Programming On Windows For Beginners with these activities:
Review Basic Programming Concepts
Reinforce fundamental programming concepts like variables, data types, and control flow to build a solid foundation for learning C.
Browse courses on Variables
Show steps
  • Review online tutorials or introductory programming books.
  • Complete practice exercises on basic programming concepts.
  • Write simple programs to solidify understanding.
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
  • Read the first few chapters covering basic syntax and data types.
  • Try the example programs provided in the book.
  • Refer to the book when encountering difficulties in the course.
Practice Pointer Exercises
Sharpen your understanding of pointers through targeted exercises, a crucial skill for C programming.
Show steps
  • Find online resources with pointer-related coding challenges.
  • Work through exercises involving pointer arithmetic and memory manipulation.
  • Debug programs that use pointers to identify and fix errors.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Document Code with Comments
Improve code readability and understanding by practicing effective commenting techniques.
Show steps
  • Review the course materials on code commenting.
  • Add comments to existing code snippets, explaining their functionality.
  • Write new code with detailed comments from the start.
Extend the Book Program
Enhance the book program created in the course by adding new features and functionalities, solidifying your C programming skills.
Show steps
  • Review the code for the book program created in the course.
  • Plan new features to add, such as searching or sorting books.
  • Implement the new features, testing thoroughly.
  • Document the changes made to the program.
Create a Makefile for a Project
Master the use of Makefiles to automate the build process for C projects, improving efficiency and organization.
Show steps
  • Review the course materials on Makefiles.
  • Create a Makefile for a simple C project.
  • Test the Makefile to ensure it compiles and links the project correctly.
  • Add more complex rules to the Makefile, such as cleaning the build directory.
Contribute to a C Project on GitHub
Gain real-world experience by contributing to an open-source C project, collaborating with other developers and improving your coding skills.
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.
  • Submit a pull request with your changes.

Career center

Learners who complete C Programming On Windows For Beginners will develop knowledge and skills that may be useful to these careers:
Operating Systems Developer
An Operating Systems Developer writes the core software that manages a computer's hardware and software resources. The C programming language is very common in this type of work. This course teaches hands-on compiler usage, which provides insights into how the operating system interacts with the hardware. The course's coverage of pointers and memory management are essential topics for operating systems development. This course also helps build knowledge about file management which is essential for operating systems. This is an excellent course for anyone wishing to become an operating systems developer.
Device Driver Developer
A Device Driver Developer writes the software that enables communication between the operating system and hardware devices. This role requires a deep understanding of the operating system and hardware interaction. The C programming language is often used because of its low level capabilities. This course provides a hands-on approach by using the compiler manually, which is helpful. The course also teaches pointers and memory management, which are critical for device driver development. The course offers a great starting point for anyone interested in this discipline.
Systems Programmer
A Systems Programmer develops low-level software that interacts directly with the hardware of a computer system. This includes operating systems, device drivers, and other utilities. The C programming language is frequently used, as the course also demonstrates. This course aids in developing an understanding of compiler usage, which is crucial for working with the operating system. The course's topics on pointers, memory management, and file I/O, are all essential elements for a system programmer. The skills taught in this course will help anyone wishing to enter the field.
Firmware Engineer
A Firmware Engineer develops low-level software that controls hardware devices. This role is critical in embedded systems and consumer electronics. The C programming language is often used to write firmware, as this course demonstrates. This course's focus on manual compiler usage is good for low-level control of hardware. Concepts such as pointers, memory management, and bitwise operations, all taught in the course, are also important in firmware engineering. This course is likely to be helpful for anyone interested in this field.
Robotics Software Engineer
A Robotics Software Engineer writes the software that controls robots. This role involves both high level programming as well as low-level operations. The C programming language is used often since it is fast and has low-level capabilities. The course provides a good background in how to use a compiler. It also teaches important programming topics such as pointers, memory management, and file operations. These skills are important for robotics. The skills and knowledge in the course are an excellent starting point for a career in robotics.
High-Performance Computing Engineer
A High Performance Computing Engineer works with supercomputers and other high-performance systems. This field requires very efficient code. The C programming language is very useful for this purpose. This role would benefit from the course's discussion on manual compiler usage. The course also covers memory management, pointers, and bitwise operations, which are all important for high-performance computing. This course also discusses how to compile and link code libraries, which is also helpful. This is a useful course for high performance computing engineers.
Compiler Developer
A Compiler Developer creates the software that translates programming languages into machine code. The course provides a hands-on experience with a compiler (GCC). This is relevant because a compiler developer needs to understand how compilers work at a fundamental level. The course also goes over how to use a compiler manually. Memory management, pointers, and other low-level details, all covered in this course, are especially important for compiler development. This course helps develop the basic skills needed in this field.
Security Software Engineer
A Security Software Engineer develops secure software systems. This role involves understanding how software works at a low level to identify and prevent vulnerabilities. The C programming language is useful for this kind of work as it directly accesses memory. This course provides hands-on knowledge of compiler usage, which is important for understanding how software is built. The course also covers topics such as memory management, pointers, and file operations, which are all very important in security. This course may prove beneficial to those who want to work on security.
Embedded Systems Engineer
An Embedded Systems Engineer develops software for devices that are not general-purpose computers, such as those found in some consumer products, medical devices, and automobiles. This role requires a deep understanding of how software interacts with hardware, which is an area this course may help establish. The course's focus on manual compiler usage provides insights into the low-level operations of a system. Skills in memory management, pointers, and bitwise operations, all covered in the course, are also essential for embedded systems work. The course's coverage of file I/O is especially relevant to managing firmware. The skills and ideas in this course are an excellent start for an engineer in this discipline.
Game Developer
A Game Developer creates video games. This role can be very demanding and requires efficient code, which this course may help with. The course focuses on the C programming language which is often used in game development. The course also covers pointers, memory management, and other low-level operations. These are important for writing efficient game logic. The topics of reading and writing files help manage game data, and the skill in compiler usage can help understand how things operate. This course is likely to be beneficial to a game developer.
Database System Developer
A Database System Developer creates the underlying software that manages databases. Database systems are fundamental in computing infrastructure and require very efficient solutions. This type of work requires a low-level programming language like C, which this course teaches. The course's focus on manual compiler usage provides an understanding of how software is built. The course also covers memory management, pointers, and file I/O which are important in database development. This course may help build the foundational knowledge of a database system developer.
Network Programmer
A Network Programmer develops the software that manages communication between computers on a network. This type of programming requires a knowledge of low-level computing. The C programming language is used because of the control and speed that it offers. This course's coverage of manual compiler usage gives an understanding of how programs are built and optimized. The course also covers topics such as pointers, memory management, and file operations. This course may serve as an entry point for someone looking to become a network programmer.
Software Developer
A Software Developer creates applications; while they may work at a high level, this course is still useful. The course's instruction on compiler usage can help developers better understand how a program is built. The course emphasizes fundamental programming concepts, which are needed in all software development. The course also covers important topics including functions, pointers, memory addresses, and program building. These skills are all relevant to a software developer who wishes to work closer to the hardware or understand the lower level operations, and this course is helpful to start building a foundation in these areas.
Software Architect
A Software Architect designs the overall structure of large software systems. While this role is higher level than the course, it is still useful. The course provides a detailed explanation of how a compiler works, which helps a software architect make decisions. The course also covers important programming concepts such as functions, pointers, and memory addresses. These topics can help a software architect understand how the lower levels of a software system operate. The topics covered in this course may be beneficial to a software architect.
Software Test Engineer
A Software Test Engineer is responsible for testing software products. This requires a good understanding of how software operates. The C programming language knowledge that is taught in the course can help a tester understand if there is a memory leak or other low-level issues with software. This course teaches manual compiler usage, which gives insight into how a program is built. The topics of functions, pointers, memory management, and file I/O are all useful in testing. The skills in this course may help someone become a software test engineer.

Reading list

We've selected one 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 C Programming On Windows For Beginners.
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. It provides step-by-step instructions and examples to help you grasp the core concepts. This book can be used as a reference throughout the course.

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