Where I studied, we did have classes on all the low level stuff, but we didn't start there: I took a class taught using a high level language every semester. CS-100 was intro to how computers worked, but right along with it, you had 101 teaching C.
If you are going to end up teaching software engineering material, compiler design and such, you just can't have people that have barely done any programming for a year or two, or all they are going to learn is boxes next to each other, instead of being able to actually write a simple compiler in the compiler class.
Whoops, I probably wasn't clear enough in my reply -- the classes on transistors, logic gates, etc. are available to CS majors but are definitely not a requirement for programming. I completely agree that trying to teach about digital logic, etc. without the general context of programming is backwards.
Drive the car, build your interest, then start taking classes in chemistry, physics, etc. to see how it works.
Where I studied, we did have classes on all the low level stuff, but we didn't start there: I took a class taught using a high level language every semester. CS-100 was intro to how computers worked, but right along with it, you had 101 teaching C.
If you are going to end up teaching software engineering material, compiler design and such, you just can't have people that have barely done any programming for a year or two, or all they are going to learn is boxes next to each other, instead of being able to actually write a simple compiler in the compiler class.