I think that in order have true mastery of C, one must understand why certain things are undefined. For example signed integer overflow is undefined. Why? Well different architectures handle overflow in their own ways (saturating vs modulo arithmetic, twos compliment). C can a great way to learn about computers in general vs assembly on a specific architecture--unless you approach C undefined behavior as most undergrads do and proclaim how arbitrary the silly C language spec is.