- [ ] Record a video for this. - Ideally should be short and to the point, but want to explain this in words to give the proper pitch why I think it can be very helpful to explore C, even if you're never going to write it again. Overarching Idea: I want to **expose** them to C, but I don't need them to **master** C - This is not: - a "Everything you need to be a professional C developer" - a "Everything you need to build a C application" - This includes compiler flags, build systems, etc - a "You now can read random C projects easily" - There are a lot of "C idioms" that are regularly used that are powerful but do not lend themselves to easy reading. - The primary goals are: - Understand basics of manual memory management - Understand basics of garbage collection (via implementing garbage collection projects) - Expose students to thinking about memory in a way they haven't up until now - Side benefit: Learning C can help students see how it has impacted many other languages - Things I'm actively avoiding: - Idiosyncrasies about C that you would discover if you write a lot of C, but are not evident in simple programs - Build systems - They don't serve the primary goals of this course, even though they are required for real-world C usage. - Advanced C Topics - Conditional Compilation - Don't care about OS specific stuff or managing that kind of complexity in this course ## Target Audience: - Boot.dev user - They've done: - Some python - basic data structures / algos - some stuff w/ the terminal - a few smaller personal projects - (This course is planned to be between the JS and Go Courses) - Will be compiling almost exclusively in browser - So focused more on language, rather than local computer setup/build/etc - See more about why in the Goals section NOTE: My expectation is that most of the students will never write C again after the course and almost certainly not write C professionally.