
On Habré there are already several articles about Technopark Mail.Ru. Today I want to talk about how to start the course "Web-technology", which is included in its program.
Now Technopark is already more than just a training center, but at first it was just a couple of training courses - one can say that it started as a startup. We, the first teachers, did not quite understand what and in what format we should tell the students. But it was immediately clear why - we wanted and still want to prepare competent specialists: developers, testers, software system architects.
')
Developing a program for training software architects from scratch is not an easy task. We decided to start with the fact that we ourselves are able to do very well: with the development of web applications and a reasonable, good-eternal - course on algorithms and data structures.
Full of enthusiasm, I began to draw up a program of the course “Web-technologies”. The first problem arose immediately: what do you need to tell? Unlike algorithms or, for example, databases, there are no well-established training programs for web-technologies. Roughly speaking, no one teaches us web development, this is the craft that everyone learns, in practice. Therefore, to take and adapt the finished program was not possible, it was necessary to decide on what to tell and what to leave outside the course. It was simply not serious to take the book from the series “We Program in PHP / Perl / Python / HTML / CSS / JavaScript” as a basis; everyone can read such literature on their own. In addition, it was important to make a good impression on the students, because the course is being read in the first semester, in fact, it began with the introduction of students to the Technopark.
We weighed the pros and cons, and it was decided:
- We make the so-called overview course. It will become a kind of plan for all training at the Technopark: it will explain how a medium-sized web application works - from the database to the user interface.
- We will not study any specific programming language in detail; students of MSTU are fully capable of dealing with this on their own in their free time.
- We add practical exercises in which students “play” with the technologies being studied and solve puzzles.
We chose Python as the main language for development and snippets. Why? Python is simple. Snippets are easy to read even to those who first see the code in this language. We also proceeded from the fact that Python is the easiest to learn on your own.
The course was quite general. It includes network protocols, http-servers, the actual backend-development, work with databases, frontend-development and some information security.
So, the course is compiled, the first batch of students proceeds to study. But the picture is pretty bleak: students are actively “slaughtered” at lectures and seminars, the last of which was about 5 out of 60 students. Many came to the exam, but they did not show a deep understanding of the subject, answered with jagged phrases. In general, it became obvious that students perceive our course as an ordinary university discipline, according to the principle “we will learn everything the night before the exam” and “just to pass”. However, there was a surprise for the students: there is a lot of material, the literature is very fragmented, but there are no manuals. As a result, after the first semester, almost 50% of students were expelled (from Technopark, of course). It is very sad, because the most enterprising and energetic got into the first set.
The solution to the problem was found thanks to the students themselves: after the survey, it turned out that they very much a) want to practice and b) it is often not clear what needs to be done. Therefore, in the second semester, we added homework. Now, before each seminar, students began to perform a clearly formulated task and get points for it, without which it is impossible to come to the exam. And this immediately had a positive effect on attending the seminars!
For the first time I watched a self-organizing team. Despite the prohibition of team development, three students still united in a team and began to work on projects together. Externally and functionally, the projects were extremely similar, but the code was completely different. It turned out such a snake-gorynych, in which each head duplicated the work of the other. Apparently, for the sake of fault tolerance ...
With the third stream, we went even further - we invented and introduced a small but full-fledged project as homework. They wrote a technical task, painted screen layouts, divided the project into stages: one for each workshop and homework. Together with the project, we introduced a scoring system: now, for admission to the exam, it was necessary to make a basic version of the project (20 points), and if you implement additional features, you get 30 points and an exam with an automatic machine.
Despite the impressive amount of work, the project must be completed by each student strictly individually. Why? First, team training is legalized sloppiness: as practice has shown, all the work is done by one student from the group, and the rest are resting. Secondly, it was interesting to compare our course with the course on Java, which work in groups. And thirdly, for hardcore, of course.
Another idea to improve the course unexpectedly threw the training department. Due to the nature of the schedule, we had to hold seminars before lectures, that is, in fact, students had to do their homework with technologies that no one else explained to them! And it gave an interesting result: the attendance of lectures and the activity of students in these same lectures increased. In general, everything is logical: faced with problems - there were questions.
One of the ways to earn points during the course is to make a lecture on an interesting topic. You make an interesting report - you get points. Especially enterprising students stimulated interest in their reports with the help of derivatives: they began to give out the promised points for good questions to the report.
And the results of the third semester finally pleased us to the fullest. Despite the fact that only 50% of the students got to the end of the semester again, their level of knowledge and motivation became much higher. These were the very "best of the best of the best" with honors, sir!
At the moment, we are studying the fourth stream of students, and the course itself has changed a lot: we have taken the front-end development into a separate course, and the rest of the disciplines have been slightly reduced. In fact, the course has ceased to be a review and turned into a special course on backend-development. Will it be so far unclear, time will tell.
I consider that three and a half semesters are not a very long time, but for myself I, naturally, have already drawn some important conclusions. They may be useful for those who teach or work with students. So, here they are:
- Practice is necessary, and in large quantities. It is practical tasks that “cling” students, motivate them to study and act. And the theory is needed for prioritizing and expanding the outlook in technology.
- Exact technical tasks perfectly help. And no, they do not kill creativity. Those to whom this is given will, in any case, do everything in their own way (and, possibly, better). But the rest will not be lost in the subject and will absorb more information.
- The theory after practice is a great idea, we proved it by example.
- It is better to overload students than to underload.
I want to finish the article with a question to the audience: colleagues, web developers, what do you think you need to talk about on the web course? For ease of analysis, you can respond in a tag format: mvc, orm, security. Call what was NOT obvious to you, but came only with experience and changed your idea of the web. I hope this will help make the course more interesting and better prepare our future colleagues!