Do you wonder why universities like MIT, Stanford, CalTech etc produces the best engineers AND are responsible for top inventions ?
yeah! first of all its not about University, its about the "Approach" we opt. good approach leads the best always and here are some tips for computer science enthusiasts⤵️
1.) the ultimate purpose of computer science is to let people create smart products for the masses. that means, once you finish your CS grade, you will be working as software engineer creating software for web, mobile, system, mainframes, supercomputers scada/PLC etc(so vast)
2.) never try to write programs using "01" strokes. its a binary instruction(machine code) which is created by assembler(software [.asm]). you can just appreciate and surprise but taking that in practice is just waste of time.
[Update: this job is done by compiler and i don't think any software company in the world would hire machine coder because its so so tough. yes ofcourse you can try assembly language. we still use it]
3.) invest good time understating system architectures, memory allocation strategy and basic of processors. at this stage, you dont need to think much about how processors are created or how malloc() works, just the understanding that's all
4.) Understanding more than one OS is hot these days for both software development as well as server and DevOps job. prefer any distro of unix systems like ubuntu(easy). windows is good too i still use it. [Kali Linux is the love of (Hackers)]
5.) Data Types & Structures, variable, operators, function, class are the bread and butter of any programming language. if you skip this topic, it will hurt you onward. i tell you a quick story of NASA. their engineer blew up several million satellite project because one of their engineer wrote "delta = 2" instead "delta == 2"(comparison vs assignment operator)
6.) chances of failure becomes high if you start taking interest in more than one programming language. this is called "Polyglot" programmer which is high in demand but bad choice for student. so you need to master one first.
7.) Data Modelling is like sudoku you can say. it will test your level of IQ and your social appearance. databases are of two types: SQL(MySQL), NoSQL(mongoDB) and Graphical(Neo4J) you can chose the easier one first.
8.) Develop architecture design and problem solving skills. you don't need to go take a class for this. all you need is take a problem and solve it with steps. those states becomes "code block"
9.) many people get confused when they have to chose a programming language. you shouldn't! just take any like Python, Java, C/C++, Ruby, Pascal etc because at this stage you don't need to take care how efficient this programming language is. sharpen your skill first
10.) Never get demotivated if you don't get a good university. you just need a good strategy. i have seen many people who don't have even a bachelor(non-engineering) degree but they are leading big team of masters in big firm.
Note: this opinion is mine which i have experienced throughout my professional life. hope this will help!
that's all! don't forget mentioning your point/question.