In this complete C programming course, Dr. Charles Severance (aka Dr. Chuck) will help you understand computer architecture and low-level programming with the help of the classic C Programming language book written by Brian Kernighan and Dennis Ritchie. Toward the end Dr. Chuck interviews Guido van Rossum, the creator of Python.
🔗 Course resources:
(Unlock Code Hint: View the developer console on the website.)
📖 Online C Programming book by Brian Kernighan and Dennis Ritchie:
✏️ Dr. Charles Severance developed this course. He is a professor at the University of Michigan.
⭐️ Course Contents ⭐️
⌨️ (00:00:00) K&R 0: Historical Context
⌨️ (01:04:48) From Python to C
⌨️ (01:46:19) K&R 1: A Tutorial Introduction
⌨️ (03:39:39) K&R 2: Types, Operators, and Expressions
⌨️ (05:04:13) K&R 3: Control Flow
⌨️ (06:04:05) K&R 4: Functions and Program Structure
⌨️ (08:06:01) K&R 5: Pointers and Arrays
⌨️ (09:58:08) K&R 6: Structures
⌨️ (11:56:25) Object Oriented Programming
⌨️ (13:26:33) Encapsulation and Abstraction
⌨️ (14:37:26) Tree Maps and Hash Maps
⌨️ (15:48:06) Epilogue
🎉 Thanks to our Champion and Sponsor supporters:
👾 davthecoder
👾 jedi-or-sith
👾 南宮千影
👾 Agustín Kussrow
👾 Nattira Maneerat
👾 Heather Wcislo
👾 Serhiy Kalinets
👾 Justin Hual
👾 Otis Morgan
👾 Oscar Rahnama
—
Learn to code for free and get a developer job:
Read hundreds of articles on programming:
❤️ Support for this channel comes from our friends at Scrimba – the coding platform that’s reinvented interactive learning:
source

Can we stick to programming
I dare someone absorb this course those big time courses of 20 hours 100 hours are made just to teach themselves
Thank you
Used that book to write a C compiler in PASCAL for the CDC 6500 running NOS 1.4, sold a few copies. 60 bit words, non acsii character set. Added an 8086 pass2, that generated code for the segmented memory space, Normalizing pointers so they can be compared etc.
تحية طيبة الصراحة شروحات هذا الانسان قيمة ومفيدة في كافة الفديوهات ولكن للاسف ليس هناك ترجمة الى العربية نتمنى انً تمون هذه الملاحظة جديرة بالاهتمام❤❤🎉🎉🎉
I am trying to learn C from scratch. Is this course still ok to use or should I learn C++ or C# or JAVA or RUST ??. I am working as a react dev for a while. I wanna learn things like this now. Suggestions PLEASE M LOST !!!!!!!
01:04:22
42
All the apps were written in c.. everything in os was written in c but… not everything, assembly.
C is the revolution as important as internet
After an hour the guy says you've should have solid background in Python in order to start.
yapper
He is not teaching modern C? he said its from the first edition if you want to learn modern C ,prefer the second edition
Master Piece ❤
this feels more like a theoretical tutorial. you can't properly learn to code without practicing.
please can i start C programming as my first programming language ?
o7
Left at 2:12:30 on 03/01/2026.
46:54 – Skip History
If I don't look up solutions when iam stuck for a while how do I learn?
Complete and detailed timestamp breakdown for the video
Here is the complete and detailed timestamp breakdown for the video .
Course Introduction & History
* 00:00:00 – Introduction
* 00:02:58 – Course Welcome
* 00:05:44 – History of the C Language
* 00:15:03 – History of Computers
* 00:21:01 – History of Unix
* 00:30:02 – Diversity in Computer Science
* 00:46:45 – Chapter 0: Introduction (Reading from K&R)
Chapter 1: A Tutorial Introduction
* 01:04:47 – Python to C: A Rosetta Stone (Context)
* 01:46:18 – Chapter 1 Introduction
* 02:00:30 – 1.1 Getting Started
* 02:09:45 – 1.2 Variables and Arithmetic Expressions
* 02:25:11 – 1.3 The For Statement
* 02:29:26 – 1.4 Symbolic Constants
* 02:32:09 – 1.5 A Collection of Useful Programs
* 02:55:54 – 1.6 Arrays
* 03:06:33 – 1.7 Functions
* 03:12:11 – 1.8 Arguments – Call by Value
* 03:18:03 – 1.9 Character Arrays
* 03:28:13 – 1.10 External Variables and Scope
Chapter 2: Types, Operators, and Expressions
* 03:39:38 – Chapter 2: Introduction
* 04:01:34 – 2.1 Variable Names
* 04:03:01 – 2.2 Data Types and Sizes
* 04:08:31 – 2.3 Constants
* 04:14:33 – 2.4 Declarations
* 04:16:36 – 2.5 Arithmetic Operators
* 04:19:55 – 2.6 Relational and Logical Operators
* 04:27:25 – 2.7 Type Conversions
* 04:38:13 – 2.8 Increment and Decrement Operators
* 04:43:46 – 2.9 Bitwise Logical Operators
* 04:49:12 – 2.10 Assignment Operators and Expressions
* 04:52:48 – 2.11 Conditional Expressions
* 04:55:54 – 2.12 Precedence and Order of Evaluation
Chapter 3: Control Flow
* 05:04:13 – Chapter 3: Introduction (Context)
* 05:16:07 – Chapter 3: Reading from K&R
* 05:16:52 – 3.1 Statements and Blocks
* 05:19:48 – 3.2 If-Else
* 05:23:11 – 3.3 Else-If
* 05:28:20 – 3.4 Switch
* 05:34:47 – 3.5 Loops – While and For
* 05:44:54 – 3.6 Loops – Do-While
* 05:48:52 – 3.7 Break
* 05:52:25 – 3.8 Continue
* 05:58:24 – 3.9 Goto and Labels
Chapter 4: Functions and Program Structure
* 06:04:04 – Chapter 4: Introduction (Context)
* 06:34:24 – Chapter 4: Reading from K&R
* 06:35:48 – 4.1 Basics of Functions
* 06:46:00 – 4.2 Functions Returning Non-Integers
* 06:54:35 – 4.3 External Variables
* 07:00:10 – 4.4 Scope Rules
* 07:15:03 – 4.5 Header Files
* 07:27:22 – 4.6 Static Variables
* 07:30:36 – 4.7 Register Variables
* 07:35:54 – 4.8 Block Structure
* 07:37:48 – 4.9 Initialization
* 07:44:45 – 4.10 Recursion
* 07:50:27 – 4.11 The C Preprocessor
Chapter 5: Pointers and Arrays
* 08:06:01 – Chapter 5: Introduction (Context)
* 08:27:36 – Chapter 5: Reading from K&R
* 08:29:31 – 5.1 Pointers and Addresses
* 08:34:47 – 5.2 Pointers and Function Arguments
* 08:41:43 – 5.3 Pointers and Arrays
* 08:50:05 – 5.4 Address Arithmetic
* 09:00:24 – 5.5 Character Pointers and Functions
* 09:08:42 – 5.6 Pointers are not Integers
* 09:11:29 – 5.7 Multi-dimensional Arrays
* 09:18:54 – 5.8 Initialization of Pointer Arrays
* 09:34:43 – 5.9 Pointers vs. Multi-dimensional Arrays
* 09:36:34 – 5.10 Command-line Arguments
* 09:47:02 – 5.11 Pointers to Functions
* 09:56:52 – 5.12 Complicated Declarations
Chapter 6: Structures
* 09:58:08 – Chapter 6: Introduction (Context)
* 10:29:46 – Chapter 6: Reading from K&R
* 10:32:11 – 6.1 Basics of Structures
* 10:36:30 – 6.2 Structures and Functions
* 10:45:36 – 6.3 Arrays of Structures
* 10:58:09 – 6.4 Pointers to Structures
* 11:06:06 – 6.5 Self-referential Structures
* 11:27:41 – 6.6 Table Lookup
* 11:40:11 – 6.7 Typedef
* 11:46:02 – 6.8 Unions
* 11:50:53 – 6.9 Bit-fields
Object-Oriented Programming (OOP) in C
* 11:56:26 – OOP Patterns: A Historical Perspective
* 12:08:15 – Interview with Bjarne Stroustrup (Creator of C++)
* 12:28:58 – Object-Oriented Syntax (Python, C++, Java, JS, PHP)
* 12:41:37 – Implementing Python Objects in C
* 12:50:37 – Implementing Python Strings in C
* 13:06:27 – Implementing Python Lists in C
* 13:16:15 – Implementing Python Dictionaries in C
* 13:26:32 – Encapsulation
* 13:38:55 – Abstraction & Iterators
* 13:53:46 – C++ Operator Overloading
* 14:15:20 – Implementing Encapsulation in C
* 14:24:26 – Implementing Iterators in C
* 14:37:26 – Tree Maps and Hash Maps
* 14:43:59 – Hash Map Implementation
* 15:08:43 – Tree Map Implementation
* 15:26:39 – Tree Map Put Implementation
* 15:40:54 – Course Wrap-up & Transition to Epilogue
Epilogue: Python Data Structures Implementation
* 15:48:07 – Epilogue Introduction
* 15:57:40 – Interview with Guido van Rossum (Creator of Python)
* 16:15:48 – Code Walkthrough: Python List Implementation
* 16:28:09 – Code Walkthrough: Python String Implementation
* 16:37:33 – Code Walkthrough: Python Dictionary Implementation (Python 1.0)
* 17:05:36 – Code Walkthrough: Python Dictionary Implementation (Python 3.7)
* 17:45:04 – Dictionary Internal Changes (Python 3.6 to 3.7)
* 18:14:28 – Conclusion
I believe the exercise on page 27 has an error: The 'get_line' function is returning the length of the string, including the termination character (e.g 'abcd ' returns 5), but the 'while' loop checks for '>0' (greater than 0) condition (wich will always be true), so the loop for which executes 'get_line' will never end. I fixed it by replacing with 'return i-1' on the 'get_line' function.
46:25! Don’t cut the man off when he was just about to explain the most profound reason for changes since C not being enough!!!
Nooo
Jesus Christ, I went through three introductions that said basically the same thing and you still hadn't gotten to any content! What the hell.
Isn't switch statement faster than if- else? Or am I thinking of pythons match-case?
12:41:08
12:50:45
Why you talk about python in a C course? 🫠
One tutorial about hardware descriptive language and C for embedded systems please
I'm probably a bit late to the party, but I'm trying my hand at these exercises… and wondering, How can I verify my solution is adequate? In my mind, it compiles and seems to run, but is there some edge case I have failed to consider? I find solutions online, but I'm still left with the same question. Specifically, I'm working on Exercise 1-12, after attempting every exercise along the way.
I love Dr. Chuck
Pointers need their separate 8 hours Crouse
First Day showing up.
Hope will complete it and learn something from the course at the end of the course and write some amazing pieces of code. Looking forward to my updates as edits in this comment.
Sacred scrolls read by an elder
beginner don't watch this