Recently, only lazy does not speak about the low quality of training students in universities. Including on Habré lately, many articles have appeared that stigmatize the existing system of higher education that has developed at the moment. The main complaint that universities impose is the isolation of higher education from real life, from those technologies that are used in business. Alas, often these claims are not unfounded. But I want to show my personal, positive (hopefully) experience, how to break this situation.
This article presents the experience of using the version control system subversion and the Trac change tracking system as part of the educational process in the discipline "Linguistic and CAD software" at the department. KSUP TUSUR. The advantages that students and I, as a teacher, have received from using these systems in the educational process are shown.
Goals
The purpose of any training at the university is to prepare students for real work in a commercial company. Consequently, the requirements for the competencies of the graduate of the university puts forward the market. The IT market, and especially in the field of software development (software), on the one hand, is very diverse, that is, there are many technologies and tools for software development, and on the other hand, everything is changing rapidly - the technologies used are changing, the approaches to software development , tools that are used by programmers, etc. This also applies to software development support technologies. However, a number of technologies and tools are used, if not by all, then, in any case, by a considerable part of software development companies. In this case, I mean the following two technologies.
Version control system . Today there are a large number of version control systems. Even if you take a brief list of the most popular free-to-distribute version control systems, here you can remember cvs, git, mercurial, subversion, bazaar. In addition, there are many proprietary version control systems that provide better or worse functionality than the above free ones.
This article says that the popularity of git and subversion are almost equal, but for me personally, I don’t have full confidence in this. As a rule, I have to use at work subversion (more recently mercurial), and in some third-party, primarily free projects, git. Some other reasons also spoke in favor of subversion - after all, it was not only I needed it, and subversion was chosen for students.
')
The change tracking system is the generic name for a number of systems, such a bug tracking system (bugtracker), change request tracking systems, etc. Unlike version control systems, there are no clear leaders in this class of systems. Moreover, it is not uncommon for each software company to develop its own error tracking system. For this reason, it is impossible to make any explicit assumptions about what kind of system the graduate of the university will have to use when he comes to work at the company. It only remained to throw a coin, and the trac system was chosen as the tool.
Laboratory works
Most of the lab work in the “Linguistic and CAD software” discipline was easier for students to do on unix, for which they have access to the department server on FreeBSD. However, anyone could do this on Windows using Cygwin or even using VisualStudio or other software development tools. In fact, you need lex, yacc, a C compiler and some kind of build automation system for a project. Therefore, access to the svn repository was provided from both the cathedral unix server and from any, including personal / home computer with Internet access.
It must be said that our department has long had the practice of doing laboratory work by students at home. Students came to the computer class only to get a task and then pass it on to the next lesson (usually in two weeks) and get the next task in passing. They performed the task at home, or in the same computer class, at a more convenient time than the framework of classroom hours of laboratory work allows. This allows you to leave free time to work ... well, or for fun. (It should be noted here in brackets that a significant proportion of the department’s staff including me work during the day, and only after hours - in the evening after 6:00 pm and on Saturdays they can teach in the department). Many students used it, and only a small group regularly came and sat in a computer class ... sometimes they even made a lab there, but more often they just sat on the Internet for free.
A centralized source repository allowed students to work even more independently. In fact, now students can come to the computer class only in order to pass labs - the task lies in the trac, and they can do at home - you just have to fill in the svn result. At the same time, the excuses of students like “I forgot my flash drive / diskette at home” are gone - all source texts are stored in one place and are accessible from everywhere.
Naturally, the deadlines for laboratory work were not rubber. For example, if the laboratory work on a schedule is held on Saturday, then I set the deadline for this work - 23:59 the next day (Sunday), if the work was not done on time, then the maximum score that can be obtained for it is reduced. And protection of work was carried out in the classroom hours of the next class - in two weeks. The excuses of a student like “And I did everything on the same day in the evening, do not reduce my points”, because I see exactly what and when the students commit to the repository, according to the svn logs. And if I see that in fact the work was done on the night before the surrender, and not two weeks ago, then the points are reduced. Cases where all the main commitments were made somewhere between midnight and six o'clock in the morning on the night before the surrender were not uncommon, however, the quality of work, and hence the points for it were appropriate.
Collaboration
Moreover, the use of SVN allowed for group laboratory work. I believe that the optimal group size for most of the work is 2-3 people, unless, of course, group development is not an end in itself of laboratory work (I also have such work in the second half of the same course). Group work allows, on the one hand, to prepare for real work, which, of course, will be held in teams, and on the other hand, it makes it a bit more difficult for the task, due to the fact that the task will be parallelized between team members.
A typical assignment of roles in such a group is as follows: one student implements the main task, the second - tests for it (generates test input data and reference output, to which the program must come at the end). The third student, if there is one, can, for example, build build scripts, and agree on the work of the first two. SVN allows you to see what exactly each of them did, and, accordingly, to assess the degree of participation of each student. Having seen who did what committees, I can ask everyone on his part. This, of course, is not a panacea, but still a little wired from “trailers”, that is, students who did not participate in the implementation of the task, but also hope to get a “ball” rating along with their group mates.
The next step in group work is to use Trac. In this case, I used Trac to communicate with students performing a course project. I will make a reservation that I have not yet implemented everything that I wanted in the framework of this technology. I will describe how it will in the end result (already in the upcoming semester).
The course project during the semester is divided into a number of stages:
- the formation of TK;
- formation of the project system;
- implementation;
- protection.
It fits very well with the milestone ideology of the roadmap. Each student creates tickets for his project. When a student has considered the work on the stage completed, he transfers this ticket from the state, for example, “forming TK” to the “TK check” state and attaches the created document (if it concerns text documents or a link to the SVN repository where this task is implemented. Or link to wiki where this document is created.
In the “verification” state, I analyze the work done and, if there are comments, I return the task to the student for revision. Thus, the task can iterate through several cycles. After that, when all comments are corrected, I close the task. The student starts a new task. Milestone allows you to control which tasks were closed and which were not at the time, which allows, on the one hand, changing their assessment, and on the other hand, it shows me and the students, who do not fit the deadline, in a simple and accessible way.
If students choose to complete a course project as a group, their work using trac and svn becomes very similar to real work in a company.
Conclusion
The need to include the tools specified in this article into the educational process, following the requirements of the market, was obvious. The subject of the discipline provides, among other things, software development technologies, therefore these tools looked quite organic in this course.
However, the use of these technologies led to the modification of the educational process and allowed, on the one hand, to make students more transparent, and accordingly, made them more disciplined, and on the other hand, to make the formation of a student’s assessment for the work done more transparent.