StElTo Manual

Manual last modified on 03.03.2024

StElTo and manual written by Volker Dirr
https://www.timetabling.de/

StElTo is a Students Election Tool

Table of contents

Table of contents

Preamble

At most schools there are too many students in a year/form to teach them all in a single room. Schools can solve this by two different ideas: Split the years/form into classes or split them into courses. (In fact schools in the world are not always so strict; you might find schools that use a mixture of both variants.)
All students in a class stay together and visit the same subjects. So they can't choose subjects. With courses it is different. Students can choose their subjects. So they won't stay together in a class. Each subject (course) has another mix of students.
Courses are more complicated to organise, but they have a big advantage over classes: Students can select subjects individually.
There are custom FET versions that do both at the same time: The course planning and the timetabling. It works fine for not too large data sets. That variant can generate much better timetables, but it still also has disadvantages: The whole timetabling task is more complex and mostly only a single guy can work on it. It is more difficult to share the work with other people. Also large data sets still might not be solvable with that variant.
StElTo uses the classic way: Do the course planning first and the timetabling as a second independent step. Easy data sets allow to do the last step manually. More difficult data sets can be optimised by using the StElTo results and schedule them with a timetabling software like FET). StElTo is designed for the course planning step. So every student can select some subjects and StElTo schedule the students into courses without any conflict.

But also organisers of workshops or other event planners can use this tool. Just translate teacher into speaker and students into participants.

While using StElTo you might notice that the order of the tabs might not be perfect. That is sadly a small disadvantage in the chosen design. The current design tries to avoid duplicating data. But some data is cycling in the process of a planner and is linking back and forward. So it is sometimes needed to recheck an earlier tab, but StElTo can save a lot of space and double checking by that.
It is similar in this manual. That is why you maybe should read it completely and (depending on your previous knowledge on this topic) you might also jump a bit between the chapters.

Table of contents

Features & Limits

There are currently a few limits.
The limits refer to a single year/form only,
not to the whole school.
  • Names: max 100 characters
    (students, teachers, rooms, subjects, courses and tags)
  • Number of students: max 768
  • Number of courses: max 128
  • Number of teachers: max 128
  • Number of rooms: max 128
  • Number of lines: max 20
  • Teacher, student and tag names should not contain plus sign +,
    since it will be misinterpreted as separator of names
    if you import activities into FET by csv.
There are a lot of nice features supported by StElTo:
  • Schedule Courses
  • Care about min and max students in courses
  • Care about students that are not allowed in the same course
  • Care about max similar subjects in the same line
  • Subjects can allocate two lines
  • Votes score tool
  • Course planning tool
  • Care about teachers
  • Care about rooms
  • Care about desires
  • Fixing courses into special lines
  • Force courses to be simultaneously
  • Import StElTo, FET custom, Kurs42 and LuPO data sets
  • Export StElTo, FET and Kurs42 csv files
  • Export StElTo text files
  • Example generator
Table of contents

Preparing StElTo

StElTo needs a computer that can run Qt. So it is possible to run it for example with Microsoft Windows, Apple MacOS or Linux. Even if it is running with a Raspberry Pi 2 computer (it has got only 0.9 GHz and only 1 GB RAM), a faster computer is recommended. Also a screen size with at least 1280x800 is useful, because lower values will make it difficult to read the activity planning or some other dialogues. There is no command line version without GUI like with FET.

Table of contents

Installing on Windows

Microsoft Windows users need Windows 10 or later. Download the StElTo executable file from the FET Forum. It will extract all needed files. Open the newly created directory and start StElTo. There alternative designs available that also support the dark mode. Double click on StElTo-fusion and StElTo-windows to start them. You can move the directory to another location and/or create a link to the executable file.

Table of contents

Installing on MacOS

There are two MacOS versions available. Download the StElTo files from the FET Forum. The MacOS-ARM version needs MacOS 14 or higher and is for M1, M2 and M3 CPUs. The MacOS-x86 version needs MacOS 11 or higher and also supports Intel CPUs. You only need to download the image file and start it.

Table of contents

Installing on Linux

There is a Linux version available. Download the StElTo file from the FET Forum. The Linux version needs an 64 bit OS with an x86 Intel or AMD CPU. You only need to download the AppImage file and start it.

Table of contents

Using StElTo

Even if StElTo is a tidy Qt-application, you should read this manual carefully, because it includes some hints and warnings on how to use it correctly. Maybe view the video tutorials on YouTube:

English YouTube videos
German YouTube videos with English subtitles
Table of contents

Settings

Language

Please select the desired language. You need to restart the program after changing the language.

GUI Colors

You can change the brigtness of the colors in this dialog. This is useful if you are using a dark mode setting.

Proxy

StElTo uses the internet connection to check if there is a newer version available on the internet and if the key is valid.
StElTo doesn't offer internet web space to save your data. You need to host your data yourself.
Most users can just use the default settings.
Large institutions often use a proxy server. You need to set up the proxy then. Please contact your administrator to get information about your proxy, host and port. In normal cases you will know your user name and password already if you are using a proxy server. StElTo will always ask you for your user name and/or password if you keep them blank in these settings. You can also enter them here, but be aware that both will be stored unencrypted on your computer.

Database

There are currently 3 kinds of databases: Memory, SQLite and MySQL.
Memory: This is very fast, but it doesn't save if you close StElTo. You can use it if you just want to test StElTo or if you are sure you can solve your problem quickly and don't need to change the data anymore.
SQLite: This database is stored in a single file. It can be used by several computers simultaneously. The SQLite version supports automatic backup. It is disabled by default. If you set up the interval up to 1, then it will do a backup daily. It will do a backup every second day if the interval is 2. Select a directory on an other hard drive to increase data safety.
MySQL: This is a “real” database. You need to set up a MySQL server yourself if you want to use it.

Use SQLite if you don't know which database you should use.
You need to restart StElTo if you change the database.

Update Seed

The seed is used by the generator. Since generating with different seed will give different results, the default should be to update the seed always.
For testing and developing a static seed can be useful.

Table of contents

Examples

If you haven't got an example file, then you can just generate a random example here.

Table of contents

Export

You can check all files that should be written after solving a data set.

Table of contents

Help

Get help in this menu.

Table of contents

Datasets

Datasets

There are 6 different variants to enter the data:

Please ask the author if you need another import filter.

At the first moment it might be the easiest (since it is self-explanatory) to enter the data directly in the GUI. But that might be too time consuming. Most schools already use a school administration software. They already have most of the data in that software since they also use it for other tasks like printing credentials. It might be much easier if you export your data into a csv file and import it into StElTo. Even if you can't export into the exact file format it might be much easier to export into a very similar file format, modify it with a spreadsheet software (like LibreOffice Calc) and import it into StElTo.

The default StElTo csv file is the best choice, since it supports all features of StElTo. Try to use this first. Please read the chapter Import Data.

If you want to enter the data manually, just press New Dataset to create a new data set.

You can do a (double-)click on many cells in the table.
You can delete a data set if you (double-)click on the id.
You can change the current data set if you single click on a cell.
You can modify the year name and comments. The year name is used for FET export.

Duplicate data set is useful if you want to do larger changes in the students vote and you are not sure if you want to drop that data later. So this is an easy variant to work with different data sets instead of changing the whole database (See chapter Database).

Table of contents

Students

Students

The students tab contains all students.

Write the students name in the upper text lines. Press Add Student to append the student.

If you want to use FET to do the final timetable: Don't use the "+" sign in the teachers' nor the students' names, since this will be misinterpreted as a separator of names if you import activities into FET by csv.

You can do a (double-)click on many cells in the table.
You can delete a student if you (double-)click on the id.
You can modify the data if you (double-)click on it.
You can change the order of the sorting if you click on the headers.

Since new students will be added at the end of the list without any confirmation it might be useful to sort the list descending by ID. By that the last ID will be first in the list and you will always see if you added a new student.

If you click into a Not Together With cell, you can select students that are not allowed to be together in the same course. You can select multiple students.

Table of contents

Subjects

Subjects

The subjects tab contains all subjects that can be chosen by the students. Working with this tab is similar to the students tab. But there are some more options.

A high number of different subjects is fine for your students, since they can individually choose their favorite subjects. But in the worst case one (or more) subject(s) will get too few votes and you can't offer that course. So the students might need to re-vote for an other subject.
If you reduce the number of subjects it will become easier and easier for the planner; in the most extreme variant there are as many subjects as lines, so in fact no choice at all. In that case you are just using classes instead of courses; so you don't need this tool and can directly work with a timetabling tool like FET.

You can set up Max per Line for all subjects at once with the spin box in the upper right corner or individually by double clicking on the cell. By default the value is unlimited. You can limit the number of same subjects in the same line by that value. The colour of the background will change if you choose the value individually for a subject. The background will be yellow if you enter a more strict value (compared with the value from the spin box). It will be green if you simplify the scheduling by setting a less strict value.

Example: The students must choose subjects sport. So there will be a lot of sport courses, but your gym has only 3 parts. This limits the max number of sport courses in the same line to 3. You need to limit the number of Max per Line for that subject in this tab to avoid room problems.

Some schools even set a max limit for all subjects. The advantage is that students might find easier an alternative course if the data set is already running in the school. (This might happen for example if a student has extreme problems with that subject or if a new student arrives at the school during the running period.)

You might have noticed that there is also an Hours value. I will explain that in detail in the chapter Hours.

By default all courses will be placed only in a single line. Sometimes it is useful to use two lines for a single course. In that case just check the Allocate Two Lines cell. There will also be more details about that in the chapter Hours.

You can Force Desires (compare the chapter Special). All students will get their desired course by that. This option won't vote down the Care about Desired Courses flag from the Generate tab. It will only affect the Max Course Conflicts from the Hours tab. Maybe you will wonder why this tab doesn't have a Force Desires flag: Because you only need to reduce the Max Course Conflicts down to 0 and all desires will be forced.

Table of contents

Votes

Votes

The votes tab contains all the votes of the students. So first of all you can see all students. You can also rename and delete them like in the students tab. You just can't add new students here. Much space is needed here and so it is good that we don't need the buttons here to add new students.

The Votes value contains the sum of all votes of the students. The Lines value contains the number of needed lines for the students. In normal cases the value of Votes is equal to Lines. But if a student selected subjects that Allocate Two Lines (compare Subjects) the number of needed lines will increase.

But you can see more information in this tab. The right headers contain three lines: The subject, the hours of the subject and the number of students that voted for this subject.
Set or remove a vote by (double-)clicking into a cell. The cell will be marked with an X if there is voted. The background colour will change if this vote has a tag (compare with the description of the special tag in the chapter Special.

Table of contents

Hours

Hours

First of all you need to limit the max number of lines for the subjects; depending on their hours.

Example Lines 1 Example 1: The students in the first year (form) of the high school need to choose 10 subjects (out of ~20 subjects). As soon as every student selected his 10 subjects you need to sum the vote and decide how many courses per subject you need. You do this with the later explained Planning tab.
StElTo now schedules the students to the courses and tells you in what line a student must visit his course. StElTo places the courses by default only on a single line. So it looks like we have only 10 hours. But the courses might take all 3 hours. In fact the student will have 3*10 = 30 hours per week. It doesn't matter for StElTo how you place the lines in the timetable. It is working without conflicts in every combination. It might look like the left table in the picture. You can easily see the 10 lines, but it might be not perfect to have all 3 hours on the same day. Most schools select a more spread version like in the right picture.
But in fact you can choose other slots for the lines. In the best case you will export the solution from StElTo to FET and let FET place the courses in the timetable. You can get much less gaps or even free days for half-time teachers by that.

Example Lines 1b Example 1b: In the worst case StElTo won't find a solution. There are at least 2 different variants on how to care about these situations:
1. A few students can't get their selected subjects and need to choose other subjects. You can do that by increasing the Max Subject Conflicts value.
2. You need to add one more line. Solving the table will be much easier by that, but it will force a lot of students to have gaps.
There are 3 variants how to reduce the number of gaps for students:
1. Just generate without caring about that right now and check the final results. You will get a report about the number of students in each line. Select that line with the lowest number of students and place it into a line with many slots at the edge (For example 11 in the picture.)
2. Maybe you already know a single course that should be later, because it has got the lowest number of students or maybe because it is more practical like sports. Modify the number of courses for that subject, so it will be placed alone on a separate line that can be called line 11. In fact you can even remove that course and place it yourself in line 11, but I don't recommend it since it is not visible in the data.
3. XXX TODO: Limit the max number of courses on the last line by Max Courses in Last Line.

Example Lines 2 Example 2: The students in the other years (forms) of the high school need to choose 2 advanced courses and 8 basic courses. So again just 10 lines. The advanced courses have 5 hours while the basic courses have 3 hours. The table needs 2*5 + 3*8 = 10 + 24 = 34 hours per week.
In normal cases it is useful that courses with 3 hours are not in time slots with 5 hours; similarly the other way around.
You might choose a variant like in the left picture. You can easily see the lines again. But there are also 2 disadvantages: The courses are not spread well and you might get problems since you might also need to place the lines of all the years (forms) at the same time. The second problem is not a problem for the students, since they are independent in the years. But it will be a problem for the teachers and rooms.
That is why most schools will choose a variant that is very similar to the chosen variant of the other year. Please compare with the right table from this and from example 1; it isn't important that the line numbers are the same, this is besides the point. It is useful that the lines are not overlapping each other.

Example Lines 2b Example 2b: Let's assume StElTo can't find a solution like in example 2 for your data set. There are 2 basic variants (similar to example 1).
1. Add an other line with 3 hours. So the table needs 2*5 + 9*3 = 10 + 27 = 37 hours per week. (Compare with the picture on the left.) This variant helps only if it is difficult to place the courses with 3 hours. You might use the same trick as in example 1 to avoid students gaps.
2. Add one more line with 5 hours. So the table needs 3*5 + 8*3 = 15 + 24 = 39 hours per week. (Compare with the picture on the right.) This variant helps only if it is difficult to place the courses with 5 hours. You might not need to use special tricks to avoid students gaps in this example. Just check the table and you will notice that the courses with 5 hours are already at the edge. So this variant will produce max one extra 1 gap.
But what to do if the timetable is too difficult with 3 and 5 hours lines? You need one more line with 3 hours and one more line with 5 hours. So the table will need 3*5 + 9*3 = 15 + 27 = 42 hours. That is (maybe) too much. You need to add a 9th hours or teach on Saturday.
The following tricks might help to solve it anyway.

Example Lines 2c Example 2c: Let's stay at the example. The students need 2 advanced courses with 5 hours and 8 basic courses with 3 hours. So in total 2*5 + 8*3 = 10 + 24 = 34 hours. But this is too difficult. You can't solve it with the tricks of example 2b. In this case another variant might be to place only lines with 3 hours in the table. The trick is to place the courses with 5 hours into two slots with 3 hours. So you need 2*2 + 8 = 12 lines with 3 hours for this. You can do that by using the Place into cell. Also checking the Allocate Two Lines cells of each subject with 5 hours in the Subjects tab. (TODO XXX Do it automatically!) Set the Max Lines value to 12 lines for both; the subjects with 5 hours and subjects with 3 hours. The subjects with 5 hours will occupy 6 hours. Of course just skip one of that hours. Let FET choose the best position for this hour to reduce the number of gaps.
The table needs at least 2*2*3 + 8*3 = 12*3 = 36 hours. (for example like in the right picture) So this variant has even less hours then the variants from example 2b. You can still increase up to 39 hours to make it easier.

Example Lines 2d Example 2d: Still the same example, but with the trick from example 2c only the other way around. Allow to place subjects with 3 hours into lines with 5 hours. Sounds silly, since it looks like we need 2+8=10 lines with each 5 hours; so in total 50 hours per week. The trick is to use it as an improved version of the second variant from example 2b. So we increase the number of lines with 5 hours up to 3. The table needs 3*5 + 3*8 = 15 + 24 = 39 hours. (Compare with the left picture)
So it looks similar to example 2b, but this time the 3 hours subjects have 3+8=11 possible lines. Use the Place into cell and allow to be placed into the other lines. You need to limit the subjects with 5 hours to only 3 lines (by using Max Lines, while the subjects with 3 hours can have max 3+8=11 lines). In fact you even might try to remove one line with 3 hours. It might also fit, but I guess it will not be easy to solve. (Compare with the right picture).

Example 3: TODO XXX subjects with 3, 5 and 7 hours.

Example 3b: TODO XXX subjects with 3, 5 and 7 hours sharing 5 hours slots.

In the worst case your data set will be still too difficult and increasing the number of lines won't be an option. In that case you can increase the Max Subjects Conflicts value. This will allow the algorithm to skip a students' votes. So some students need to re-vote another subject.

You can change the Max Course Conflicts value to allow skipping the desired courses from the Special tab.

The Max Students and Min Students limit the number of students in the courses. So the max value should be the max value of your room capacity. The min value should be the smallest allowed course size.
The Max Higher and Min Lower values are relative to the average course size.
Example 1: You have 3 courses with 90 Students. So the average value is 30.
a) All 3 courses will get exactly 30 Students if you set the Max Higher and Min Lower values to 0.
b) All 3 courses will get between 29 and 31 Students if you set the Max Higher and Min Lower values to 1.
Example 2: You have 2 courses with 51 Students. So the average value is 25,5.
a) One course will get 25 students and the other 26 if you set the Max Higher and Min Lower values to 0.
b) One course might get 24 while the other will get 27 students if you set the Max Higher and Min Lower values to 1.
You can set these values more detailed in the following two tabs.

Suffixes and prefixes will enlarge the course names if they are created automatically by StElTo (see next chapter Planning).

There a two columns to control the export: Export (FET) and Export Kurs42
This is useful if you want to place all courses of a subject into an exclusive line. Just change the number of hours and it will be placed into a separated line. By modifying the export value you can still keep the correct number of hours for the export.
By using the Export (Kurs42) it will still get the The Export (FET) will be used for FET csv export. It is the Split Duration. So it is a sum that describes how the hours (activities) should be split. See FET manual.
The Export (Kurs42) is nearly similar for Kurs42 csv export.

Table of contents

Planning

Planning

The planning tab starts similarly to the subjects tab. So you can rename and delete the subjects like in the other tab.

You can also see the number of votes like in the header of the votes tab. There are also 3 other new parts: Columns about target settings, columns about current settings and columns about number of students.

Let's check the upper picture from the planning tab.

You can see that 5 students voted for the subject IO. Maybe there are too few students for a course. So you might not be allowed to set a teacher (and room) for such a small number of students. You might need to remove that subject. The students need to choose another subject. It is clever to do this before you continue with the next steps.

Subject S8 is selected by 17 students. That is fine. You can offer that course. StElTo suggests creating one course (Courses Target) and it will get all 17 students (Average Target). There is already one course added (Courses Actual). That is why the actual values are similar. The background colors are yellow, because StElTo doesn't like the value, and red, because it is impossible.

Subject S0 is selected by 26 students. StElTo suggests creating two courses (Courses Target) and on average each one will get 13 students (Average Target). The staff described that two courses are too much for that subject and already created just a single one. The background colour of the actual number of courses, since it is different from the suggested number.
There are two variants for changing the target number of courses:
The default variant is to increase the Target max average spin-box. The current value is 25. That is why StElTo suggested creating 2 courses. Just increase that value up to 16 and StElTo will suggest only 1 course.
The alternative variant is to enter an exception, because the spin box affects all subjects. Click on the Courses Target) value and enter an exception. This might be useful for sports or other subjects.

As soon as you are satisfied with the course size just click the Create Courses button. The courses will be created and visible in the Courses tab. The course names will be the subject name with an additional number. Prefixes or suffixes for the names can be added automatically if you set that rules in the Hours tab. This is useful if the same subjects are available with different number of hours. So you might add the prefix or suffix "5" if the subjects have 5 hours, and "3" if they have 3 hours. At German schools it is common to add the suffix "-GK" to subjects with 3 hours (Grundkurs (basic course)) and "-LK" to subjects with 5 hours (Leistungskurs (advanced course)).

You can also see gray min and max number of students. The values are gray, because they contain the default values from the Hours tab. If you are not satisfied with the values, you should think about changing them in the Hours tab first, since they affect more subjects and you have less work to do. But you can add exceptions here of course. The background will be yellow if you enter a stricter value (compared with the default value). It will be green if you simplify the scheduling by setting a less stricter value.

If you want to change the number of courses later, just press the Create Courses button again. It will add and/or remove the courses, depending on your target settings.

Table of contents

Courses

Courses

The courses tab contains all the courses.

You can add teachers and rooms to the courses if you know them already. Please add them only if you know them for sure already.
So if you have for example a gym with only 3 parts it is not clever to add the room name right now. The same room of courses might eliminate the other course with the similar room, even if the gym still has 2 other empty parts. Please use Max per Line (see chapter Subjects) in that case. You can still choose the room after the scheduling is done.
Similar to teachers. It sounds conflicting at first, but this is also a common policy at school; especially if the school does course planning only for some years/forms while the others still have classes. Those schools can do the course planning with StElTo without a teacher first. Then they export it to a timetabling software (like FET), and do the activity planning with all the years/forms. So there are still enough teachers to place without any conflict.

You can also see the final min and max students of the courses in this tab. Modify them here if you need exceptions. Modifying the values in the previous tabs is recommended to care about all courses the same way. The background color will become green if you ease the value. It will become yellow if you make it more difficult. It will also be yellow if a minimum value is impossible because of missing students. Scheduling will still be possible even if in fact the minimum value is impossible.

The Same Line feature is an automatic tag for the courses. The exact name (number) of the tag doesn't matter. Courses will be in the same line as soon as they have got the same Same Line tag. This might be useful if the courses will take part rotating.

The Fixed Line feature will fix the course into a special line. Please use it only if it is needed. Old manual scheduling masters used this feature regularly if they did their timetable manually. Because it might simplify the data set very much. For example some subjects like first language, Maths or Religion must be chosen by all students. So they placed each of them in a separate line. I recommend adding these rules only if there is still another advantage of this variant needed. Don't add them because you always did it like that. This is a very bad reason. The StElTo algorithm is pretty fast and it might find much better solutions if the subjects can be mixed.
If you have a very difficult data set and a lot of subjects at the same time it might be useful to return to the old behaviour. But setting all the fixed lines might take much time. There is a faster variant for you, but also for the algorithm. So you will get faster results with the following trick: Just change the number of hours of that special subject. Maybe give 9 hours for Maths, 8 hours for first language and 7 hours for religion. Of course the number of hours will be impossible in the timetable. But with this variant you only need to change 3 values in the Subjects tab and StElTo will place them all separated into their own lines. You can change the number of hours back to 5 later again, after the scheduling is done.

Please don't forget that the fixed line value is relative, not absolute. There is no difference in those terms if all your subjects have the same number of hours. But if you have for example subjects with 5 hours and subjects with 3 hours, then those will be separated into different lines. So you can place for example a course with 5 hours into line 1 and also a course with 3 hours into line 1. Even if it looks like both have the same line, they won't be in the same line since different number of hours will get different lines. The small disadvantage of this variant is that it is a bit tricky to understand if you use relative fixing lines the first time. But on the other hand there is a nice advantage of this variant: Even if you change the max number of lines (see chapter Hours) of special hours it won't affect the other lines from subjects with a different number of hours; So all the fixed line values can stay the same if they are relative.

The second fixed line value is only for subjects that allocate 2 times (see chapter Subjects). You can't use that value for "normal" subjects.

Table of contents

Tags

Tages

The tags tab contains all the tags. The tags are preselected in the combo boxes if you select a new tag in the Spezial tab.

You can also force the desired course from the Spezial tab.

Add a new tag by the Add Tag push button. Remove a tag by double clicking on the ID. Rename a tag by double clicking on its name. Toggle forcing desired courses by double clicking. X marks forced courses.

Table of contents

Special

Special

You can see all the votes of the election in the special tab.

You can tag the votes. This will only colour the votes in the Votes tab. Useful tags might be "recorded" or "verbal", depending on the exam. The tag might be also used in later versions to add a constraint like the min and max students, just with min and max of a tag. Please let the author know if you need such a feature.

You can select only existing courses in the Desired Course. By that feature StElTo won't choose one of the courses with the same subject; it will force a preferred course. This is useful if you do the scheduling for the next year with very similar courses for the students.
Since this requests might be too strict, you can allow Max Course Conflicts in the Hours tab.

Table of contents

Generate

Generate

The generate tab is mainly designed to start the automatic scheduling and view the results.

By default the algorithm doesn't care about teachers, rooms and desires. Please enable them by the check boxes. Enabling and disabling might help you in searching and understanding bugs in difficult data sets.

The seed affects the random generator. The algorithm will always give the same results if you start with the same seed. I guess you normally don't need it, but it helped the author in developing the software very much. That is why it currently always starts with the same seed. The author will change this behaviour to random seeds in later versions.

Also the benchmark spin box won't probably be useful for a users daily work. But it also helped the author while developing and comparing the speed with other course planning software tools.

The restart time limit spin box sets a countdown for a restart. The author preferred a relative instead of an absolute value again. So the countdown always restarts as soon as an improvement is found.
I don't know the "correct" value for this limit. If the value is too small you might never find a solution. If the value is too high you might need to wait too long to find a solution. A "medium" value might bring you on average much faster results.
So I can't recommend a "good" value. It is also depending on the speed of your computer and the difficulty of your data set. Maybe just do some benchmarks with different time limits (and with at least 20 iterations) and report to me your results.

Finally you only need to press the Generate button and you will hopefully see a bit later the results in this tab.

Table of contents

Help

Table of contents

Export Data

If you only need to schedule a workshop or another independent event you might only need to print the StElTo results. (XXX TODO: add a print feature) But schools normally do this course planning for each year (form), merge the results in their timetabling tool, finish the activity planning and generate the whole timetable.
Currently StElTo supports exporting files in the StElTo format, FET csv file format and Kurs-42 file format. Please let me know if you need other file formats.
I recommend you to use FET, since it has at least two advantages: It has a powerful algorithm that cares about a lot of constraints very fast and it is clever enough to check if it can break the lines again and share different lines. The courses are NOT forced to be in calculated lines like described in chapter Hours. Of course this will not be possible if the students tables are full (no free slot). But if this is possible, you might get a much better timetable (or even just a result, while timetabling tools with fixed lines can't solve the timetable.) So the timetable might result in less gaps or in free days for teachers and/or students.

Table of contents

Import Data

If you want to use FET to do the final timetable: Don't use the "+" sign in the teachers' nor the students' names, since this will be misinterpreted as a separator of names if you import activities into FET by csv.

Table of contents

StElTo csv files

Save the csv files with UTF-8 coding and with BOM. Save with text-quote " and field-separator ,.

You can import 5 different files: Elections.csv, Courses.csv, Subjects.csv, Hours.csv and Students.csv. Keep the exact file name and select the folder with these files. You don't need all the files. It's possible to import just a single file. You may start just with the Elections.csv, since it is the most useful file.

Keep the header line complete, even if you don't use all columns, since it is used to detect text-quote and field-separator in case you changed it to another common sign.

In normal cases you don't need to import IDs. But you need to keep that column. So your data rows in a StElTo csv file must start with an empty field (so the line starts with file-separator ,). The data rows don't need all columns. You can skip empty fields at the end, but I recommend always using all (empty) fields.

Table of contents

Elections.csv

The elections file might look like this:

"ID","Last Name","First Name","Birthday","Subject","Hours","Tag","Desire"
1,"Simpson","Marge","01.01.1975","KR",3,"GKM",""

Let's have a closer look at a few examples:

Example Comment
,"Tom",,,"Maths"
Tom does a vote for subject Maths.
,"Tom",,,"Maths",2
Maths will be a subject with 2 hours per week.
,"Tom",,,"Maths",2,,
Maths will be a subject with 4 hours per week.
,"Tom",,,"Maths",2,,"M-Course2"
Tom desires course M-Course2.
,"Tom",,,"Maths",2,"Exam",
Tom's vote is tagged with Exam
,"Tom",,,"Maths",2,"Exam","M-Course2"
Tom will get Maths in course M-Course1; tagged with Exam

Let's have a look at the universal description:

Field Header Type Comment
1
ID
Integer Can be empty.
2
Last Name
String Should contain a name or ID.
3
First Name
String Can be empty.
4
Birthdate
String Can be empty.
5
Subject
String Must contain a subject.
6
Hours
Integer Can be empty.
Default value: 1
7
Tag
String Can be empty.
8
Desire
String Can be empty.

At least Last Name, First Name or Birthday must contain a value. It is not allowed that all 3 are empty.

Table of contents

Courses.csv

The courses file might look like this:

"ID","Course","Subject","Hours","Teacher","Room","Tag","Min Students","Max Students","Same Line","Fixed Line","Fixed Line 2"
1,"VX-E-VTF1","VX-E","3",,"",VTF,-1,-1,-1,0

Let's have a closer look at a few examples:

Example Comment
,"M-Course1","Maths"
There will be a Math course named M-Course.
,"M-Course1","Maths",4
The Maths course will get 4 hours per week.
,"M-Course1","Maths",4,,,,,,,,
The Maths course will get 4 hours per week.
,"M-Course1","Maths",4,,,"Exam",,,,,
The course will be tagged with Exam.
,"M-Course1","Maths",4,"Mr. Wood","123",,,,,,
The course will get teacher Wood in room 123.

StElTo will warn about the first 2 examples, since not all fields are used; but it is possible to do it that way.

Let's have a look at the universal description:

Field Header Type Comment
1
ID
Integer Identity number can be empty.
2
Course
String Must contain a course name
3
Subject
String Must contain the subject name.
4
Hours
String Can be empty.
Default value: 1
5
Teacher
String Can be empty
6
Room
String Can be empty.
7
Tag
String Can be empty.
8
Min Students
Integer Can be empty.
9
Max Students
Integer Can be empty.
10
Same Line
Integer Can be empty.
11
Fixed Line
Integer Can be empty.
12
Fixed Line 2
Integer Can be empty.
Table of contents

Subjects.csv

The subjects file might look like this:

"ID","Subject","Hours","Max Per Line","Allocate Two Lines","Force Desire","Min Students","Max Students","Max Lower","Max Higher"
1,"VX-E",3,0,0,0,-1,-1,-1,-1

Let's have a closer look at a few examples:

Example Comment
,"Maths"
Subject Maths is added.
,"English",5
Subject English for courses with 5 hours.
,"Sports",3,,,,,,,
Sports for courses with 3 hours.

StElTo will warn about the first 2 examples, since not all fields are used; but it is possible to do it that way.

Let's have a look at the universal description:

Field Header Type Comment
1
ID
Integer Identity number can be empty.
2
Subject
String Must contain a subject name
3
Hours
Integer Can be empty.
Default value: 1
4
Max Per Line
Integer Can be empty.
5
Allocate Two Lines
Boolean Can be empty.
Default value: false
6
Force Desire
Boolean Can be empty.
Default value: false
7
Min Students
Integer Can be empty.
8
Max Students
Integer Can be empty.
9
Max Lower
Integer Can be empty.
10
Max Higher
Integer Can be empty.
Table of contents

Hours.csv

The hours file might look like this:

"ID","Hours","Place Into","Max Lines","Max Subject Conflicts","Max Course Conflicts","Min Students","Max Students","Max Lower","Max Higher","Prefix","Suffix","Export"
1,3,3,12,0,99,10,35,15,15,"","-GK","2+1"

Let's have a closer look at a few examples:

Example Comment
,5
One line for 5 hours activities added.
,3,5
The activities with just 3 hours are allowed to be placed into lines with 5 hours.
,2,,1
Activities with 2 hours will only get a single line.
,4,,10,,,,,,,,,
Activities with 4 hours will get 10 lines.

StElTo will warn about the first 2 examples, since not all fields are used; but it is possible to do it that way.

Let's have a look at the universal description:

Field Header Type Comment
1
ID
Integer Identity number can be empty.
2
Hours
Integer Must contain a number of hours.
3
Place Into
Integer Can be empty.
default value is the same as Hours.
4
Max Lines
Integer Can be empty.
default value is 15.
5
Max Subject Conflicts
Integer Can be empty.
6
Max Course Conflicts
Integer Can be empty.
default value is 999.
7
Min Students. 
default value is 10.
Integer Can be empty.
8
Max Students. 
default value is 35.
Integer Can be empty.
9
Max Students
Integer Can be empty.
10
Max Lower
Integer Can be empty.
11
Max Higher
Integer Can be empty.
12
Prefix
String Can be empty.
13
Suffix
String Can be empty.
14
Export
String Can be empty.
default value will be automatically generated.
Table of contents

Students.csv

The students file might look like this:

"ID","Last Name","First Name","Birthday","Sex"
1,"Simpson","Homer","01.01.1972","3"

Let's have a closer look at a few examples:

Example Comment
,"Tom"
Student Tom is added.
,,"Tom"
Student Tom is added.
,"S2019-00001"
Instead of the name only his ID of the school administration software is used.
,"Simpson","Lisa","17.12.1989","f"
A perfect example.

StElTo will only accept the last example without complaining at all.

Let's have a look at the universal description:

Field Header Type Comment
1
ID
Integer Can be empty.
2
Last Name
String Should contain a name or ID.
3
First Name
String Can be empty.
4
Birthdate
String Can be empty.
5
Sex
String Can be empty.

At least Last Name, First Name or Birthday must contain a value. It is not allowed for all 3 to be empty.

Table of contents

Tags.csv

The tags file might look like this:

ID","Tag","Force Desires"
1,"Main Subject",0

Let's have a closer look at a few examples:

Example Comment
,"Main Subject"
Tag Main Subject is added.
,"Main Subject", 1
Tag Main Subject is added.
Desired courses will be compulsory.

StElTo will only accept the last example without complaining at all.

Let's have a look at the universal description:

Field Header Type Comment
1
ID
Integer Can be empty.
2
Tag
String Should contain a tag.
3
Force Desires
Boolean Can be empty.

An empty tag name is not allowed.

Table of contents

FET csv file

The FET custom version csv looks very similar to the FET official csv file. The header looks identical, but it's usage is a bit different then the official FET version (see FET CSV files).

"Students Sets","Subject","Teachers","Activity Tags","Total Duration","Split Duration","Min Days","Weight","Consecutive"

It is similar to some custom FET versions (like FET MAPR). FET MAPR does course planning and timetabling at the same time. The advantage is that it might find much better timetables. The disadvantage is that it is working fine only with small data sets fast; large data sets are not solve able in fitly time. So if you have a large school it is currently better to separate this task. For example by doing the course planning with StElTo and do the timetabling with FET. If you are also interested in trying FET MAPR for your school, it might be useful to use the FET custom csv file format, since it can be used by FET MAPR and also by StElTo.

FET MAPR uses a stricter variant of the file format. Please check it you want to use it. I will now explain the StElTo version, which is a bit more slacker.

As for every FET version: The column subject is not allowed to be empty, it must contain the subject.

In fact there are 2 variants to enter data: Enter a student's vote or enter a course. StElTo differentiates that by the first column (Students Set). If the Students Set is not empty it will take this information as a student name that voted for a subject. If the Students Set is empty, it will take this information as a course.

Table of contents

Students

Let's have a look at a few examples:

Example Comment
"Tom","Maths"
Tom does a vote for subject Maths.
"Tom","Maths",,,2
Maths will be a subject with 2 hours per week.
"Tom","Maths",,,4,2+1+1,1,95,0
Maths will be a subject with 4 hours per week.
"Tom","Maths","M-Course2"
Tom desires course M-Course2.
"Tom","Maths",,"Exam"
Toms vote is tagged with Exam
"Tom","Maths","M-Course1","Exam",4
Tom will get Maths in course M-Course1; tagged with Exam

FET MAPR will only accept the 3rd example without complaining at all.

Let's have a look at the universal description:

Field Header Type Comment
1
Students Sets
String Must contain the student's name.
2
Subject
String Must contain a subject name.
3
Teachers
(used as desire)
String Can contain a desired course.
4
Activity Tags
String Can contain a vote tag.
5
Total Duration
Integer Should contain the total number of hours per week
6
Split Duration
String StElTo will skip this column.
7
Min Days
Integer StElTo will skip this column.
8
Weight
Double StElTo will skip this column.
9
Consecutive
String/Boolean StElTo will skip this column.
Table of contents

Courses.csv

The course import is optional, you can do that also comfortable with StElTo from the GUI. So do this only if you already did the basic course planning.

Let's have a look at a few examples:

Example Comment
,"Maths","M-Course1"
There will be a Math course named M-Course.
,"Maths","M-Course1",,4
The Maths course will get 4 hours per week.
,"Maths","M-Course1",,4,2+1+1,1,95,0
The Maths course will get 4 hours per week.
,"Maths","M-Course1","Exam",4
The course will be tagged with Exam.
,"Maths",,"M-Course1",4
StElTo will use the tag as course name to stay more compatible with other custom FET versions.

FET MAPR will only accept the 3rd example without complaining at all.

Let's have a look at the universal description:

Field Header Type Comment
1
Students Sets
String Must be empty.
2
Subject
String Must contain a subject name
3
Teachers
String Must contain the course name.
4
Activity Tags
String Can be empty
Can contain a tag of this course.
5
Total Duration
Integer Should contain total number of hours per week
6
Split Duration
String StElTo will skip this column.
7
Min Days
Integer StElTo will skip this column.
8
Weight
Double StElTo will skip this column.
9
Consecutive
String/Boolean StElTo will skip this column.
Table of contents

Kurs csv files

Kurs42 is a course planning software of NRW (Germany) by Walter Schrewe. You can get the latest version at Kurs-42

Sadly there is no official description of the file format. Please execute Kurs42 with a data set and select the following command to export your data:
Kurs42 -> Im/Export -> Export in Textdateien -> Blockung exportieren

Table of contents

LuPO/SchILD csv files

LuPO and SchiLD are students planning and administration software of NRW (Germany). You can get them at Schulverwaltung NRW.

Both use the same csv file format. The official description is available in the Schnittstellenbeschreibung.

Please execute LuPO with a data set and select the following command to export as csv:
LuPO -> Datenaustausch -> Schnittstelle SchILDNRW -> Schüler und Laufbahndaten exportieren
Don't enable "Nur Schüler mit Beratungsdatum exportieren"; but enable "UTF8 benutzen".

Table of contents

Help

Please report mistakes, nice examples or other suggestions to the author. You can also check out my YouTube channel and the FET Forum.

Yours
Volker Dirr