only by doing you could truly understand the computer science.
why a computer is able to execute programs?
why could we communicate calculate using computer?
how could we build something which is able to save and process information?
AND
what do we mean by information?
how do we teach a an object, information?
what do we mean by programming languages?
and
what is the difference between computer and chairs and tables if both of them are objects?
in this course we will never take anything for granted. we start by introducing a transistor as a simple switch and create all of our computer using that simple switch. we start from beginning and work all way through to program our cpu to do some calculations and show the result over the monitor that we also create.
30 years ago the idea of a programmer was obvious. someone who completely understood everything about computer architecture and now wants to implement his ideas using programming languages for the computer to execute. but now its different.
we see a lot of people who call themselves programmers, web developers ,... but they don't know how their programs are providing the result that they want? if something goes wrong, they need to ask others or wait for the others to troubleshoot that.
because rather than why, they cared more about finding the answers of how questions.
and thats the main difference between a professional programmer, a real hacker, a good software developer and a hardware designer with a script kiddie. sometimes they say that the difference between a programmer and you, is because they are interested, but i assure you its because they know the architecture behind their codes rather than copy/pasting of it. and actually that is the reason that we see a lot of successful programmer are now that old. because instead of waiting for the experience, they know why they need that code and why that code does what it does.