We work in the company
"University Schedule" , we make mobile applications (iOS, Android, Windows Phone), which publishes the training schedule of students and teachers.
One of the main questions of our project remains - how to make it so that a student can enter his or her schedule into our database as quickly and easily as possible. To manually interrupt the schedule is long and dreary. It is good if the university has an electronic schedule and they have made integration with our service, but 90-93% of universities in Russia do not have an electronic schedule. And do not rush to integrate even more. Nothing remains but to interrupt him manually.

')
At first, we used excel-templates with macros, instructions for a couple of pages were attached to them, could intimidate anyone. In the spring, we made a web form to make the process of cutting our schedule more friendly. From the end of August, we started receiving hundreds of schedules per day through this
web form and again paid attention to this process. The moderation took place in the manual mode, and we were overwhelmed with a stream of schedules. It was necessary to automate, and a little later, when the flow of schedules decreased, then optimize.
We redid the form entirely. Now it is shown in the form of the usual for the student table, which he often sees on the wall near the dean's office, and this table can be filled with your pairs.
Call schedule.
In order not to fill in the same thing for each day, we made a separate entry for the schedule of calls.

If you enter the start of the first pair of time, the web form itself suggests ending the pair in an hour and a half, and a break between the pairs - 15 minutes each. If this is not the case at the university, then as soon as the user starts entering his intervals for the first time, then the “learn” web form will suggest values for the call grid of this university.
Parity of the week in the periodic schedule, support for the modular schedule.
Our system supports the parity / oddness of classes in the periodic schedule, and the “end courses” in the modular schedule (the course of disciplines, which runs from date to date, or only on certain dates). Implemented in this way:

When modifying this form, it was decided that it should be visual and familiar not only after filling, but also during. Looks like this (filled for one day):

If the university and the faculty already existed in our database, then the schedule check will occur much faster. If the university or faculty is not in our database, then we will have to create it ourselves. We are still afraid to give it to users, because they often write abbreviated names that are not complete, there are many duplicates - the base is cluttered.
Unfortunately, we understand that at least technically you can kill almost any schedule here, but it is not always convenient to do it. For example, the cyclic schedule, which is used in medical schools. Or the schedule of the session, which is essentially a calendar and weakly tied to the days of the week. We will work in this direction.
We will be grateful if you point out the shortcomings and special cases of other types of schedules that are not supported by us.