- Algorithms and data structures: my path in this direction began with studying the principles of constructing algorithms, reading classic books (Knuth) and studying the Pascal programming language, and it continued with the C language, the implementation of all data structures and an analysis of the advantages and disadvantages of each of them. I won’t say that, in addition to everything else, I know how to work with Turing Machines and Markov Algorithms, or rather, I have already said this, but you can ignore this, although, in my opinion, the concept of an infinite memory tape and the movement of a pointer along it gives the most correct idea of how a computer actually works from the inside, but this is just my humble opinion.
- Computer architecture and Assembler: when you decide that you have completely understood the principle of computer operation, try writing programs at a very low level (otherwise how will you appreciate all the delights of Java?), and I personally considered all educational options with one, two, three registers and I realized how you have to dodge when there is only one register, and the program works (surprising, right?).
- Discrete mathematics: naturally, in parallel with the above, it is also worth taking up this subject, since it gives a complete understanding of logical thinking, and the theory of finite state machines will tell you how the insides of the processor are arranged and how they are organized in integrated circuits. Let's not forget that Graph Theory is also studied here, which will not be 100% superfluous.
- Higher mathematics: I decided to highlight all other mathematical subjects in one paragraph, so as not to clutter your head too much. Here are: mathematical analysis, probability theory and statistics, linear algebra - by the way, a very, very important thing if you want to do three-dimensional graphics (I know, everyone’s dream is to write games, although for this you will also have to take a course in differential equations and numerical methods, but this is so - little things), and other areas.
- OS architecture. Linux: after you get comfortable here, multithreading in Java will raise much fewer questions, and it turns out that you have already heard the fairy tale about philosophers somewhere.
- OOP, C++ language: well, we’ve almost reached the top of the food chain. I won’t explain in detail here and won’t say why the implementation of OOP in C++ is much more interesting to look at.
- Additionally: a couple more little things that I already knew were: computer graphics (OpenGL, Unity 3D) and C# (Core).
novago219
Level 34
Java Middle in 2.5 months.
Greetings to all readers who thought that in 2.5 months from scratch you can really become Middle. I hasten to disappoint you - this is only possible with very hard work on yourself, and I know how everyone wants everything at once - right now and no other way. And the phrase from scratch applies to me only in a certain conditional status, because I really had absolutely zero knowledge of Java as a programming language. But I still already knew and was able to do something even before I met JavaRush, and perhaps I would like to start my story with this, because my career growth is a rather strange combination of knowledge, skills and luck in some way.
So, let me give you a list that gave me a competitive advantage over others, and also allowed me to get through JavaRush (up to level 34) quite quickly and without much difficulty (at least it didn't surprise me). The list consists of the knowledge that the university gave me, as well as what I myself was interested in. I won’t separate where everything is and I won’t name the university either. If you wish, you should master all this knowledge on your own if your university does not teach it.
GO TO FULL VERSION