&gt; In my quest to learn C very well over the past few years, I&#x27;ve come to the conclusion that C is best understood if you think about it in terms of the way that an assembly language programmer would think about doing things. An explosion ample of this would be if you consider how switch statements work in C.<p>Require students to write a toy operating system and compiler in C. They will understand things obscenely well by the time that they are finished.<p>Another option is to introduce students to DTrace and require them to use it to answer questions about kernel and userspace behavior. Ask the right questions and they will learn all of the things you want them to learn from the process of answering the questions.