References for the idea of the timetable generation algorithm:

1. Michael Marte - Models And Algorithms For School Timetabling - A Constraint Programming Approach - 5 July 2002
(free, on the internet, one possible link is: https://www.en.pms.ifi.lmu.de/publications/dissertationen/PMS-DISS-2003-1/PMS-DISS-2003-1.pdf)
- Section 2.2.5 - Manual Timetabling - pages 23-24.

2. Jantien Hartog - Timetabling on Dutch High-Schools - Satisfiability versus gp-Untis - March 2007
(free, on the internet, one possible link is: https://citeseerx.ist.psu.edu/document?repid=rep1&type=pdf&doi=98a8bd5acac1757e3637f070ec039aa6c27a1009)
- Section 5.2 - page 27.


References for other algorithms and techniques used in FET:

1. Generating a random permutation of a vector in linear time (used to shuffle the time slots at which an activity can be placed,
and in other places in FET): Thomas H. Cormen, Charles E. Leiserson and Ronald R. Rivest - Introduction to Algorithms - First Edition (in Romanian),
Section 8.3, Exercise 8.3-4.

2. Obsolete - it was replaced in FET version 5.44.0: 32 bit random number generator: Donald E. Knuth - The Art of Computer Programming - Volume 2 -
Seminumerical Algorithms - Third Edition (in Romanian), Section 3.6.

3. The 32 bit random number generator named MRG32k3a: P. L'Ecuyer, ``Good Parameter Sets for Combined Multiple Recursive Random Number Generators'',
Shorter version in Operations Research, 47, 1 (1999), 159--164. - https://pubsonline.informs.org/doi/abs/10.1287/opre.47.1.159. Includes ideas and code
from the files: https://simul.iro.umontreal.ca/rng/MRG32k3a.h, https://simul.iro.umontreal.ca/rng/MRG32k3a.c, and/or
https://www.iro.umontreal.ca/~lecuyer/myftp/papers/combmrg2.c. Used with permission from the author, Pierre L'Ecuyer (9 March 2020).

4. For the virtual rooms allocation function we used an algorithm for a randomized maximum bipartite matching of minimum cost, inspired and modified from the
Hopcroft-Karp algorithm, which was described and implemented in pseudocode on the Wikipedia internet page:
https://en.wikipedia.org/wiki/Hopcroft%E2%80%93Karp_algorithm.

5. Qt Documentation: https://doc.qt.io/.

6. A tutorial on pointers and arrays in C, by Ted Jensen, Chapter 9: Pointers and Dynamic Allocation of Memory:
https://pdos.csail.mit.edu/6.828/2014/readings/pointers.pdf. We used the idea of contiguous memory allocation into a dynamic array.
We used the idea in the file src/engine/matrix.h.

7. C++ FAQ LITE, by Marshall Cline, Section [13] - Operator overloading, Article [13.12]: http://parashift.com/c++-faq-lite/.
We used the recommendation to add the () operator for a dynamically allocated matrix, which is not necessarily slower. We used the
idea in the file src/engine/matrix.h.

8. References for the Javascript code to highlight similar entries in the HTML timetables (FET code by Volker Dirr) can be found in
Open Admin for Schools: http://www.openadmin.ca/, authored by Les Richardson.

9. https://www.qtcentre.org/threads/53066-QMap-sorting-according-to-QLocale

10. https://www.qtcentre.org/threads/57210-how-to-change-background-color-of-individual-QHeaderView-section

11. https://www.qtcentre.org/threads/46841-Can-t-style-QHeaderView-section-selected-in-QSS-stylesheet

12. https://stackoverflow.com/questions/15519749/how-to-get-widget-background-qcolor

13. https://stackoverflow.com/questions/22635867/is-it-possible-to-set-the-text-of-the-qtableview-corner-button

14. https://stackoverflow.com/questions/19555121/how-to-get-current-timestamp-in-milliseconds-since-1970-just-the-way-java-gets

15. https://stackoverflow.com/questions/31255486/c-how-do-i-convert-a-stdchronotime-point-to-long-and-back

16. https://stackoverflow.com/questions/18022927/convert-high-resolution-clock-time-into-an-integer-chrono/18023064

17. https://stackoverflow.com/questions/37767847/stdsort-function-with-custom-compare-function-results-error-reference-to-non

18. https://stackoverflow.com/questions/14416786/webpage-returning-http-406-error-only-when-connecting-from-qt

19. http://amin-ahmadi.com/2016/06/13/fix-modsecurity-issues-in-qt-network-module-download-functionality/

20. https://stackoverflow.com/questions/48093102/how-does-qt-select-a-default-style

21. https://stackoverflow.com/questions/3065438/switch-statement-with-returns-code-correctness

22. https://unix.stackexchange.com/questions/497526/linux-shell-script-run-a-program-only-if-it-exists-ignore-it-if-it-does-not-ex

23. OpenAI. ChatGPT. 2025. https://chat.openai.com/

24. https://bbs.archlinux.org/viewtopic.php?id=199695

25. https://stackoverflow.com/questions/6736536/c-input-and-output-to-the-console-window-at-the-same-time

26. https://stackoverflow.com/questions/4184468/sleep-for-milliseconds

27. https://stackoverflow.com/questions/3070450/qt-how-do-i-change-the-text-color-of-one-item-of-a-qcombobox-c

28. https://stackoverflow.com/questions/10053839/how-does-designer-create-a-line-widget

29. Google Translate: https://translate.google.com/

30. https://forum.qt.io/topic/94474/how-to-add-a-spinbox-column-and-combo-box-column-in-qtablewidget-or-qtableview

31. https://stackoverflow.com/questions/35435254/refer-to-the-sender-object-in-qt

32. https://stackoverflow.com/questions/69758930/how-to-map-qt-push-button-to-keyboard-key-presses


You may find updated or additional references for the algorithms and techniques used in this program on the FET documentation web page, https://lalescu.ro/liviu/fet/doc/
