Learn C Programming and OOP with Dr. Chuck [feat. classic book by Kernighan and Ritchie]



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

34 Comments

  1. 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.

  2. تحية طيبة الصراحة شروحات هذا الانسان قيمة ومفيدة في كافة الفديوهات ولكن للاسف ليس هناك ترجمة الى العربية نتمنى انً تمون هذه الملاحظة جديرة بالاهتمام❤❤🎉🎉🎉

  3. 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 !!!!!!!

  4. 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

  5. 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.

  6. 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.

  7. 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.

  8. 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.

Leave a Reply

Your email address will not be published. Required fields are marked *

You might like

© 2026 Cantinho do Vídeo - WordPress Video Theme by WPEnjoy