- The terminal was completely foreign to me. Why is it structured so? How are permissions set? Octal?!?!?!
- Why do I have to specify a type in a programming language?
- What/why are all these special characters used in programming?!
- Why is a program structured in the way it is? What are the levels of abstraction working in a given program?
- What happens when I run/compile my program?
I would also say that learning a little bit of C also really helped illuminate computers for me. Not only in the sense of how they work, but also why programs use their current syntax. For example, for developers who look at Javascript for the first time seeing parenthesis, colons, curly brackets, etc all make an initial sense: they seem familiar. However, to somebody first diving in all of these characters seem totally arbitrary! Having gained a sense of how computers worked and then a very basic introduction into low-level programming, suddenly these high level languages seem much less arbitrary.