So I am right in my thinking and the course material is wrong? I just need that confirming.
The material is right. When you initialize a char array with a string literal the '\0' is automatically added. This means that if the compiler has to determine the size by itself, it reads "Bob\0" which are four characters and create an array of 4 elements
Null-terminated strings, or c-strings (that's what strings ending with \0 are called) are not exactly mandatory, depending on what you need to do. However most standard library functions expect null-terminated strings as parameters. For example strlen() works by counting how many character there are before it encounters a \0 http://www.cplusplus.com/reference/clibrary/cstring/strlen/
The old C-style strings are best described exactly as they are; null-terminated character arrays. That's exactly what they are and, as maeriden says, the null terminator is implicitly added at the end of the array.
As I said, they're more C-style strings. C++ programmers generally favour the use of the C++ string class. No doubt you'll encounter that in your course somewhere down the line.