Zero2Hero C Programming

Offensive Security Practitioner, Cybersecurity Expert, and Security Engineer

About this course
Learn the fundamentals of programming with the C Programming Language. Master the language behind all languages. I will teach you mastery of the fundamentals of the C Programming language. The course starts with a breakdown of all the features of C. We talk about all the primitive types, compound types, and the basic functionality of the C POSIX API. At the end of the course, we do a project where we build an employee database system, from scratch, and create a custom file format that we design to store information.
Lifetime Access
What you'll learn
Introduction
What is this course about?, Goal Setting and Motivation, Tool & Environment Setup, Project Introduction & Course Expectations
Why Learn C?
What is C? (pros and cons), C vs Other Languages, Is C Still Relevant in Today's World?
C Fundamentals
Introduction to Variables, Variable Scope Rules, Introduction to the Preprocessor, Compiling Hello World
Arrays & Strings
Arrays, Arrays Exercise, Strings, Strings Exercise
Control Flow Structures
Conditional Statements, Loops, Loops Exercise, Functions, Function Exercise
Structs & Unions
Structures, Struct Exercise, Unions, Special Struct Modifiers
Pointers & Memory Allocation
Pointers, Pointers Exercise, Dynamic Memory Allocation, Static Memory Allocation, Pointers to Pointers, Double Pointers Exercise, Testing for Memory Leaks
Introduction to glibc
What is glibc?, How to read a manpage, Checking for Errors with errno
File Input & Output
Introduction to File Descriptors, File Output, File Input, File I/O Exercise, Reading File Metadata
Data Types
Variable Types, Type Casting
Advanced C Programming
Multi Module Programming, Build Systems, Creating Libraries
Course Project
Project Design, Creating a Unix Command Line Utility with Getopt, Handling Logic Based on Flag Input, Crafting Database Headers, Adding Employees to Our Database, Listing Employees in the Database, and Beyond...
Project Grading
Project Grading (beta)