When newcomers are interested in where to start learning programming, they are often advised to universities - there is real computer science, fundamental knowledge and, in general, the road to normal life. It's not like pulling on the Internet of knowledge and running to program with a clever look, so that later to stuff big shots and dishonor in front of people with "real knowledge".
I may not have intended to write code for advanced NASA projects, but I wanted the university to help me learn to delve into the problems that professional programmers solve day after day. Needless to say, what kind of connection with reality I saw in my university? I think it's still necessary.
I started to study programming back in school, it was interesting to me and the question of choosing a profession was not even then - it was only necessary to choose a university. At first I was going to enter KPI or KNU Shevchenko - in general, in the top in the country, but then I figured that moving to Kiev, which means living in a hostel or renting an apartment, I don't really want, so I decided to enter my city, yes and then I heard a lot about how and where they teach, so I don't regret not moving. Another question is what I ended up with.
For many of my fellow students, programming was initially something very abstract, which in the future, it seems, can help you get a normal job. Most of my classmates did not understand anything from the program at all, they studied according to the principle "just to pass" and in general with great difficulty, many confused the square root and the square of a number, could not say in their own words what a logarithm is. But in the way the training was structured, I did not even see any attempts to fix it.
It is one thing to lecture, there the teacher still sits in front of the students and can understand what is reaching whom and somehow explain incomprehensible moments - but when it comes to laboratory work, it turns out that the lectures were generally about something else, and in the end decide tasks can only be done by those who have taught the necessary material themselves Where and how he got this material is a mystery.
To whom I could, of course, helped, because it is strange and unfair not to teach anything really, but at the same time to demand from students. Needless to say, reading something extra is not the most popular activity among our students.
I am not writing this downrightly, I still have not established myself in the profession, and even putting, in my opinion, a lot of effort, I feel like a proger-impostor. But the fact that I studied for three years do not understand what, there are guilty ones.
Here, take a look at the course program
In the first semester, there are two specialized subjects at once - the basics of programming (in Python) and algorithms. Great, only the lists of tasks for both subjects are for some reason the same, only they are shuffled between students in a different way. All algorithmization is reduced to endless drawing of flowcharts. Maybe for some it’s like going into space, but I didn’t feel like an experienced cosmonaut either - I just understood the logic of the simplest operations with cycles, matrices and all that.
This did not bother anyone - apart from drawing a table with the values of a variable at each step of the algorithm, there were apparently no worthy solutions to the problems. The code for the same tasks must be printed together with the "analysis" (just a text description of the algorithm) at your own expense and handed over to the teacher for verification. This, so that you understand, everything happened in a computer class, but the computers just stood on all this time. Whether this code printed on paper was going to be assembled, no one at all interested.
The first labs for functions are only in the second semester. There is also the first mention of pointers. Moreover, there is exactly one task for pointers - to write the addition of two numbers using pointers. That is, instead of somehow taking advantage of the real advantages of pointers, they showed how not to write code under the guise of something useful. You could at least ask to write via swap pointers - not an ideal example, because there are links, but addition?
As a result, for the entire second semester, functions, pointers and structures were added from the concepts - structures are also, as you understand, at the level of counting something there for a list of students. But here's what they began to demand in the second year, watch your hands.
Subject "Discrete Structures". Lecture on sets. The lecturer tells what it is, shows the simplest operations (union, intersection, addition), talks about Russell's paradox, about the set of subsets and gives the statement “The cardinality of a set is less than the cardinality of the set of its subsets”, without proof.
What do they ask in the lab? A program that prints out many subsets. I, the same person who until recently missed flowcharts, coped with this lab only thanks to a friend who pumped me a little on Olympiad problems and, in general, taught a lot of things back in school. How many have such a friend? Or maybe the lecturer should have strained a little harder and not limited to info like 2 + 2, only about sets.
It's the same with boolean functions - a lecture about AND, OR, NOT and Pierce's arrow, but lab - write a calculator for boolean expressions. Of course, you can study all this yourself and then at least write about these calculators, but why is a teacher needed in such a situation? To tell the multiplication table, and set the integrals to the house? And there, and there are numbers. Or just to scare you with one look and make you quickly learn something “like an adult”? Sorry, but students, even freshmen, are not idiots. And all this at some point began to be required to write only in C ++, which everyone hated - the language is still quite complex. Why it was impossible to do the same thing in other languages, I still did not understand - due to the fact that there are pointers in the pluses, probably.
But my top heads the OOP subject and specifically the teacher on it - every time he was late for thirty minutes, and then he pushed two options, either naturally the school curriculum at the level of something-information-or-algorithm, or started lengthy arguments about the importance of assembler and "low-level probing." And about the assembler, apparently, just for a catchphrase, because the matter did not go further than confusing stories about the call function. And this is on the subject of OOP!
The labs were evaluating flowcharts again, not code. Moreover, this particular teacher was clearly afraid of the code, and when he was asked to show examples, he excused himself in the style of "why do you need examples, the main thing is the concept." Well, in general, the whole semester of a programming task is to write a program for 20 lines, and to it a block diagram, a UML diagram, 50 more diagrams, and do not forget to screw inheritance somewhere, because the OOP approach.
I will not tell you what was taught later - somehow everything revolves around schemes, diagrams and teachers who are afraid of the code. Moreover, at the end of the third year I was technically kicked out of the university for reasons that I don't even want to discuss, because I was already convinced that this was for the best.
Any conversation about the problems of IT education begins with the fact that IT is a rapidly changing industry that cannot be kept up with, and that universities in any case will be the Mesozoic in comparison with the reality in which programmers who want to be useful and get paid for This is money. But are the underlying algorithms and data structures changing rapidly? Have the basic principles of OOP changed a lot lately? Or SQL? The foundation for an IT specialist is not just empty words, he can and should be taught. Is it important in what language? For me, if only the teacher knew him, and the novelty or even popularity is the second thing.
Another popular approach is that a university is solid theory instead of practice. But I think, from the above, you could understand what is meant by the average university by theory. A real illusion of science for those who do not want to think about anything at all and are studying at a university for some reason they understand.
Few can graduate from school at the age of 16 and immediately critically assess their future, but this is a problem of higher education in general, and I would not like to delve into it. Programming is not magic, it is a basic thing in the modern world - otherwise how can you explain the considerable number of active professionals who do not have specialized education? It is unlikely that all of them fell out of the sky understanding the basic principles.
Moreover, even if we assume that all of them are incredible specialists in self-education, then where does this self-education become so popular. There are actually thousands of books, courses, trainings, and the only problem is that not everything is smooth there either and often you have to search for good content by typing. But is it possible to sort out universities by typing?
If, again, do not take the top, then all this resembles a lottery in which you can win a normal education with a couple of enthusiastic teachers in basic subjects, or you can just catch a haha for five years in universities like mine. In addition to everything, many people really need a system to do at least something in an area where, in general, you basically need to sit in front of a computer with concentration and assemble rather complex structures.
But how does this system work with an example like the one I described? Distributes money to some strange people who, I'm sure, would prefer to forget about programming, but for some reason they teach it. And people who, in a different situation, could and would reveal their potential, find themselves immersed in mass hypnosis for 5 years, and then, in a semi-random order, they fly away in all directions.
Advertising
VDSina offers VDS with a daily payment, the ability to install any operating system, each server is connected to an Internet channel of 500 Megabits and is protected from DDoS attacks for free!