09-21-2024, 09:43 AM
Advanced C Programming Course
Last updated 8/2021
MP4 | Video: h264, 1280x720 | Audio: AAC, 44.1 KHz
Language: English | Size: 10.88 GB | Duration: 28h 3m
Become a True Master of the C Programming Language - Confidently Apply for Real Time or Embedded C Jobs or contracts!
What you'll learn
Understand and be able to apply advanced concepts of the C programming language to create advanced C applications.
Understand Function and Double Pointers, Recursion, Bit Manipulation, Macros, Signals and loads more (check curriculam on this page for full list).
Learn all about threads and networking with Sockets.
Master the art of problem solving in programming using efficient, proven methods.
Be able to apply advanced C concepts to other programming languages.
How to write high quality C code, to make yourself more marketable for higher level programming positions and be apply for real-time/embedded programming positions.
Requirements
Basic knowledge of the C programming language (ideally having completed our Beginners course on Udemy).
A computer running Microsoft Windows, Linux or the Mac operating systems.
At least 4GB of ram on your computer.
Description
What you will learn in this course?The C programming language in 2020 is still one of the most popular and widely used languages. Having C programming skills gives you great career options, but learning the C language, particularly some of the trickier advanced stuff can be really difficult.This course is designed to take your basic C skills to the next level and help you obtain mastery of the language by helping you understand advanced concepts of the C programming language, enabling you to master the art of problem-solving in programming using efficient, proven methods.You'll learn how to write high-quality C code and to make yourself more marketable for higher-level programming positions.Just some of the topics in this huge 28-hour course include Threads, Function Pointers, Double Pointers, Recursion, Networking using Sockets, Bit manipulation, Macros, Signals, Storage Classes and loads more. Check the curriculum on this page for full details of what is included in this very comprehensive course.By the end of this course, with your new-found skills, you will be able to apply for real-time/embedded C programming positions or any job that requires mastery of the C programming language and be able to apply your new skills developing your own Advanced C programs.What's different about this course?Jason Fedin is your instructor in this course and this course takes the skills you learned in that course to the next level.This course focuses on the details and a thorough understanding of all advanced C programming concepts. This is not just a how-to course, it is a "why?" course. You will learn how to implement specific advanced C concepts such as multi-threading and double pointers, in addition to learning why they are the best approach and how they make you a high-quality C programmer. Many, many examples, challenges and quizzes are provided to test your understanding of every concept that you have learned. This course is unique to other courses here at Udemy in that the details and the why are explained. We do not just go through projects and provide a how-to.Who is the course aimed at?This is not a beginner's course. It's assumed you have some knowledge of the C programming language, preferably having completed our Beginner course (here on Udemy) or similar training and/or commercial programming experience in C or a similar language.Getting startedIf you are ready to get started, click on the enroll or Add to Cart button on this page and start taking your C Language skills to the next level.
Overview
Section 1: Introduction
Lecture 1 Welcome to Class!
Lecture 2 Class Organization
Lecture 3 The C99 Standard
Lecture 4 The C11 Standard
Section 2: Installing Required Software
Lecture 5 Overview
Lecture 6 Installing the C compiler (Windows)
Lecture 7 Installing the C compiler (Mac)
Lecture 8 Installing Code Blocks (Windows)
Lecture 9 Installing CodeLite (Windows)
Lecture 10 Installing CodeLite (Mac)
Lecture 11 Installing Visual Studio Code (Windows)
Lecture 12 Installing Visual Studio Code (Linux)
Lecture 13 Installing Visual Studio Code (Mac)
Section 3: Starting to Write Code
Lecture 14 Exploring the Code Blocks Environment
Lecture 15 Creating a Project in Code Blocks
Lecture 16 Exploring the Visual Studio Code Environment
Lecture 17 Creating a Workspace and configuring the compiler in Visual Studio Code
Section 4: Working with Larger Programs
Lecture 18 Overview
Lecture 19 Compiling multiple source files from the command line
Lecture 20 Makefiles
Lecture 21 Communication between files
Lecture 22 Using Header files effectively
Lecture 23 Heap and Stack Memory Allocation
Section 5: Storage Classes
Lecture 24 Automatic Variables
Lecture 25 External
Lecture 26 Static
Lecture 27 Register
Lecture 28 (Challenge)
Section 6: Advanced Data Types
Lecture 29 The #define statement (constants)
Lecture 30 Using typedef
Lecture 31 Variable Length Arrays
Lecture 32 (Challenge) Variable Length Arrays
Lecture 33 Flexible Array Members
Lecture 34 (Challenge) Flexible Array Members
Lecture 35 Complex number types
Lecture 36 (Challenge) Complex number types
Lecture 37 Designated Initializers
Lecture 38 (Demonstration) Challenge solutions
Section 7: Type Qualifiers
Lecture 39 const
Lecture 40 volatile
Lecture 41 restrict
Section 8: Bit Manipulation
Lecture 42 Binary numbers and bits
Lecture 43 (Challenge) Binary numbers and Bits
Lecture 44 (Demonstration) Binary numbers and Bits
Lecture 45 Bitwise Operators (Logical)
Lecture 46 Bitwise Operators (Shifting)
Lecture 47 (Challenge) Bitwise Operators
Lecture 48 (Demonstration) Bitwise Operators
Lecture 49 Bitmasks
Lecture 50 Using Bit Operators to pack data
Lecture 51 (Challenge) Setting and Reading bits
Lecture 52 (Demonstration) Setting and Reading bits
Lecture 53 Using Bit Fields to pack data
Lecture 54 (Challenge) Using Bit Fields to pack data
Lecture 55 (Demonstration) Using Bit Fields to pack data
Section 9: Advanced Control Flow
Lecture 56 The goto statement
Lecture 57 (Challenge) The goto statement
Lecture 58 The null statement
Lecture 59 The comma operator
Lecture 60 setjmp and longjmp functions
Lecture 61 (Challenge) setjmp and longjmp functions
Lecture 62 (Demonstration) Advanced Control Flow
Section 10: Input and Output
Lecture 63 char functions (input)
Lecture 64 char functions (output)
Lecture 65 (Challenge) char functions
Lecture 66 (Demonstration) char functions
Lecture 67 string functions
Lecture 68 (Challenge) string functions
Lecture 69 (Demonstration) string functions
Lecture 70 Formatting functions
Lecture 71 (Challenge) Formatting functions
Lecture 72 (Demonstration) Formatting functions
Section 11: Advanced Function Concepts
Lecture 73 Variadic Functions
Lecture 74 va_copy
Lecture 75 (Challenge) Variadic Functions
Lecture 76 (Demonstration) Variadic Functions
Lecture 77 Recursion
Lecture 78 (Challenge) Recursion
Lecture 79 (Demonstration) Recursion
Lecture 80 Inline Functions
Lecture 81 _Noreturn Functions
Section 12: Unions
Lecture 82 Overview
Lecture 83 Defining a Union
Lecture 84 Accessing Union Members
Lecture 85 (Challenge) Unions
Lecture 86 (Demonstration) Unions
Section 13: The Preprocessor
Lecture 87 Overview
Lecture 88 Conditional Compilation
Lecture 89 Include guards and #undef
Lecture 90 #pragma and #error
Section 14: Macros
Lecture 91 Overview
Lecture 92 Macros vs. Functions
Lecture 93 Creating your own Macros
Lecture 94 Preprocessor Operators
Lecture 95 Predefined Macros
Lecture 96 (Challenge) Macros
Lecture 97 (Demonstration) Macros
Section 15: Advanced Debugging, Analysis, and Compiler Options
Lecture 98 GCC Compiler Options (part 1)
Lecture 99 GCC Compiler Options (part 2)
Lecture 100 Debugging with the preprocessor
Lecture 101 Debugging with gdb (part 1)
Lecture 102 Debugging with gdb (part 2)
Lecture 103 core files
Lecture 104 Profiling
Lecture 105 Static Analysis
Lecture 106 (Challenge)
Lecture 107 (Demonstration)
Section 16: Advanced Pointers
Lecture 108 Double pointers (pointer to a pointer)
Lecture 109 Double pointers (pointer to a pointer) Part 2
Lecture 110 (Challenge) Double pointers
Lecture 111 (Demonstration) Double pointers
Lecture 112 Function pointers
Lecture 113 (Challenge) Function pointers
Lecture 114 (Demonstration) Function pointers
Lecture 115 void pointers
Section 17: Static Libraries and Shared Objects
Lecture 116 Overview
Lecture 117 Creating a Static Library (archive)
Lecture 118 (Challenge) Static Library
Lecture 119 (Demonstration) Static Library
Lecture 120 Creating a Dynamic Library (Shared object)
Lecture 121 (Challenge) Dynamic Library
Lecture 122 (Demonstration) Dynamic Library
Lecture 123 Dynamically loading a shared object
Lecture 124 (Challenge) Dynamic Loading
Lecture 125 (Demonstration) Dynamic Loading
Section 18: Useful C Libraries
Lecture 126 Assert
Lecture 127 General Utilities (stdlib.h)
Lecture 128 General Utilities (stdlib.h) part 2
Lecture 129 General Utilities (stdlib.h) part 3
Lecture 130 Date and Time functions
Lecture 131 (Challenge)
Lecture 132 (Demonstration)
Section 19: Data Structures
Lecture 133 Abstract Data Types
Lecture 134 Linked Lists (Overview)
Lecture 135 Linked LIsts (Implementation)
Lecture 136 (Challenge) Linked Lists
Lecture 137 (Demonstration) Linked Lists
Lecture 138 Stacks (Overview)
Lecture 139 Stacks (Implementation)
Lecture 140 Queues (Overview)
Lecture 141 Queues (Implementation)
Lecture 142 Binary Trees (Overview)
Lecture 143 Binary Trees (Implementation)
Section 20: Interprocess Communication and Signals
Lecture 144 Interprocess Communication
Lecture 145 Signals (Overview)
Lecture 146 Raising a Signal
Lecture 147 Handling a Signal using the signal function
Lecture 148 Handling a Signal using sigaction
Lecture 149 The fork() system call
Lecture 150 (Challenge)
Lecture 151 (Demonstration)
Section 21: Threads
Lecture 152 Overview
Lecture 153 Creating a thread
Lecture 154 Passing arguments and returning values
Lecture 155 Common Thread functions
Lecture 156 Thread Synchronization Concepts
Lecture 157 Mutexes
Lecture 158 Condition Variables
Lecture 159 (Challenge)
Lecture 160 (Demonstration)
Section 22: Networking (Sockets)
Lecture 161 Overview
Lecture 162 The Socket API
Lecture 163 Creating a Server Socket
Lecture 164 Creating a Client Socket
Lecture 165 (Challenge)
Lecture 166 (Demonstration)
Section 23: Conclusion
Lecture 167 Course Summary
Section 24: Extra Information - Source code, and other stuff
Lecture 168 Source Codes
Lecture 169 Bonus Lecture and Information
This course is not aimed for beginners. If you have never used C programming before, then I would suggest you purchase our C Programming For Beginners course first, complete it then come back to take this advanced course.,On the other hand, if you already have a basic or prior experience with C programming, then this course is for you!
What you'll learn
Understand and be able to apply advanced concepts of the C programming language to create advanced C applications.
Understand Function and Double Pointers, Recursion, Bit Manipulation, Macros, Signals and loads more (check curriculam on this page for full list).
Learn all about threads and networking with Sockets.
Master the art of problem solving in programming using efficient, proven methods.
Be able to apply advanced C concepts to other programming languages.
How to write high quality C code, to make yourself more marketable for higher level programming positions and be apply for real-time/embedded programming positions.
Requirements
Basic knowledge of the C programming language (ideally having completed our Beginners course on Udemy).
A computer running Microsoft Windows, Linux or the Mac operating systems.
At least 4GB of ram on your computer.
Description
What you will learn in this course?The C programming language in 2020 is still one of the most popular and widely used languages. Having C programming skills gives you great career options, but learning the C language, particularly some of the trickier advanced stuff can be really difficult.This course is designed to take your basic C skills to the next level and help you obtain mastery of the language by helping you understand advanced concepts of the C programming language, enabling you to master the art of problem-solving in programming using efficient, proven methods.You'll learn how to write high-quality C code and to make yourself more marketable for higher-level programming positions.Just some of the topics in this huge 28-hour course include Threads, Function Pointers, Double Pointers, Recursion, Networking using Sockets, Bit manipulation, Macros, Signals, Storage Classes and loads more. Check the curriculum on this page for full details of what is included in this very comprehensive course.By the end of this course, with your new-found skills, you will be able to apply for real-time/embedded C programming positions or any job that requires mastery of the C programming language and be able to apply your new skills developing your own Advanced C programs.What's different about this course?Jason Fedin is your instructor in this course and this course takes the skills you learned in that course to the next level.This course focuses on the details and a thorough understanding of all advanced C programming concepts. This is not just a how-to course, it is a "why?" course. You will learn how to implement specific advanced C concepts such as multi-threading and double pointers, in addition to learning why they are the best approach and how they make you a high-quality C programmer. Many, many examples, challenges and quizzes are provided to test your understanding of every concept that you have learned. This course is unique to other courses here at Udemy in that the details and the why are explained. We do not just go through projects and provide a how-to.Who is the course aimed at?This is not a beginner's course. It's assumed you have some knowledge of the C programming language, preferably having completed our Beginner course (here on Udemy) or similar training and/or commercial programming experience in C or a similar language.Getting startedIf you are ready to get started, click on the enroll or Add to Cart button on this page and start taking your C Language skills to the next level.
Overview
Section 1: Introduction
Lecture 1 Welcome to Class!
Lecture 2 Class Organization
Lecture 3 The C99 Standard
Lecture 4 The C11 Standard
Section 2: Installing Required Software
Lecture 5 Overview
Lecture 6 Installing the C compiler (Windows)
Lecture 7 Installing the C compiler (Mac)
Lecture 8 Installing Code Blocks (Windows)
Lecture 9 Installing CodeLite (Windows)
Lecture 10 Installing CodeLite (Mac)
Lecture 11 Installing Visual Studio Code (Windows)
Lecture 12 Installing Visual Studio Code (Linux)
Lecture 13 Installing Visual Studio Code (Mac)
Section 3: Starting to Write Code
Lecture 14 Exploring the Code Blocks Environment
Lecture 15 Creating a Project in Code Blocks
Lecture 16 Exploring the Visual Studio Code Environment
Lecture 17 Creating a Workspace and configuring the compiler in Visual Studio Code
Section 4: Working with Larger Programs
Lecture 18 Overview
Lecture 19 Compiling multiple source files from the command line
Lecture 20 Makefiles
Lecture 21 Communication between files
Lecture 22 Using Header files effectively
Lecture 23 Heap and Stack Memory Allocation
Section 5: Storage Classes
Lecture 24 Automatic Variables
Lecture 25 External
Lecture 26 Static
Lecture 27 Register
Lecture 28 (Challenge)
Section 6: Advanced Data Types
Lecture 29 The #define statement (constants)
Lecture 30 Using typedef
Lecture 31 Variable Length Arrays
Lecture 32 (Challenge) Variable Length Arrays
Lecture 33 Flexible Array Members
Lecture 34 (Challenge) Flexible Array Members
Lecture 35 Complex number types
Lecture 36 (Challenge) Complex number types
Lecture 37 Designated Initializers
Lecture 38 (Demonstration) Challenge solutions
Section 7: Type Qualifiers
Lecture 39 const
Lecture 40 volatile
Lecture 41 restrict
Section 8: Bit Manipulation
Lecture 42 Binary numbers and bits
Lecture 43 (Challenge) Binary numbers and Bits
Lecture 44 (Demonstration) Binary numbers and Bits
Lecture 45 Bitwise Operators (Logical)
Lecture 46 Bitwise Operators (Shifting)
Lecture 47 (Challenge) Bitwise Operators
Lecture 48 (Demonstration) Bitwise Operators
Lecture 49 Bitmasks
Lecture 50 Using Bit Operators to pack data
Lecture 51 (Challenge) Setting and Reading bits
Lecture 52 (Demonstration) Setting and Reading bits
Lecture 53 Using Bit Fields to pack data
Lecture 54 (Challenge) Using Bit Fields to pack data
Lecture 55 (Demonstration) Using Bit Fields to pack data
Section 9: Advanced Control Flow
Lecture 56 The goto statement
Lecture 57 (Challenge) The goto statement
Lecture 58 The null statement
Lecture 59 The comma operator
Lecture 60 setjmp and longjmp functions
Lecture 61 (Challenge) setjmp and longjmp functions
Lecture 62 (Demonstration) Advanced Control Flow
Section 10: Input and Output
Lecture 63 char functions (input)
Lecture 64 char functions (output)
Lecture 65 (Challenge) char functions
Lecture 66 (Demonstration) char functions
Lecture 67 string functions
Lecture 68 (Challenge) string functions
Lecture 69 (Demonstration) string functions
Lecture 70 Formatting functions
Lecture 71 (Challenge) Formatting functions
Lecture 72 (Demonstration) Formatting functions
Section 11: Advanced Function Concepts
Lecture 73 Variadic Functions
Lecture 74 va_copy
Lecture 75 (Challenge) Variadic Functions
Lecture 76 (Demonstration) Variadic Functions
Lecture 77 Recursion
Lecture 78 (Challenge) Recursion
Lecture 79 (Demonstration) Recursion
Lecture 80 Inline Functions
Lecture 81 _Noreturn Functions
Section 12: Unions
Lecture 82 Overview
Lecture 83 Defining a Union
Lecture 84 Accessing Union Members
Lecture 85 (Challenge) Unions
Lecture 86 (Demonstration) Unions
Section 13: The Preprocessor
Lecture 87 Overview
Lecture 88 Conditional Compilation
Lecture 89 Include guards and #undef
Lecture 90 #pragma and #error
Section 14: Macros
Lecture 91 Overview
Lecture 92 Macros vs. Functions
Lecture 93 Creating your own Macros
Lecture 94 Preprocessor Operators
Lecture 95 Predefined Macros
Lecture 96 (Challenge) Macros
Lecture 97 (Demonstration) Macros
Section 15: Advanced Debugging, Analysis, and Compiler Options
Lecture 98 GCC Compiler Options (part 1)
Lecture 99 GCC Compiler Options (part 2)
Lecture 100 Debugging with the preprocessor
Lecture 101 Debugging with gdb (part 1)
Lecture 102 Debugging with gdb (part 2)
Lecture 103 core files
Lecture 104 Profiling
Lecture 105 Static Analysis
Lecture 106 (Challenge)
Lecture 107 (Demonstration)
Section 16: Advanced Pointers
Lecture 108 Double pointers (pointer to a pointer)
Lecture 109 Double pointers (pointer to a pointer) Part 2
Lecture 110 (Challenge) Double pointers
Lecture 111 (Demonstration) Double pointers
Lecture 112 Function pointers
Lecture 113 (Challenge) Function pointers
Lecture 114 (Demonstration) Function pointers
Lecture 115 void pointers
Section 17: Static Libraries and Shared Objects
Lecture 116 Overview
Lecture 117 Creating a Static Library (archive)
Lecture 118 (Challenge) Static Library
Lecture 119 (Demonstration) Static Library
Lecture 120 Creating a Dynamic Library (Shared object)
Lecture 121 (Challenge) Dynamic Library
Lecture 122 (Demonstration) Dynamic Library
Lecture 123 Dynamically loading a shared object
Lecture 124 (Challenge) Dynamic Loading
Lecture 125 (Demonstration) Dynamic Loading
Section 18: Useful C Libraries
Lecture 126 Assert
Lecture 127 General Utilities (stdlib.h)
Lecture 128 General Utilities (stdlib.h) part 2
Lecture 129 General Utilities (stdlib.h) part 3
Lecture 130 Date and Time functions
Lecture 131 (Challenge)
Lecture 132 (Demonstration)
Section 19: Data Structures
Lecture 133 Abstract Data Types
Lecture 134 Linked Lists (Overview)
Lecture 135 Linked LIsts (Implementation)
Lecture 136 (Challenge) Linked Lists
Lecture 137 (Demonstration) Linked Lists
Lecture 138 Stacks (Overview)
Lecture 139 Stacks (Implementation)
Lecture 140 Queues (Overview)
Lecture 141 Queues (Implementation)
Lecture 142 Binary Trees (Overview)
Lecture 143 Binary Trees (Implementation)
Section 20: Interprocess Communication and Signals
Lecture 144 Interprocess Communication
Lecture 145 Signals (Overview)
Lecture 146 Raising a Signal
Lecture 147 Handling a Signal using the signal function
Lecture 148 Handling a Signal using sigaction
Lecture 149 The fork() system call
Lecture 150 (Challenge)
Lecture 151 (Demonstration)
Section 21: Threads
Lecture 152 Overview
Lecture 153 Creating a thread
Lecture 154 Passing arguments and returning values
Lecture 155 Common Thread functions
Lecture 156 Thread Synchronization Concepts
Lecture 157 Mutexes
Lecture 158 Condition Variables
Lecture 159 (Challenge)
Lecture 160 (Demonstration)
Section 22: Networking (Sockets)
Lecture 161 Overview
Lecture 162 The Socket API
Lecture 163 Creating a Server Socket
Lecture 164 Creating a Client Socket
Lecture 165 (Challenge)
Lecture 166 (Demonstration)
Section 23: Conclusion
Lecture 167 Course Summary
Section 24: Extra Information - Source code, and other stuff
Lecture 168 Source Codes
Lecture 169 Bonus Lecture and Information
This course is not aimed for beginners. If you have never used C programming before, then I would suggest you purchase our C Programming For Beginners course first, complete it then come back to take this advanced course.,On the other hand, if you already have a basic or prior experience with C programming, then this course is for you!