studium 0.9.383

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of studium might be problematic. Click here for more details.

Files changed (894) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +1651 -0
  3. data/bin/ask_question +7 -0
  4. data/bin/check_description_of_these_lectures +7 -0
  5. data/bin/curriculum_module_displayer +7 -0
  6. data/bin/d10 +7 -0
  7. data/bin/d100 +7 -0
  8. data/bin/d15 +7 -0
  9. data/bin/d20 +7 -0
  10. data/bin/d25 +7 -0
  11. data/bin/d3 +7 -0
  12. data/bin/d30 +7 -0
  13. data/bin/d5 +7 -0
  14. data/bin/determine_curricula +7 -0
  15. data/bin/exam_registration_at +7 -0
  16. data/bin/exam_statistics +7 -0
  17. data/bin/exams_per_month +9 -0
  18. data/bin/finished_exams_at_this_university +7 -0
  19. data/bin/flashcards +7 -0
  20. data/bin/mandatory_continuous_assessment +7 -0
  21. data/bin/mandatory_upcoming_courses +7 -0
  22. data/bin/n_exam_questions_already_answered +17 -0
  23. data/bin/nquestions +7 -0
  24. data/bin/nsolved +7 -0
  25. data/bin/open_last_exam_question_asked_file +7 -0
  26. data/bin/passed_pr/303/274fungsimmanente_courses +7 -0
  27. data/bin/return_n_ects_from_this_file +7 -0
  28. data/bin/show_lectures_on_the_commandline +7 -0
  29. data/bin/show_themes +7 -0
  30. data/bin/solved +9 -0
  31. data/bin/studienkennzahl +7 -0
  32. data/bin/studium +7 -0
  33. data/bin/studium_skeleton +7 -0
  34. data/bin/ufind +7 -0
  35. data/bin/upcoming_exams +7 -0
  36. data/doc/ECTS_CONSIDERATIONS.md +54 -0
  37. data/doc/HOW_TO_ADAPT_THIS_PROJECT.md +40 -0
  38. data/doc/HOW_TO_DETERMINE_WHICH_PART_IS_THE_QUESTION_AND_WHICH_PART_IS_THE_ANSWER.md +39 -0
  39. data/doc/README.gen +1634 -0
  40. data/doc/TODO_FOR_STUDIUM_GEM.md +119 -0
  41. data/doc/deprecated.md +18 -0
  42. data/doc/documentation_for_the_file_lecture_information.md +259 -0
  43. data/doc/elegant_colours.md +20 -0
  44. data/img/STUDIES.png +0 -0
  45. data/lib/studium.rb +5 -0
  46. data/lib/studium/autoinclude.rb +7 -0
  47. data/lib/studium/base/base.rb +108 -0
  48. data/lib/studium/base/cliner.rb +58 -0
  49. data/lib/studium/base/colours.rb +349 -0
  50. data/lib/studium/base/commandline_arguments.rb +46 -0
  51. data/lib/studium/base/constants.rb +32 -0
  52. data/lib/studium/base/curriculum.rb +304 -0
  53. data/lib/studium/base/directory_to_the_exam_topics.rb +23 -0
  54. data/lib/studium/base/editor.rb +20 -0
  55. data/lib/studium/base/encoding.rb +35 -0
  56. data/lib/studium/base/esystem.rb +24 -0
  57. data/lib/studium/base/minimal_prototype.rb +33 -0
  58. data/lib/studium/base/misc.rb +819 -0
  59. data/lib/studium/base/mode.rb +89 -0
  60. data/lib/studium/base/obtain.rb +144 -0
  61. data/lib/studium/base/opnn.rb +46 -0
  62. data/lib/studium/base/prototype.rb +102 -0
  63. data/lib/studium/base/readlines.rb +53 -0
  64. data/lib/studium/base/replace.rb +108 -0
  65. data/lib/studium/base/reset.rb +49 -0
  66. data/lib/studium/base/run.rb +17 -0
  67. data/lib/studium/base/src_dir_at_home.rb +20 -0
  68. data/lib/studium/base/time.rb +599 -0
  69. data/lib/studium/base/unicode.rb +92 -0
  70. data/lib/studium/base/word_wrap.rb +55 -0
  71. data/lib/studium/boku/README.md +4 -0
  72. data/lib/studium/boku/boku_/303/266ffnungszeiten.rb +29 -0
  73. data/lib/studium/boku/show_three_pillars_of_these_lectures.rb +107 -0
  74. data/lib/studium/boku/three_pillars.rb +245 -0
  75. data/lib/studium/check/README.md +7 -0
  76. data/lib/studium/check/check_curriculum_for_correct_separation_of_bachelor_and_master.rb +149 -0
  77. data/lib/studium/check/check_for_all_exam_topics_being_registered.rb +82 -0
  78. data/lib/studium/check/check_for_existing_description_of_this_lecture.rb +194 -0
  79. data/lib/studium/check/check_the_lecture_information_file.rb +168 -0
  80. data/lib/studium/colours/colours.rb +596 -0
  81. data/lib/studium/colours/sfancy.rb +38 -0
  82. data/lib/studium/colours/sfile.rb +35 -0
  83. data/lib/studium/colours/simp.rb +38 -0
  84. data/lib/studium/commandline/commandline.rb +121 -0
  85. data/lib/studium/commandline/fast_commandline_options.rb +994 -0
  86. data/lib/studium/commandline/help.rb +147 -0
  87. data/lib/studium/commandline/menu.rb +366 -0
  88. data/lib/studium/commandline/misc.rb +11 -0
  89. data/lib/studium/constants/boku_wien.rb +52 -0
  90. data/lib/studium/constants/constants.rb +30 -0
  91. data/lib/studium/constants/delay.rb +21 -0
  92. data/lib/studium/constants/editor.rb +25 -0
  93. data/lib/studium/constants/exam_topics.rb +161 -0
  94. data/lib/studium/constants/file_constants.rb +826 -0
  95. data/lib/studium/constants/image_constants.rb +217 -0
  96. data/lib/studium/constants/last_question_asked.rb +32 -0
  97. data/lib/studium/constants/lecture_types_that_are_mandatory_continuous_assessment.rb +47 -0
  98. data/lib/studium/constants/log_dir.rb +174 -0
  99. data/lib/studium/constants/misc.rb +200 -0
  100. data/lib/studium/constants/namespace.rb +14 -0
  101. data/lib/studium/constants/regexes.rb +32 -0
  102. data/lib/studium/constants/return_file_for_this_curriculum.rb +407 -0
  103. data/lib/studium/constants/roebe.rb +151 -0
  104. data/lib/studium/constants/time.rb +49 -0
  105. data/lib/studium/constants/tu_wien.rb +39 -0
  106. data/lib/studium/constants/uni_wien.rb +24 -0
  107. data/lib/studium/constants/unicode.rb +27 -0
  108. data/lib/studium/constants/week.rb +137 -0
  109. data/lib/studium/constants/www_constants.rb +23 -0
  110. data/lib/studium/curricula/curriculum.rb +187 -0
  111. data/lib/studium/curricula/curriculum_as_string.rb +279 -0
  112. data/lib/studium/curricula/curriculum_module_displayer/constants.rb +38 -0
  113. data/lib/studium/curricula/curriculum_module_displayer/curriculum_module_displayer.rb +421 -0
  114. data/lib/studium/curricula/curriculum_module_displayer/initialize.rb +25 -0
  115. data/lib/studium/curricula/curriculum_module_displayer/menu.rb +45 -0
  116. data/lib/studium/curricula/curriculum_module_displayer/reset.rb +77 -0
  117. data/lib/studium/curricula/curriculum_module_displayer/run.rb +20 -0
  118. data/lib/studium/curricula/curriculum_module_displayer/set_use_this_curriculum.rb +90 -0
  119. data/lib/studium/curricula/curriculum_module_displayer/show_and_report.rb +190 -0
  120. data/lib/studium/curricula/determine_curricula/constants.rb +16 -0
  121. data/lib/studium/curricula/determine_curricula/determine_curricula.rb +36 -0
  122. data/lib/studium/curricula/determine_curricula/help.rb +39 -0
  123. data/lib/studium/curricula/determine_curricula/initialize.rb +48 -0
  124. data/lib/studium/curricula/determine_curricula/menu.rb +138 -0
  125. data/lib/studium/curricula/determine_curricula/misc.rb +402 -0
  126. data/lib/studium/curricula/determine_curricula/report.rb +130 -0
  127. data/lib/studium/curricula/determine_curricula/reset.rb +62 -0
  128. data/lib/studium/curricula/determine_curricula/run.rb +19 -0
  129. data/lib/studium/curricula/determine_elective_courses_in_this_curriculum.rb +131 -0
  130. data/lib/studium/curricula/display_bachelor_curricula.rb +104 -0
  131. data/lib/studium/curricula/mitteilungsbl/303/244tter.rb +336 -0
  132. data/lib/studium/curricula/modules/display_on_the_commandline.rb +339 -0
  133. data/lib/studium/curricula/modules/return_n_ects_in_this_module.rb +72 -0
  134. data/lib/studium/curricula/n_percent_solved_in_this_curriculum.rb +72 -0
  135. data/lib/studium/curricula/show_lectures_of_this_curriculum.rb +112 -0
  136. data/lib/studium/curricula/show_lectures_of_this_curriculum_id/constants.rb +16 -0
  137. data/lib/studium/curricula/show_lectures_of_this_curriculum_id/misc.rb +277 -0
  138. data/lib/studium/curricula/show_lectures_of_this_curriculum_id/report.rb +140 -0
  139. data/lib/studium/curricula/show_lectures_of_this_curriculum_id/reset.rb +65 -0
  140. data/lib/studium/curricula/show_lectures_of_this_curriculum_id/show_lectures_of_this_curriculum_id.rb +37 -0
  141. data/lib/studium/curricula/show_solved_percentage_among_the_registered_curricula.rb +99 -0
  142. data/lib/studium/ects/boku_ects_splitter.rb +121 -0
  143. data/lib/studium/ects/ects_parser.rb +174 -0
  144. data/lib/studium/ects/ects_per_university.rb +137 -0
  145. data/lib/studium/ects/ects_scanner.rb +136 -0
  146. data/lib/studium/ects/ects_to_university_parser.rb +144 -0
  147. data/lib/studium/ects/erledigt.rb +129 -0
  148. data/lib/studium/ects/last_entry_is_curriculum.rb +144 -0
  149. data/lib/studium/ects/n_ects_in_these_lectures.rb +176 -0
  150. data/lib/studium/ects/n_ects_points_in_mandatory_presence_courses.rb +50 -0
  151. data/lib/studium/ects/noch_zu_absolvieren.rb +170 -0
  152. data/lib/studium/ects/return_n_ects_from_this_file.rb +58 -0
  153. data/lib/studium/ects/return_n_ects_from_this_url.rb +197 -0
  154. data/lib/studium/ects/search_for_n_ects.rb +535 -0
  155. data/lib/studium/ects/show_completed_ects_in_all_curricula.rb +208 -0
  156. data/lib/studium/ects/show_passed_credits_per_curriculum.rb +241 -0
  157. data/lib/studium/ects/simple_total_ects_points.rb +143 -0
  158. data/lib/studium/ects/solved_ects/constants.rb +24 -0
  159. data/lib/studium/ects/solved_ects/solved_ects.rb +340 -0
  160. data/lib/studium/ects/solved_ects_per_university/solved_ects_per_university.rb +116 -0
  161. data/lib/studium/ects/still_missing.rb +125 -0
  162. data/lib/studium/ects/sum_of_ects.rb +147 -0
  163. data/lib/studium/encoding/encoding.rb +141 -0
  164. data/lib/studium/exam_topics/RNAi_siRNA_and_miRNA +79 -0
  165. data/lib/studium/exam_topics/abfall_als_ressource +86 -0
  166. data/lib/studium/exam_topics/advanced_biochemistry +762 -0
  167. data/lib/studium/exam_topics/advanced_biotechnology +192 -0
  168. data/lib/studium/exam_topics/advanced_cellbiology +24 -0
  169. data/lib/studium/exam_topics/advanced_chemistry +453 -0
  170. data/lib/studium/exam_topics/advanced_microbiology +44 -0
  171. data/lib/studium/exam_topics/advanced_topics_in_plant_sciences +46 -0
  172. data/lib/studium/exam_topics/advanced_virology +52 -0
  173. data/lib/studium/exam_topics/ageing +101 -0
  174. data/lib/studium/exam_topics/agrar_ecology +61 -0
  175. data/lib/studium/exam_topics/agrarmarkt +71 -0
  176. data/lib/studium/exam_topics/agrarphysik +35 -0
  177. data/lib/studium/exam_topics/alcohols +29 -0
  178. data/lib/studium/exam_topics/algorithms +49 -0
  179. data/lib/studium/exam_topics/allergie +73 -0
  180. data/lib/studium/exam_topics/allgemeine_genetik +1006 -0
  181. data/lib/studium/exam_topics/allgemeine_mikrobiologie +855 -0
  182. data/lib/studium/exam_topics/aminoacids +417 -0
  183. data/lib/studium/exam_topics/analytische_chemie_1 +130 -0
  184. data/lib/studium/exam_topics/analytische_chemie_2 +31 -0
  185. data/lib/studium/exam_topics/anatomie +248 -0
  186. data/lib/studium/exam_topics/anorganische_chemie +289 -0
  187. data/lib/studium/exam_topics/anthropologie +115 -0
  188. data/lib/studium/exam_topics/antibodies_and_antigens +747 -0
  189. data/lib/studium/exam_topics/apoptosis +35 -0
  190. data/lib/studium/exam_topics/archaea +41 -0
  191. data/lib/studium/exam_topics/architecture +8 -0
  192. data/lib/studium/exam_topics/artificial_intelligence +81 -0
  193. data/lib/studium/exam_topics/audio +10 -0
  194. data/lib/studium/exam_topics/bacteriophages +224 -0
  195. data/lib/studium/exam_topics/basic_biochemistry +1008 -0
  196. data/lib/studium/exam_topics/basic_biotechnology +1011 -0
  197. data/lib/studium/exam_topics/basic_chemistry +1007 -0
  198. data/lib/studium/exam_topics/basic_virology +949 -0
  199. data/lib/studium/exam_topics/bauwesen +6 -0
  200. data/lib/studium/exam_topics/betriebssysteme +125 -0
  201. data/lib/studium/exam_topics/betriebswirtschaftslehre +29 -0
  202. data/lib/studium/exam_topics/bioanalytik_und_biosensoren +381 -0
  203. data/lib/studium/exam_topics/biochips +78 -0
  204. data/lib/studium/exam_topics/bioelektrochemie +56 -0
  205. data/lib/studium/exam_topics/biofilms +22 -0
  206. data/lib/studium/exam_topics/bioinformatics +475 -0
  207. data/lib/studium/exam_topics/biological_therapeutics +152 -0
  208. data/lib/studium/exam_topics/biologie +134 -0
  209. data/lib/studium/exam_topics/biomarkers +106 -0
  210. data/lib/studium/exam_topics/biomaterials +46 -0
  211. data/lib/studium/exam_topics/biomembranes +6 -0
  212. data/lib/studium/exam_topics/bionik +65 -0
  213. data/lib/studium/exam_topics/biophysik +34 -0
  214. data/lib/studium/exam_topics/biopolymers +10 -0
  215. data/lib/studium/exam_topics/bioprozesstechnik +139 -0
  216. data/lib/studium/exam_topics/bioressourcenmanagement +78 -0
  217. data/lib/studium/exam_topics/bodenkunde +345 -0
  218. data/lib/studium/exam_topics/bodenmikrobiologie +40 -0
  219. data/lib/studium/exam_topics/cancerbiology +441 -0
  220. data/lib/studium/exam_topics/cell_cultures +154 -0
  221. data/lib/studium/exam_topics/cellbiology +962 -0
  222. data/lib/studium/exam_topics/cellular_transport_and_protein_secretion +27 -0
  223. data/lib/studium/exam_topics/chemische_technologie_anorganischer_stoffe +208 -0
  224. data/lib/studium/exam_topics/chemisches_labor +59 -0
  225. data/lib/studium/exam_topics/chemotaxis_and_motility_in_prokaryotes +74 -0
  226. data/lib/studium/exam_topics/citric_acid_cycle +70 -0
  227. data/lib/studium/exam_topics/clinical_microbiology +486 -0
  228. data/lib/studium/exam_topics/computer_graphics +5 -0
  229. data/lib/studium/exam_topics/computer_science +269 -0
  230. data/lib/studium/exam_topics/crispr +25 -0
  231. data/lib/studium/exam_topics/cyanobacteria +37 -0
  232. data/lib/studium/exam_topics/cytogenetics_and_chromosome_biology +506 -0
  233. data/lib/studium/exam_topics/databases_and_sql +105 -0
  234. data/lib/studium/exam_topics/dna_mutation_and_dna_repair +33 -0
  235. data/lib/studium/exam_topics/dna_replication +53 -0
  236. data/lib/studium/exam_topics/ecogenetics +27 -0
  237. data/lib/studium/exam_topics/ecological_agriculture +12 -0
  238. data/lib/studium/exam_topics/ecology +313 -0
  239. data/lib/studium/exam_topics/economy +210 -0
  240. data/lib/studium/exam_topics/elektronenmikroskopie +353 -0
  241. data/lib/studium/exam_topics/elektrophorese +88 -0
  242. data/lib/studium/exam_topics/elektrotechnik +8 -0
  243. data/lib/studium/exam_topics/elisa +54 -0
  244. data/lib/studium/exam_topics/embryologie_und_entwicklung +541 -0
  245. data/lib/studium/exam_topics/endospores_and_spores +92 -0
  246. data/lib/studium/exam_topics/enzymes_and_cofactors +327 -0
  247. data/lib/studium/exam_topics/epigenetik +177 -0
  248. data/lib/studium/exam_topics/ethik +125 -0
  249. data/lib/studium/exam_topics/evolution_and_evolutionary_genetics +323 -0
  250. data/lib/studium/exam_topics/excel +7 -0
  251. data/lib/studium/exam_topics/fish +19 -0
  252. data/lib/studium/exam_topics/fluorescence_microscopy +7 -0
  253. data/lib/studium/exam_topics/food_microbiology_and_food_biotechnology +17 -0
  254. data/lib/studium/exam_topics/forensik +11 -0
  255. data/lib/studium/exam_topics/forstwirtschaft +52 -0
  256. data/lib/studium/exam_topics/fortgeschrittene_genetik +427 -0
  257. data/lib/studium/exam_topics/fortgeschrittene_gentechnik +189 -0
  258. data/lib/studium/exam_topics/fortgeschrittene_physik +6 -0
  259. data/lib/studium/exam_topics/fungi +78 -0
  260. data/lib/studium/exam_topics/genetische_krankheiten +150 -0
  261. data/lib/studium/exam_topics/genexpression +1008 -0
  262. data/lib/studium/exam_topics/genomics_and_metagenomics +205 -0
  263. data/lib/studium/exam_topics/gentechnik_und_praktische_biochemie +863 -0
  264. data/lib/studium/exam_topics/geochemistry +66 -0
  265. data/lib/studium/exam_topics/geography +5 -0
  266. data/lib/studium/exam_topics/geologie_und_mineralogie +610 -0
  267. data/lib/studium/exam_topics/geschichte +94 -0
  268. data/lib/studium/exam_topics/gluconeogenesis +34 -0
  269. data/lib/studium/exam_topics/glycolysis +94 -0
  270. data/lib/studium/exam_topics/glykomik +42 -0
  271. data/lib/studium/exam_topics/glyoxylatzyklus +23 -0
  272. data/lib/studium/exam_topics/grassland_cultivation +32 -0
  273. data/lib/studium/exam_topics/hormone +122 -0
  274. data/lib/studium/exam_topics/html +7 -0
  275. data/lib/studium/exam_topics/human_ecology +8 -0
  276. data/lib/studium/exam_topics/hygiene +191 -0
  277. data/lib/studium/exam_topics/imaging_and_microscopy +224 -0
  278. data/lib/studium/exam_topics/immunanalytik +88 -0
  279. data/lib/studium/exam_topics/immunologie +888 -0
  280. data/lib/studium/exam_topics/informatik +95 -0
  281. data/lib/studium/exam_topics/innate_immunity +20 -0
  282. data/lib/studium/exam_topics/insekten +30 -0
  283. data/lib/studium/exam_topics/insulin_and_diabetes +55 -0
  284. data/lib/studium/exam_topics/java +439 -0
  285. data/lib/studium/exam_topics/javascript +10 -0
  286. data/lib/studium/exam_topics/klima +6 -0
  287. data/lib/studium/exam_topics/landtechnik +27 -0
  288. data/lib/studium/exam_topics/lebensmittel +206 -0
  289. data/lib/studium/exam_topics/lebensmitteltechnologie +16 -0
  290. data/lib/studium/exam_topics/linux +5 -0
  291. data/lib/studium/exam_topics/lipids +95 -0
  292. data/lib/studium/exam_topics/macroeconomics +39 -0
  293. data/lib/studium/exam_topics/mathematics +173 -0
  294. data/lib/studium/exam_topics/medizin_und_biomedizinische_technik +250 -0
  295. data/lib/studium/exam_topics/medizinische_chemie_und_pharmazie +397 -0
  296. data/lib/studium/exam_topics/messtechnik_und_regeltechnik +104 -0
  297. data/lib/studium/exam_topics/metabolismus +431 -0
  298. data/lib/studium/exam_topics/microbial_ecology +35 -0
  299. data/lib/studium/exam_topics/mikrobielle_lebensgemeinschaften +34 -0
  300. data/lib/studium/exam_topics/mikrobielle_physiologie +147 -0
  301. data/lib/studium/exam_topics/mixed +289 -0
  302. data/lib/studium/exam_topics/molecular_biology_of_plants +234 -0
  303. data/lib/studium/exam_topics/molekulare_medizin +129 -0
  304. data/lib/studium/exam_topics/nanotechnologie +302 -0
  305. data/lib/studium/exam_topics/nature_conservation_and_biodiversity +165 -0
  306. data/lib/studium/exam_topics/naturstoffe +9 -0
  307. data/lib/studium/exam_topics/netzwerke +32 -0
  308. data/lib/studium/exam_topics/neurobiology +266 -0
  309. data/lib/studium/exam_topics/nucleotide_sequencing +30 -0
  310. data/lib/studium/exam_topics/object_oriented_modeling +14 -0
  311. data/lib/studium/exam_topics/obstbau +234 -0
  312. data/lib/studium/exam_topics/organische_chemie +1007 -0
  313. data/lib/studium/exam_topics/organische_chemie_2 +72 -0
  314. data/lib/studium/exam_topics/paleobiology +33 -0
  315. data/lib/studium/exam_topics/parasitic_diseases_and_molecular_infection_biology +335 -0
  316. data/lib/studium/exam_topics/patent_law +55 -0
  317. data/lib/studium/exam_topics/pathologie +713 -0
  318. data/lib/studium/exam_topics/pcr +133 -0
  319. data/lib/studium/exam_topics/peroxisomes_glycosomes_and_lysosomes +54 -0
  320. data/lib/studium/exam_topics/pflanzenanatomie +239 -0
  321. data/lib/studium/exam_topics/pflanzenbau +24 -0
  322. data/lib/studium/exam_topics/pflanzenschutz +35 -0
  323. data/lib/studium/exam_topics/pflanzenwissenschaften +1010 -0
  324. data/lib/studium/exam_topics/pharmaceutical_biotechnology +250 -0
  325. data/lib/studium/exam_topics/physik +326 -0
  326. data/lib/studium/exam_topics/physikalische_chemie +85 -0
  327. data/lib/studium/exam_topics/physiology_and_histology +485 -0
  328. data/lib/studium/exam_topics/phytochemie +33 -0
  329. data/lib/studium/exam_topics/plant_biotechnology +127 -0
  330. data/lib/studium/exam_topics/plant_breeding +64 -0
  331. data/lib/studium/exam_topics/plant_development +50 -0
  332. data/lib/studium/exam_topics/populationsgenetik +136 -0
  333. data/lib/studium/exam_topics/posttranslationale_modifikation_von_proteinen +186 -0
  334. data/lib/studium/exam_topics/projektmanagement +218 -0
  335. data/lib/studium/exam_topics/prokaryote_genetics +470 -0
  336. data/lib/studium/exam_topics/proteomik +38 -0
  337. data/lib/studium/exam_topics/prozesstechnik +95 -0
  338. data/lib/studium/exam_topics/psychologie +9 -0
  339. data/lib/studium/exam_topics/python +350 -0
  340. data/lib/studium/exam_topics/quality_management +241 -0
  341. data/lib/studium/exam_topics/rechtsgrundlagen +114 -0
  342. data/lib/studium/exam_topics/research_topics_in_immunobiology +42 -0
  343. data/lib/studium/exam_topics/rna_and_dna +360 -0
  344. data/lib/studium/exam_topics/rna_seq +11 -0
  345. data/lib/studium/exam_topics/ruby +126 -0
  346. data/lib/studium/exam_topics/ruby_on_rails +62 -0
  347. data/lib/studium/exam_topics/scientific_writing_and_publishing +38 -0
  348. data/lib/studium/exam_topics/semisynthese_von_proteinen_und_nukleotiden +120 -0
  349. data/lib/studium/exam_topics/sexualbiologie +59 -0
  350. data/lib/studium/exam_topics/signal_transduction_and_laser_systems +126 -0
  351. data/lib/studium/exam_topics/splicing_exons_and_introns +57 -0
  352. data/lib/studium/exam_topics/statistik +202 -0
  353. data/lib/studium/exam_topics/stemcells +87 -0
  354. data/lib/studium/exam_topics/structural_bioinformatics +54 -0
  355. data/lib/studium/exam_topics/strukturbiologie +319 -0
  356. data/lib/studium/exam_topics/system_biology_and_synthetic_biology +87 -0
  357. data/lib/studium/exam_topics/systematische_zoologie +430 -0
  358. data/lib/studium/exam_topics/technical_ecology +144 -0
  359. data/lib/studium/exam_topics/technische_chemie +193 -0
  360. data/lib/studium/exam_topics/technische_grundlagen_der_informatik +22 -0
  361. data/lib/studium/exam_topics/technische_mikrobiologie +403 -0
  362. data/lib/studium/exam_topics/technisches_zeichnen +5 -0
  363. data/lib/studium/exam_topics/the_bacterial_cell_wall +86 -0
  364. data/lib/studium/exam_topics/the_c_plus_plus_programming_language +488 -0
  365. data/lib/studium/exam_topics/the_c_programming_language +128 -0
  366. data/lib/studium/exam_topics/the_cellcycle +65 -0
  367. data/lib/studium/exam_topics/the_european_union +119 -0
  368. data/lib/studium/exam_topics/the_interferon_system +32 -0
  369. data/lib/studium/exam_topics/the_microbiome +163 -0
  370. data/lib/studium/exam_topics/the_universe +6 -0
  371. data/lib/studium/exam_topics/theoretische_chemie +5 -0
  372. data/lib/studium/exam_topics/theoretische_informatik +157 -0
  373. data/lib/studium/exam_topics/tierzucht +94 -0
  374. data/lib/studium/exam_topics/toxikologie +403 -0
  375. data/lib/studium/exam_topics/transcription +25 -0
  376. data/lib/studium/exam_topics/translation_ribosomes_and_translational_control +138 -0
  377. data/lib/studium/exam_topics/umweltbiotechnologie +58 -0
  378. data/lib/studium/exam_topics/umweltchemie +232 -0
  379. data/lib/studium/exam_topics/urbanism_and_traffic +19 -0
  380. data/lib/studium/exam_topics/vaccines_and_vaccination +234 -0
  381. data/lib/studium/exam_topics/vectors_and_gene_therapy +237 -0
  382. data/lib/studium/exam_topics/verfahrenstechnik +32 -0
  383. data/lib/studium/exam_topics/veterinary_medicine +10 -0
  384. data/lib/studium/exam_topics/vitamine +19 -0
  385. data/lib/studium/exam_topics/wasserkunde +141 -0
  386. data/lib/studium/exam_topics/weinbau +59 -0
  387. data/lib/studium/exam_topics/wissenschaft +17 -0
  388. data/lib/studium/exam_topics/yeast +97 -0
  389. data/lib/studium/exam_topics/zoologie +329 -0
  390. data/lib/studium/exams/afterburn.rb +259 -0
  391. data/lib/studium/exams/ask_exam_from_the_upcoming_exams_pool.rb +166 -0
  392. data/lib/studium/exams/ask_exam_question/answer.rb +103 -0
  393. data/lib/studium/exams/ask_exam_question/ask_exam_question.rb +127 -0
  394. data/lib/studium/exams/ask_exam_question/class_methods.rb +32 -0
  395. data/lib/studium/exams/ask_exam_question/constants.rb +94 -0
  396. data/lib/studium/exams/ask_exam_question/help.rb +55 -0
  397. data/lib/studium/exams/ask_exam_question/initialize.rb +61 -0
  398. data/lib/studium/exams/ask_exam_question/menu.rb +306 -0
  399. data/lib/studium/exams/ask_exam_question/misc.rb +846 -0
  400. data/lib/studium/exams/ask_exam_question/question.rb +66 -0
  401. data/lib/studium/exams/ask_exam_question/reset.rb +69 -0
  402. data/lib/studium/exams/ask_exam_question/run.rb +37 -0
  403. data/lib/studium/exams/ask_exam_question/show.rb +257 -0
  404. data/lib/studium/exams/ask_exam_topic_question.rb +120 -0
  405. data/lib/studium/exams/ask_question_from_alias.rb +138 -0
  406. data/lib/studium/exams/ask_question_from_any_of_the_still_missing_lectures.rb +142 -0
  407. data/lib/studium/exams/ask_question_from_grouped_themes.rb +141 -0
  408. data/lib/studium/exams/ask_question_from_last_topic.rb +108 -0
  409. data/lib/studium/exams/autoinclude.rb +7 -0
  410. data/lib/studium/exams/best_months.rb +79 -0
  411. data/lib/studium/exams/class.rb +125 -0
  412. data/lib/studium/exams/csv/create_csv_passed_exams_file.rb +219 -0
  413. data/lib/studium/exams/cycle.rb +289 -0
  414. data/lib/studium/exams/dataset.rb +88 -0
  415. data/lib/studium/exams/exam_registration_at/constants.rb +49 -0
  416. data/lib/studium/exams/exam_registration_at/exam_registration_at.rb +247 -0
  417. data/lib/studium/exams/exam_registration_at/help.rb +46 -0
  418. data/lib/studium/exams/exam_registration_at/menu.rb +82 -0
  419. data/lib/studium/exams/exam_registration_at/report.rb +108 -0
  420. data/lib/studium/exams/exam_registration_at/reset.rb +49 -0
  421. data/lib/studium/exams/exam_statistics_from_this_file/exam_statistics_from_this_file.rb +137 -0
  422. data/lib/studium/exams/exam_topics.rb +205 -0
  423. data/lib/studium/exams/exams.rb +18 -0
  424. data/lib/studium/exams/exams_this_week.rb +177 -0
  425. data/lib/studium/exams/fix_exam_dates.rb +144 -0
  426. data/lib/studium/exams/last_exams.rb +369 -0
  427. data/lib/studium/exams/lectures_without_exam_entry.rb +164 -0
  428. data/lib/studium/exams/mandatory_continuous_assessment/compare.rb +144 -0
  429. data/lib/studium/exams/mandatory_continuous_assessment/constants.rb +18 -0
  430. data/lib/studium/exams/mandatory_continuous_assessment/help.rb +92 -0
  431. data/lib/studium/exams/mandatory_continuous_assessment/initialize.rb +46 -0
  432. data/lib/studium/exams/mandatory_continuous_assessment/mandatory_continuous_assessment.rb +1098 -0
  433. data/lib/studium/exams/mandatory_continuous_assessment/menu.rb +132 -0
  434. data/lib/studium/exams/mandatory_continuous_assessment/misc.rb +61 -0
  435. data/lib/studium/exams/mandatory_continuous_assessment/reset.rb +60 -0
  436. data/lib/studium/exams/mandatory_continuous_assessment/run.rb +33 -0
  437. data/lib/studium/exams/mandatory_continuous_assessment/set_title_of_the_curriculum.rb +180 -0
  438. data/lib/studium/exams/mandatory_continuous_assessment/show_and_report.rb +139 -0
  439. data/lib/studium/exams/move_the_last_exam_question_to_the_top_of_the_file/move_the_last_exam_question_to_the_top_of_the_file.rb +119 -0
  440. data/lib/studium/exams/n_exams_in_these_topics.rb +409 -0
  441. data/lib/studium/exams/new_questions_per_year.rb +136 -0
  442. data/lib/studium/exams/next_exam.rb +117 -0
  443. data/lib/studium/exams/next_exams.rb +375 -0
  444. data/lib/studium/exams/open_exam_associated_url.rb +149 -0
  445. data/lib/studium/exams/open_last_exam_question_asked_file/initialize.rb +29 -0
  446. data/lib/studium/exams/open_last_exam_question_asked_file/open_last_exam_question_asked_file.rb +120 -0
  447. data/lib/studium/exams/parse_question_answer.rb +315 -0
  448. data/lib/studium/exams/passed_exams.rb +46 -0
  449. data/lib/studium/exams/pruefung.rb +288 -0
  450. data/lib/studium/exams/push_solved_questions_on_top.rb +203 -0
  451. data/lib/studium/exams/question_answer/constants.rb +46 -0
  452. data/lib/studium/exams/question_answer/question_answer.rb +587 -0
  453. data/lib/studium/exams/questions_solved_from_day_to_day.rb +355 -0
  454. data/lib/studium/exams/repeat_last_question.rb +77 -0
  455. data/lib/studium/exams/show_all_passed_exams_of_this_university.rb +248 -0
  456. data/lib/studium/exams/show_backlog_of_exams.rb +140 -0
  457. data/lib/studium/exams/show_next_exams_for.rb +140 -0
  458. data/lib/studium/exams/show_themes/constants.rb +33 -0
  459. data/lib/studium/exams/show_themes/menu.rb +55 -0
  460. data/lib/studium/exams/show_themes/reset.rb +60 -0
  461. data/lib/studium/exams/show_themes/show_themes.rb +527 -0
  462. data/lib/studium/exams/show_upcoming_exams/consider_autogenerating_exam_aliases.rb +170 -0
  463. data/lib/studium/exams/show_upcoming_exams/constants.rb +82 -0
  464. data/lib/studium/exams/show_upcoming_exams/help.rb +33 -0
  465. data/lib/studium/exams/show_upcoming_exams/initialize.rb +71 -0
  466. data/lib/studium/exams/show_upcoming_exams/menu.rb +53 -0
  467. data/lib/studium/exams/show_upcoming_exams/report.rb +195 -0
  468. data/lib/studium/exams/show_upcoming_exams/reset.rb +38 -0
  469. data/lib/studium/exams/show_upcoming_exams/run.rb +20 -0
  470. data/lib/studium/exams/show_upcoming_exams/show_upcoming_exams.rb +488 -0
  471. data/lib/studium/exams/solve_all_questions_from_this_topic.rb +123 -0
  472. data/lib/studium/exams/solved/constants.rb +37 -0
  473. data/lib/studium/exams/solved/help.rb +23 -0
  474. data/lib/studium/exams/solved/menu.rb +36 -0
  475. data/lib/studium/exams/solved/solved.rb +316 -0
  476. data/lib/studium/exams/steop.rb +91 -0
  477. data/lib/studium/exams/unsolve_all_questions_from_this_topic.rb +181 -0
  478. data/lib/studium/exams/upcoming_exams/constants.rb +20 -0
  479. data/lib/studium/exams/upcoming_exams/help.rb +38 -0
  480. data/lib/studium/exams/upcoming_exams/initialize.rb +27 -0
  481. data/lib/studium/exams/upcoming_exams/menu.rb +79 -0
  482. data/lib/studium/exams/upcoming_exams/misc.rb +364 -0
  483. data/lib/studium/exams/upcoming_exams/reset.rb +37 -0
  484. data/lib/studium/exams/upcoming_exams/run.rb +25 -0
  485. data/lib/studium/exams/upcoming_exams/upcoming_exams.rb +32 -0
  486. data/lib/studium/exams/upcoming_exams_at_the_boku/constants.rb +20 -0
  487. data/lib/studium/exams/upcoming_exams_at_the_boku/html.rb +66 -0
  488. data/lib/studium/exams/upcoming_exams_at_the_boku/upcoming_exams_at_the_boku.rb +186 -0
  489. data/lib/studium/exams/upcoming_exams_dataset.rb +243 -0
  490. data/lib/studium/exams/upload_exam_topics.rb +349 -0
  491. data/lib/studium/exams_per_month/colours.rb +81 -0
  492. data/lib/studium/exams_per_month/constants.rb +69 -0
  493. data/lib/studium/exams_per_month/dataset.rb +64 -0
  494. data/lib/studium/exams_per_month/exams_per_month.rb +303 -0
  495. data/lib/studium/exams_per_month/help.rb +72 -0
  496. data/lib/studium/exams_per_month/initialize.rb +39 -0
  497. data/lib/studium/exams_per_month/menu.rb +254 -0
  498. data/lib/studium/exams_per_month/open.rb +134 -0
  499. data/lib/studium/exams_per_month/requires.rb +13 -0
  500. data/lib/studium/exams_per_month/reset.rb +64 -0
  501. data/lib/studium/exams_per_month/run.rb +18 -0
  502. data/lib/studium/exams_per_month/sanitize.rb +129 -0
  503. data/lib/studium/exams_per_month/show_and_report.rb +1278 -0
  504. data/lib/studium/flashcards/flashcards.rb +95 -0
  505. data/lib/studium/graphviz/README.md +4 -0
  506. data/lib/studium/graphviz/bachelor_vector_based_strategies.dot +160 -0
  507. data/lib/studium/graphviz/master_vector_based_strategies.dot +46 -0
  508. data/lib/studium/gui/gtk2/constants.rb +52 -0
  509. data/lib/studium/gui/gtk2/exam_card.rb +199 -0
  510. data/lib/studium/gui/gtk2/flip_card.rb +8 -0
  511. data/lib/studium/gui/gtk2/frame.rb +314 -0
  512. data/lib/studium/gui/gtk2/main_box.rb +187 -0
  513. data/lib/studium/gui/gtk2/module_methods.rb +58 -0
  514. data/lib/studium/gui/gtk2/require_gtk_files.rb +25 -0
  515. data/lib/studium/gui/gtk2/run.rb +49 -0
  516. data/lib/studium/gui/gtk2/show_curriculum_entries.rb +187 -0
  517. data/lib/studium/gui/gtk2/simple_widget_question_answer.rb +186 -0
  518. data/lib/studium/gui/gtk2/vbox.rb +748 -0
  519. data/lib/studium/gui/gtk3/README.md +1 -0
  520. data/lib/studium/gui/gtk3/studium_panel.rb +54 -0
  521. data/lib/studium/lectures/show_lectures_on_the_commandline/constants.rb +22 -0
  522. data/lib/studium/lectures/show_lectures_on_the_commandline/determine.rb +630 -0
  523. data/lib/studium/lectures/show_lectures_on_the_commandline/help.rb +44 -0
  524. data/lib/studium/lectures/show_lectures_on_the_commandline/html.rb +599 -0
  525. data/lib/studium/lectures/show_lectures_on_the_commandline/initialize.rb +53 -0
  526. data/lib/studium/lectures/show_lectures_on_the_commandline/konsole.rb +32 -0
  527. data/lib/studium/lectures/show_lectures_on_the_commandline/menu.rb +466 -0
  528. data/lib/studium/lectures/show_lectures_on_the_commandline/misc.rb +599 -0
  529. data/lib/studium/lectures/show_lectures_on_the_commandline/reset.rb +120 -0
  530. data/lib/studium/lectures/show_lectures_on_the_commandline/run.rb +44 -0
  531. data/lib/studium/lectures/show_lectures_on_the_commandline/show.rb +106 -0
  532. data/lib/studium/lectures/show_lectures_on_the_commandline/show_lectures_on_the_commandline.rb +490 -0
  533. data/lib/studium/lectures/show_lectures_on_the_commandline/sorted_individual_curricula.rb +117 -0
  534. data/lib/studium/log/README.md +2 -0
  535. data/lib/studium/log/store_last_question_asked_into_file.rb +152 -0
  536. data/lib/studium/misc/return_remote_homepage_of_this_lecture.rb +8643 -0
  537. data/lib/studium/misc/return_remote_moodle_link_of_this_lecture.rb +1308 -0
  538. data/lib/studium/parsers/README.md +2 -0
  539. data/lib/studium/parsers/custom_exam_results_parser.rb +205 -0
  540. data/lib/studium/parsers/parse_lva_dates.rb +200 -0
  541. data/lib/studium/pdf/README.md +2 -0
  542. data/lib/studium/pdf/create_pdf_file_for_this_exam_topic.rb +258 -0
  543. data/lib/studium/project/project.rb +82 -0
  544. data/lib/studium/requires/base_class_and_common_popular_requires.rb +8 -0
  545. data/lib/studium/requires/common_external_requires.rb +10 -0
  546. data/lib/studium/requires/common_popular_requires.rb +43 -0
  547. data/lib/studium/requires/require_class_exams_solved.rb +7 -0
  548. data/lib/studium/requires/require_ects_scripts.rb +22 -0
  549. data/lib/studium/requires/require_encoding.rb +7 -0
  550. data/lib/studium/requires/require_exam_scripts.rb +32 -0
  551. data/lib/studium/requires/require_the_proper_yaml_engine.rb +7 -0
  552. data/lib/studium/requires/require_the_whole_studium_project.rb +53 -0
  553. data/lib/studium/requires/require_toplevel_methods.rb +25 -0
  554. data/lib/studium/requires/require_upcoming_exams.rb +7 -0
  555. data/lib/studium/requires/require_utility_scripts.rb +23 -0
  556. data/lib/studium/requires/with_GUI.rb +11 -0
  557. data/lib/studium/requires/www_mode.rb +17 -0
  558. data/lib/studium/sanitize/README.md +7 -0
  559. data/lib/studium/sanitize/sanitize_this_string_containing_the_lva_dates.rb +79 -0
  560. data/lib/studium/sinatra/app.rb +257 -0
  561. data/lib/studium/sinatra/misc.rb +40 -0
  562. data/lib/studium/statistics/README.md +4 -0
  563. data/lib/studium/statistics/curriculum_comparer.rb +344 -0
  564. data/lib/studium/statistics/determine_exam_statistics_from_this_file.rb +152 -0
  565. data/lib/studium/statistics/max_stats.rb +167 -0
  566. data/lib/studium/statistics/report_how_many_ects_points_per_curriculum_were_completed.rb +166 -0
  567. data/lib/studium/statistics/report_how_many_exam_questions_were_answered.rb +476 -0
  568. data/lib/studium/statistics/top_stats.rb +144 -0
  569. data/lib/studium/steop/README.md +4 -0
  570. data/lib/studium/steop/show_all_steop_lectures.rb +100 -0
  571. data/lib/studium/steop/steop_lectures_in_this_curriculum.rb +297 -0
  572. data/lib/studium/steop/steop_lva_dates.rb +116 -0
  573. data/lib/studium/toplevel_methods/all_passed_exams.rb +33 -0
  574. data/lib/studium/toplevel_methods/already_solved_this_lecture.rb +94 -0
  575. data/lib/studium/toplevel_methods/already_solved_this_lva_number.rb +226 -0
  576. data/lib/studium/toplevel_methods/available_curricula.rb +71 -0
  577. data/lib/studium/toplevel_methods/available_topics.rb +146 -0
  578. data/lib/studium/toplevel_methods/average_grade.rb +130 -0
  579. data/lib/studium/toplevel_methods/backup_this_exam_file.rb +35 -0
  580. data/lib/studium/toplevel_methods/calculate_pr/303/274fungsimmanente_lectures_from_this_file.rb +55 -0
  581. data/lib/studium/toplevel_methods/cd.rb +25 -0
  582. data/lib/studium/toplevel_methods/cd_stud.rb +133 -0
  583. data/lib/studium/toplevel_methods/copy_file.rb +22 -0
  584. data/lib/studium/toplevel_methods/copy_lecture_information_file_to_default_location.rb +52 -0
  585. data/lib/studium/toplevel_methods/create_file.rb +22 -0
  586. data/lib/studium/toplevel_methods/current_exams.rb +20 -0
  587. data/lib/studium/toplevel_methods/datum.rb +16 -0
  588. data/lib/studium/toplevel_methods/determine_local_directory_of_this_lecture.rb +72 -0
  589. data/lib/studium/toplevel_methods/does_this_course_require_mandatory_presence.rb +45 -0
  590. data/lib/studium/toplevel_methods/download_exam_dataset.rb +108 -0
  591. data/lib/studium/toplevel_methods/download_exam_topics.rb +62 -0
  592. data/lib/studium/toplevel_methods/e.rb +16 -0
  593. data/lib/studium/toplevel_methods/ects_from_lectures.rb +249 -0
  594. data/lib/studium/toplevel_methods/editor.rb +64 -0
  595. data/lib/studium/toplevel_methods/esystem.rb +20 -0
  596. data/lib/studium/toplevel_methods/exams_dataset.rb +45 -0
  597. data/lib/studium/toplevel_methods/file_cd_aliases.rb +26 -0
  598. data/lib/studium/toplevel_methods/file_read_with_proper_encoding.rb +28 -0
  599. data/lib/studium/toplevel_methods/filter_away_invalid_questions.rb +77 -0
  600. data/lib/studium/toplevel_methods/find_corresponding_exam_title.rb +707 -0
  601. data/lib/studium/toplevel_methods/find_corresponding_exam_topic.rb +1834 -0
  602. data/lib/studium/toplevel_methods/from_curriculum_id_to_university.rb +47 -0
  603. data/lib/studium/toplevel_methods/frozen.rb +32 -0
  604. data/lib/studium/toplevel_methods/handle_archive_of_the_exam_questions.rb +136 -0
  605. data/lib/studium/toplevel_methods/has_a_bachelor_curriculum.rb +24 -0
  606. data/lib/studium/toplevel_methods/has_a_master_curriculum.rb +69 -0
  607. data/lib/studium/toplevel_methods/has_this_lecture_been_already_passed_but_the_id_was_changed_lateron.rb +39 -0
  608. data/lib/studium/toplevel_methods/has_this_module_been_completed.rb +206 -0
  609. data/lib/studium/toplevel_methods/html_log_dir.rb +2 -0
  610. data/lib/studium/toplevel_methods/install_the_project_on_the_given_hostsystem.rb +33 -0
  611. data/lib/studium/toplevel_methods/is_on_roebe.rb +19 -0
  612. data/lib/studium/toplevel_methods/is_this_exam_topic_included.rb +37 -0
  613. data/lib/studium/toplevel_methods/is_this_homepage_registered.rb +31 -0
  614. data/lib/studium/toplevel_methods/is_this_lecture_a_practical_course.rb +100 -0
  615. data/lib/studium/toplevel_methods/is_this_lecture_part_of_the_vector_curriculum.rb +110 -0
  616. data/lib/studium/toplevel_methods/is_this_lecture_registered_in_upcoming_exams.rb +43 -0
  617. data/lib/studium/toplevel_methods/ja_oder_nein.rb +21 -0
  618. data/lib/studium/toplevel_methods/last_saved_into_which_file.rb +29 -0
  619. data/lib/studium/toplevel_methods/lecture_information.rb +22 -0
  620. data/lib/studium/toplevel_methods/lectures_without_attribution_to_any_curriculum.rb +40 -0
  621. data/lib/studium/toplevel_methods/main_dataset.rb +52 -0
  622. data/lib/studium/toplevel_methods/map_curriculum_number_to_curriculum_name.rb +96 -0
  623. data/lib/studium/toplevel_methods/map_meta_exam_theme_to_corresponding_exam_themes.rb +162 -0
  624. data/lib/studium/toplevel_methods/misc.rb +187 -0
  625. data/lib/studium/toplevel_methods/missing_priority_entry.rb +42 -0
  626. data/lib/studium/toplevel_methods/mkdir.rb +21 -0
  627. data/lib/studium/toplevel_methods/module_methods.rb +23 -0
  628. data/lib/studium/toplevel_methods/n_questions_available.rb +124 -0
  629. data/lib/studium/toplevel_methods/n_topics_available.rb +63 -0
  630. data/lib/studium/toplevel_methods/name_of_this_curriculum.rb +38 -0
  631. data/lib/studium/toplevel_methods/names_of_all_solved_exams.rb +71 -0
  632. data/lib/studium/toplevel_methods/no_file_exists_at.rb +19 -0
  633. data/lib/studium/toplevel_methods/note_down_the_start_time_and_how_many_exams_have_been_already_solved.rb +70 -0
  634. data/lib/studium/toplevel_methods/opnn.rb +22 -0
  635. data/lib/studium/toplevel_methods/passed_this_exam_on.rb +104 -0
  636. data/lib/studium/toplevel_methods/pristine.rb +59 -0
  637. data/lib/studium/toplevel_methods/read_dataset_from_a_curriculum_file.rb +133 -0
  638. data/lib/studium/toplevel_methods/read_delay_between_questions_from_file.rb +33 -0
  639. data/lib/studium/toplevel_methods/read_this_file_through_default_encoding.rb +26 -0
  640. data/lib/studium/toplevel_methods/regex_for_pwd_stud.rb +18 -0
  641. data/lib/studium/toplevel_methods/registered_for_this_exam.rb +62 -0
  642. data/lib/studium/toplevel_methods/remote_url.rb +57 -0
  643. data/lib/studium/toplevel_methods/remove_comments.rb +26 -0
  644. data/lib/studium/toplevel_methods/remove_exam_topics_that_were_already_answered.rb +27 -0
  645. data/lib/studium/toplevel_methods/remove_tags.rb +17 -0
  646. data/lib/studium/toplevel_methods/remove_weekday_names.rb +75 -0
  647. data/lib/studium/toplevel_methods/report_all_lectures_matching_this_lecture_type.rb +44 -0
  648. data/lib/studium/toplevel_methods/report_attributed_lectures_to_universities.rb +30 -0
  649. data/lib/studium/toplevel_methods/report_how_many_exam_questions_were_already_solved.rb +137 -0
  650. data/lib/studium/toplevel_methods/report_n_ects_per_university.rb +63 -0
  651. data/lib/studium/toplevel_methods/report_n_entries_in_the_file_lecture_information.rb +35 -0
  652. data/lib/studium/toplevel_methods/report_nquestions_of.rb +96 -0
  653. data/lib/studium/toplevel_methods/report_solved_topics.rb +55 -0
  654. data/lib/studium/toplevel_methods/return_all_exams_on_this_day.rb +66 -0
  655. data/lib/studium/toplevel_methods/return_curriculum_of_this_lva_number.rb +79 -0
  656. data/lib/studium/toplevel_methods/return_dataset_for_this_exam_topic.rb +41 -0
  657. data/lib/studium/toplevel_methods/return_dataset_from_this_curriculum_file.rb +150 -0
  658. data/lib/studium/toplevel_methods/return_directory_for.rb +66 -0
  659. data/lib/studium/toplevel_methods/return_div_timetable_of_upcoming_exams.rb +489 -0
  660. data/lib/studium/toplevel_methods/return_ects_from_this_lecture_stored_in_the_file_lecture_information.rb +194 -0
  661. data/lib/studium/toplevel_methods/return_hash_of_already_solved_lectures.rb +38 -0
  662. data/lib/studium/toplevel_methods/return_local_path_of_this_pwdstud.rb +61 -0
  663. data/lib/studium/toplevel_methods/return_location_to_this_exam_topic.rb +28 -0
  664. data/lib/studium/toplevel_methods/return_lva_number_of_this_curriculum.rb +74 -0
  665. data/lib/studium/toplevel_methods/return_lva_number_of_this_lecture.rb +486 -0
  666. data/lib/studium/toplevel_methods/return_lva_number_of_this_lecture_based_on_file_lecture_information.rb +58 -0
  667. data/lib/studium/toplevel_methods/return_n_percent_solved_from_this_topic.rb +75 -0
  668. data/lib/studium/toplevel_methods/return_n_questions_were_answered_for_this_topic.rb +37 -0
  669. data/lib/studium/toplevel_methods/return_proper_university_image.rb +79 -0
  670. data/lib/studium/toplevel_methods/return_question_answer_string_from_this_topic.rb +51 -0
  671. data/lib/studium/toplevel_methods/return_sanitized_dataset_from_the_file_lecture_information.rb +124 -0
  672. data/lib/studium/toplevel_methods/return_theme_of_the_next_upcoming_exam.rb +36 -0
  673. data/lib/studium/toplevel_methods/return_this_curriculum_as_a_string.rb +26 -0
  674. data/lib/studium/toplevel_methods/return_title_from_this_curriculum_file.rb +86 -0
  675. data/lib/studium/toplevel_methods/rinstall2.rb +30 -0
  676. data/lib/studium/toplevel_methods/rti_conflict.rb +29 -0
  677. data/lib/studium/toplevel_methods/runmode.rb +81 -0
  678. data/lib/studium/toplevel_methods/sanitize_this_theme_topic.rb +120 -0
  679. data/lib/studium/toplevel_methods/sanitized_dataset_from_file_passed_exams_per_month.rb +44 -0
  680. data/lib/studium/toplevel_methods/save_all_registered_upcoming_exams.rb +60 -0
  681. data/lib/studium/toplevel_methods/save_file.rb +54 -0
  682. data/lib/studium/toplevel_methods/save_this_delay_between_questions_and_answers.rb +43 -0
  683. data/lib/studium/toplevel_methods/set_last_file_for_exam_questions.rb +64 -0
  684. data/lib/studium/toplevel_methods/set_this_cd_alias_to.rb +83 -0
  685. data/lib/studium/toplevel_methods/show_exam_statistics.rb +60 -0
  686. data/lib/studium/toplevel_methods/show_important_files.rb +34 -0
  687. data/lib/studium/toplevel_methods/show_passed_ects_in_the_individual_bachelor_and_master_curricula.rb +81 -0
  688. data/lib/studium/toplevel_methods/show_passed_exams_having_this_grade.rb +28 -0
  689. data/lib/studium/toplevel_methods/spacer.rb +16 -0
  690. data/lib/studium/toplevel_methods/time.rb +123 -0
  691. data/lib/studium/toplevel_methods/total_ects_points_passed.rb +72 -0
  692. data/lib/studium/toplevel_methods/try_to_guess_the_most_likely_lva_id.rb +57 -0
  693. data/lib/studium/toplevel_methods/try_to_report_exams_that_match_to_this_regexp.rb +82 -0
  694. data/lib/studium/toplevel_methods/try_to_return_the_expanded_name_of_this_lecture.rb +62 -0
  695. data/lib/studium/toplevel_methods/unfinished.rb +50 -0
  696. data/lib/studium/toplevel_methods/url.rb +54 -0
  697. data/lib/studium/toplevel_methods/verbose_truth.rb +18 -0
  698. data/lib/studium/toplevel_methods/when_was_this_lecture_passed.rb +51 -0
  699. data/lib/studium/tu_vienna/README.md +6 -0
  700. data/lib/studium/tu_vienna/tu_ferien.rb +34 -0
  701. data/lib/studium/tu_vienna/tu_/303/266ffnungszeiten.rb +29 -0
  702. data/lib/studium/utility_scripts/ask_random_question.rb +202 -0
  703. data/lib/studium/utility_scripts/attribute_lecture_to_curriculum/attribute_boku_lecture_to_curriculum.rb +390 -0
  704. data/lib/studium/utility_scripts/attribute_lecture_to_curriculum/attribute_lecture_to_curriculum.rb +232 -0
  705. data/lib/studium/utility_scripts/attribute_lectures_to_university/attribute_lectures_to_university.rb +380 -0
  706. data/lib/studium/utility_scripts/audio_stats.rb +176 -0
  707. data/lib/studium/utility_scripts/auto_stud/auto_stud.rb +248 -0
  708. data/lib/studium/utility_scripts/auto_stud/constants.rb +20 -0
  709. data/lib/studium/utility_scripts/auto_stud/initialize.rb +20 -0
  710. data/lib/studium/utility_scripts/auto_stud/misc.rb +25 -0
  711. data/lib/studium/utility_scripts/autopurge_this_lecture_date.rb +116 -0
  712. data/lib/studium/utility_scripts/boku_biotechnology_all_master_lectures.rb +140 -0
  713. data/lib/studium/utility_scripts/calendar/README.md +2 -0
  714. data/lib/studium/utility_scripts/calendar/calendar.rb +240 -0
  715. data/lib/studium/utility_scripts/check_description_of_these_lectures.rb +223 -0
  716. data/lib/studium/utility_scripts/clean_up_lecture_date.rb +149 -0
  717. data/lib/studium/utility_scripts/current_lectures_belonging_to_both_bachelor_and_master_curriculum.rb +102 -0
  718. data/lib/studium/utility_scripts/currently_participating_in_these_lectures.rb +95 -0
  719. data/lib/studium/utility_scripts/display_lecture_url.rb +115 -0
  720. data/lib/studium/utility_scripts/expand_time_range.rb +400 -0
  721. data/lib/studium/utility_scripts/find_duplicate_lectures.rb +113 -0
  722. data/lib/studium/utility_scripts/finished_exams_at_this_university.rb +81 -0
  723. data/lib/studium/utility_scripts/foreign_language_percentage/constants.rb +28 -0
  724. data/lib/studium/utility_scripts/foreign_language_percentage/foreign_language_percentage.rb +156 -0
  725. data/lib/studium/utility_scripts/foreign_language_percentage/initialize.rb +25 -0
  726. data/lib/studium/utility_scripts/foreign_language_percentage/menu.rb +113 -0
  727. data/lib/studium/utility_scripts/foreign_language_percentage/report.rb +62 -0
  728. data/lib/studium/utility_scripts/foreign_language_percentage/reset.rb +57 -0
  729. data/lib/studium/utility_scripts/foreign_language_percentage/run.rb +19 -0
  730. data/lib/studium/utility_scripts/generate_regex.rb +296 -0
  731. data/lib/studium/utility_scripts/generate_regexes_for_the_available_moodle_links/generate_regexes_for_the_available_moodle_links.rb +54 -0
  732. data/lib/studium/utility_scripts/generate_regexes_for_the_registered_lectures/generate_regexes_for_the_registered_lectures.rb +48 -0
  733. data/lib/studium/utility_scripts/generate_spreadsheet.rb +370 -0
  734. data/lib/studium/utility_scripts/holidays.rb +135 -0
  735. data/lib/studium/utility_scripts/lecture_downloader.rb +114 -0
  736. data/lib/studium/utility_scripts/lectures_attributed_to_universities.rb +345 -0
  737. data/lib/studium/utility_scripts/mandatory_lectures_in_this_month.rb +310 -0
  738. data/lib/studium/utility_scripts/name_of_this_lva_id.rb +117 -0
  739. data/lib/studium/utility_scripts/new_stud.rb +320 -0
  740. data/lib/studium/utility_scripts/next_week.rb +111 -0
  741. data/lib/studium/utility_scripts/passed_ects_per_year.rb +172 -0
  742. data/lib/studium/utility_scripts/passed_pr/303/274fungsimmanente_courses/passed_pr/303/274fungsimmanente_courses.rb +172 -0
  743. data/lib/studium/utility_scripts/prepare_individual_curriculum.rb +179 -0
  744. data/lib/studium/utility_scripts/priority.rb +118 -0
  745. data/lib/studium/utility_scripts/priority_points.rb +263 -0
  746. data/lib/studium/utility_scripts/publish_my_exams.rb +185 -0
  747. data/lib/studium/utility_scripts/random_curriculum_creator.rb +173 -0
  748. data/lib/studium/utility_scripts/report_outdated_timetable_entries.rb +145 -0
  749. data/lib/studium/utility_scripts/report_total_amount_of_questions_and_answers_for.rb +114 -0
  750. data/lib/studium/utility_scripts/report_whether_this_lecture_is_registered_in_the_file_lecture_information.rb +120 -0
  751. data/lib/studium/utility_scripts/resolve_practical_courses_date_conflicts/individual_resolve_practical_courses_date_conflicts.rb +255 -0
  752. data/lib/studium/utility_scripts/resolve_practical_courses_date_conflicts/resolve_practical_courses_date_conflicts.rb +278 -0
  753. data/lib/studium/utility_scripts/scrape_remote_university_url.rb +137 -0
  754. data/lib/studium/utility_scripts/semester_schedule_creator/semester_container.rb +155 -0
  755. data/lib/studium/utility_scripts/semester_schedule_creator/semester_schedule_creator.rb +399 -0
  756. data/lib/studium/utility_scripts/semesterplaner.rb +275 -0
  757. data/lib/studium/utility_scripts/show_all_lectures.rb +407 -0
  758. data/lib/studium/utility_scripts/show_all_passed_master_lectures.rb +141 -0
  759. data/lib/studium/utility_scripts/show_conflicting_lva_lectures/constants.rb +56 -0
  760. data/lib/studium/utility_scripts/show_conflicting_lva_lectures/do_report_the_upcoming_exams.rb +60 -0
  761. data/lib/studium/utility_scripts/show_conflicting_lva_lectures/help.rb +48 -0
  762. data/lib/studium/utility_scripts/show_conflicting_lva_lectures/initialize.rb +28 -0
  763. data/lib/studium/utility_scripts/show_conflicting_lva_lectures/menu.rb +54 -0
  764. data/lib/studium/utility_scripts/show_conflicting_lva_lectures/misc.rb +214 -0
  765. data/lib/studium/utility_scripts/show_conflicting_lva_lectures/report.rb +115 -0
  766. data/lib/studium/utility_scripts/show_conflicting_lva_lectures/reset.rb +80 -0
  767. data/lib/studium/utility_scripts/show_conflicting_lva_lectures/run.rb +22 -0
  768. data/lib/studium/utility_scripts/show_conflicting_lva_lectures/show_conflicting_lva_lectures.rb +641 -0
  769. data/lib/studium/utility_scripts/show_descriptions_of_lectures_belonging_to_this_module/constants.rb +28 -0
  770. data/lib/studium/utility_scripts/show_descriptions_of_lectures_belonging_to_this_module/menu.rb +62 -0
  771. data/lib/studium/utility_scripts/show_descriptions_of_lectures_belonging_to_this_module/reset.rb +36 -0
  772. data/lib/studium/utility_scripts/show_descriptions_of_lectures_belonging_to_this_module/run.rb +35 -0
  773. data/lib/studium/utility_scripts/show_descriptions_of_lectures_belonging_to_this_module/show_descriptions_of_lectures_belonging_to_this_module.rb +145 -0
  774. data/lib/studium/utility_scripts/show_lecturers/show_lecturers.rb +164 -0
  775. data/lib/studium/utility_scripts/show_lectures/constants.rb +16 -0
  776. data/lib/studium/utility_scripts/show_lectures/help.rb +34 -0
  777. data/lib/studium/utility_scripts/show_lectures/initialize.rb +23 -0
  778. data/lib/studium/utility_scripts/show_lectures/menu.rb +106 -0
  779. data/lib/studium/utility_scripts/show_lectures/misc.rb +573 -0
  780. data/lib/studium/utility_scripts/show_lectures/reset.rb +92 -0
  781. data/lib/studium/utility_scripts/show_lectures/run.rb +27 -0
  782. data/lib/studium/utility_scripts/show_lectures/show_lectures.rb +48 -0
  783. data/lib/studium/utility_scripts/show_lectures_fitting_to_this_language.rb +129 -0
  784. data/lib/studium/utility_scripts/show_lectures_fitting_to_this_theme.rb +122 -0
  785. data/lib/studium/utility_scripts/show_lectures_of_this_curriculum_as_table/commandline.rb +43 -0
  786. data/lib/studium/utility_scripts/show_lectures_of_this_curriculum_as_table/constants.rb +26 -0
  787. data/lib/studium/utility_scripts/show_lectures_of_this_curriculum_as_table/help.rb +39 -0
  788. data/lib/studium/utility_scripts/show_lectures_of_this_curriculum_as_table/html.rb +95 -0
  789. data/lib/studium/utility_scripts/show_lectures_of_this_curriculum_as_table/initialize.rb +36 -0
  790. data/lib/studium/utility_scripts/show_lectures_of_this_curriculum_as_table/menu.rb +92 -0
  791. data/lib/studium/utility_scripts/show_lectures_of_this_curriculum_as_table/reset.rb +28 -0
  792. data/lib/studium/utility_scripts/show_lectures_of_this_curriculum_as_table/run.rb +21 -0
  793. data/lib/studium/utility_scripts/show_lectures_of_this_curriculum_as_table/show_lectures_of_this_curriculum_as_table.rb +205 -0
  794. data/lib/studium/utility_scripts/show_lectures_on_this_day.rb +152 -0
  795. data/lib/studium/utility_scripts/show_lva_dates_of_this_lecture.rb +175 -0
  796. data/lib/studium/utility_scripts/show_outdated_lva_dates.rb +218 -0
  797. data/lib/studium/utility_scripts/show_solved_english_lectures.rb +139 -0
  798. data/lib/studium/utility_scripts/show_the_associated_lectures_for_the_individual_curriculum.rb +286 -0
  799. data/lib/studium/utility_scripts/studienkennzahl.rb +104 -0
  800. data/lib/studium/utility_scripts/studium_skeleton.rb +221 -0
  801. data/lib/studium/utility_scripts/stundenplan.rb +605 -0
  802. data/lib/studium/utility_scripts/sync_studium_relevant_entries_one_level_downwards.rb +224 -0
  803. data/lib/studium/utility_scripts/ufind.rb +118 -0
  804. data/lib/studium/utility_scripts/upcoming_mandatory_presence_courses/constants.rb +28 -0
  805. data/lib/studium/utility_scripts/upcoming_mandatory_presence_courses/upcoming_mandatory_presence_courses.rb +182 -0
  806. data/lib/studium/utility_scripts/vorbesprechungen.rb +295 -0
  807. data/lib/studium/utility_scripts/week_parser/constants.rb +30 -0
  808. data/lib/studium/utility_scripts/week_parser/help.rb +30 -0
  809. data/lib/studium/utility_scripts/week_parser/menu.rb +56 -0
  810. data/lib/studium/utility_scripts/week_parser/misc.rb +73 -0
  811. data/lib/studium/utility_scripts/week_parser/reset.rb +39 -0
  812. data/lib/studium/utility_scripts/week_parser/run.rb +18 -0
  813. data/lib/studium/utility_scripts/week_parser/show.rb +240 -0
  814. data/lib/studium/utility_scripts/week_parser/week_parser.rb +359 -0
  815. data/lib/studium/utility_scripts/weekday_parser.rb +157 -0
  816. data/lib/studium/utility_scripts/weekly_schedule.rb +217 -0
  817. data/lib/studium/utility_scripts/wochenplanung.rb +275 -0
  818. data/lib/studium/version/version.rb +46 -0
  819. data/lib/studium/www/curricula_displayer.cgi +172 -0
  820. data/lib/studium/www/curriculum_displayer.rb +162 -0
  821. data/lib/studium/www/exams.cgi +50 -0
  822. data/lib/studium/www/statistics.cgi +53 -0
  823. data/lib/studium/yaml/allowed_themes_for_exams.yml +244 -0
  824. data/lib/studium/yaml/array_allowed_entries_for_the_file_lecture_information.yml +64 -0
  825. data/lib/studium/yaml/backlog_of_exams.yml +35 -0
  826. data/lib/studium/yaml/current_exams.yml +19 -0
  827. data/lib/studium/yaml/curricula.yml +530 -0
  828. data/lib/studium/yaml/curricula/README.md +3 -0
  829. data/lib/studium/yaml/curricula/bachelor_agrarwissenschaften_033255.yml +130 -0
  830. data/lib/studium/yaml/curricula/bachelor_biologie_basisblock_033630.yml +65 -0
  831. data/lib/studium/yaml/curricula/bachelor_biologie_botanik_033630.yml +84 -0
  832. data/lib/studium/yaml/curricula/bachelor_biologie_ecology_033630.yml +74 -0
  833. data/lib/studium/yaml/curricula/bachelor_biologie_mikrobiologie_und_genetik_033630.yml +120 -0
  834. data/lib/studium/yaml/curricula/bachelor_biologie_molekulare_biologie_033630.yml +104 -0
  835. data/lib/studium/yaml/curricula/bachelor_biologie_zoologie_033630.yml +87 -0
  836. data/lib/studium/yaml/curricula/bachelor_chemie_033662.yml +164 -0
  837. data/lib/studium/yaml/curricula/bachelor_dummy_curriculum.yml +135 -0
  838. data/lib/studium/yaml/curricula/bachelor_elektrotechnik_und_informationstechnik_033235.yml +13 -0
  839. data/lib/studium/yaml/curricula/bachelor_forstwirtschaft_033225.yml +105 -0
  840. data/lib/studium/yaml/curricula/bachelor_informatik_033521.yml +130 -0
  841. data/lib/studium/yaml/curricula/bachelor_informatik_und_molekulare_biologie.yml +1144 -0
  842. data/lib/studium/yaml/curricula/bachelor_ktww_033231.yml +84 -0
  843. data/lib/studium/yaml/curricula/bachelor_lmbt_033217.yml +108 -0
  844. data/lib/studium/yaml/curricula/bachelor_medizinische_informatik_033533.yml +200 -0
  845. data/lib/studium/yaml/curricula/bachelor_molekularbiologie_033665.yml +93 -0
  846. data/lib/studium/yaml/curricula/bachelor_nutrition_science_033638.yml +117 -0
  847. data/lib/studium/yaml/curricula/bachelor_pharmazie_033305.yml +170 -0
  848. data/lib/studium/yaml/curricula/bachelor_technische_chemie_033290.yml +129 -0
  849. data/lib/studium/yaml/curricula/bachelor_technische_informatik_033535.yml +23 -0
  850. data/lib/studium/yaml/curricula/bachelor_ubrm_033227.yml +140 -0
  851. data/lib/studium/yaml/curricula/bachelor_vector_based_strategies_in_life_sciences_molecular_medicine_and_biotechnology.yml +1157 -0
  852. data/lib/studium/yaml/curricula/bachelor_verfahrenstechnik_033273.yml +167 -0
  853. data/lib/studium/yaml/curricula/bachelor_wirtschaftsinformatik_033526.yml +29 -0
  854. data/lib/studium/yaml/curricula/master_bioinformatics_and_molecular_biotechnology_including_aspects_from_molecular_medicine.yml +438 -0
  855. data/lib/studium/yaml/curricula/master_bioinformatik_066875.yml +76 -0
  856. data/lib/studium/yaml/curricula/master_biologie_molekulare_mikrobiologie_mikrobielle_oekologie_und_immunbiologie_066830.yml +78 -0
  857. data/lib/studium/yaml/curricula/master_biologische_chemie_066863.yml +61 -0
  858. data/lib/studium/yaml/curricula/master_dummy_curriculum.yml +137 -0
  859. data/lib/studium/yaml/curricula/master_food_science_and_plant_biotechnology.yml +30 -0
  860. data/lib/studium/yaml/curricula/master_genetik_und_entwicklungsbiologie_066877.yml +90 -0
  861. data/lib/studium/yaml/curricula/master_lmbt_066418.yml +65 -0
  862. data/lib/studium/yaml/curricula/master_molekulare_biologie_066834.yml +142 -0
  863. data/lib/studium/yaml/curricula/master_pharmazie_066605.yml +170 -0
  864. data/lib/studium/yaml/curricula/master_technische_chemie_066490.yml +123 -0
  865. data/lib/studium/yaml/curricula/master_vector_based_strategies_in_life_sciences_molecular_medicine_and_biotechnology.yml +740 -0
  866. data/lib/studium/yaml/custom_colours.yml +17 -0
  867. data/lib/studium/yaml/daily_questions_solved.yml +909 -0
  868. data/lib/studium/yaml/default_delay.yml +4 -0
  869. data/lib/studium/yaml/default_encoding.yml +1 -0
  870. data/lib/studium/yaml/directory_to_the_exam_topics.yml +0 -0
  871. data/lib/studium/yaml/editor.yml +1 -0
  872. data/lib/studium/yaml/file_for_exam_questions.yml +1 -0
  873. data/lib/studium/yaml/german/README.md +2 -0
  874. data/lib/studium/yaml/german/german_to_english_month_names.yml +12 -0
  875. data/lib/studium/yaml/grouped_themes.yml +187 -0
  876. data/lib/studium/yaml/holidays.yml +177 -0
  877. data/lib/studium/yaml/important_exams.yml +192 -0
  878. data/lib/studium/yaml/inscription_dates_of_universities.yml +56 -0
  879. data/lib/studium/yaml/lecture_aliases.yml +108 -0
  880. data/lib/studium/yaml/lecture_information.yml +47796 -0
  881. data/lib/studium/yaml/log_dir.yml +1 -0
  882. data/lib/studium/yaml/main_topic.yml +11 -0
  883. data/lib/studium/yaml/max_stats.yml +227 -0
  884. data/lib/studium/yaml/mitteilungsbl/303/244tter.yml +315 -0
  885. data/lib/studium/yaml/n_total_questions.yml +1 -0
  886. data/lib/studium/yaml/participating_in_these_courses.yml +44 -0
  887. data/lib/studium/yaml/rename_konsole_tab.yml +1 -0
  888. data/lib/studium/yaml/show_topic.yml +1 -0
  889. data/lib/studium/yaml/statistics.yml +57 -0
  890. data/lib/studium/yaml/use_colours.yml +1 -0
  891. data/studium.gemspec +93 -0
  892. data/test/testing_studium.rb +243 -0
  893. data/test/testing_time_component.rb +29 -0
  894. metadata +1131 -0
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ require 'studium/exams/ask_exam_question/ask_exam_question.rb'
6
+
7
+ Studium.ask_question(ARGV)
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ require 'studium/utility_scripts/check_description_of_these_lectures.rb'
6
+
7
+ Studium::CheckDescriptionOfTheseLectures.new(ARGV)
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ require 'studium/curricula/curriculum_module_displayer/curriculum_module_displayer.rb'
6
+
7
+ Studium::CurriculumModuleDisplayer.new(ARGV)
data/bin/d10 ADDED
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ require 'studium/exams/show_upcoming_exams/show_upcoming_exams.rb'
6
+
7
+ Studium.show_upcoming_exams(10) { :do_not_use_opn }
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ require 'studium/exams/show_upcoming_exams/show_upcoming_exams.rb'
6
+
7
+ Studium.show_upcoming_exams(100) { :do_not_use_opn }
data/bin/d15 ADDED
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ require 'studium/exams/show_upcoming_exams/show_upcoming_exams.rb'
6
+
7
+ Studium.show_upcoming_exams(15) { :do_not_use_opn }
data/bin/d20 ADDED
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ require 'studium/exams/show_upcoming_exams/show_upcoming_exams.rb'
6
+
7
+ Studium.show_upcoming_exams(20) { :do_not_use_opn }
data/bin/d25 ADDED
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ require 'studium/exams/show_upcoming_exams/show_upcoming_exams.rb'
6
+
7
+ Studium.show_upcoming_exams(25) { :do_not_use_opn }
data/bin/d3 ADDED
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ require 'studium/exams/show_upcoming_exams/show_upcoming_exams.rb'
6
+
7
+ Studium.show_upcoming_exams(3) { :do_not_use_opn }
data/bin/d30 ADDED
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ require 'studium/exams/show_upcoming_exams/show_upcoming_exams.rb'
6
+
7
+ Studium.show_upcoming_exams(30) { :do_not_use_opn }
data/bin/d5 ADDED
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ require 'studium/exams/show_upcoming_exams/show_upcoming_exams.rb'
6
+
7
+ Studium.show_upcoming_exams(5) { :do_not_use_opn }
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ require 'studium/curricula/determine_curricula/determine_curricula.rb'
6
+
7
+ Studium::DetermineCurricula.new(ARGV)
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ require 'studium/exams/exam_registration_at/exam_registrion_at.rb'
6
+
7
+ Studium::Exams::ExamRegistrationAt.new(ARGV)
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ require 'studium/statistics/report_how_many_exam_questions_were_answered.rb'
6
+
7
+ Studium::Statistics::ReportHowManyExamQuestionsWereAnswered.new(ARGV)
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ require 'studium/exams_per_month/exams_per_month.rb'
6
+
7
+ if __FILE__ == $PROGRAM_NAME
8
+ Studium::ExamsPerMonth.new(ARGV)
9
+ end # exams_per_month
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ require 'studium/utility_scripts/finished_exams_at_this_university.rb'
6
+
7
+ Studium::FinishedExamsAtThisUniversity.new(ARGV)
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ require 'studium/flashcards/flashcards.rb'
6
+
7
+ Studium::Flashcards.new(ARGV)
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ require 'studium/exams/mandatory_continuous_assessment/mandatory_continuous_assessment.rb'
6
+
7
+ Studium::Exams::MandatoryContinuousAssessment.new(ARGV)
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ require 'studium/exams/mandatory_continuous_assessment/mandatory_continuous_assessment.rb'
6
+
7
+ Studium::Exams::MandatoryContinuousAssessment.new(ARGV.append('--upcoming'))
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # n_exam_questions_already_answered
6
+ # =========================================================================== #
7
+ require 'studium/toplevel_methods/report_how_many_exam_questions_were_already_solved.rb'
8
+ require 'studium/toplevel_methods/n_questions_available.rb'
9
+
10
+
11
+ n_questions_available = Studium.n_questions_available?
12
+ n_questions_solved_in_total = Studium.return_n_questions_solved_in_total
13
+
14
+ n_percent = ((n_questions_solved_in_total * 100.0) / n_questions_available).round(2)
15
+
16
+ puts "#{n_questions_solved_in_total} exam-questions "\
17
+ "already answered (#{n_percent}%)"
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ require 'studium'
6
+
7
+ Studium::Exams.report_nquestions_of(ARGV) # nquestions bem1 bem2 meta enz aa lipids strukt
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ require 'studium/toplevel_methods/report_how_many_exam_questions_were_already_solved.rb'
6
+
7
+ Studium::Exams.report_how_many_exam_questions_were_already_solved
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ require 'studium/exams/open_last_exam_question_asked_file/open_last_exam_question_asked_file.rb'
6
+
7
+ Studium.open_last_exam_question_asked_file(ARGV)
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ require 'studium/utility_scripts/passed_prüfungsimmanente_courses/passed_prüfungsimmanente_courses.rb'
6
+
7
+ Studium::PassedPrüfungsimmanenteCourses.new(ARGV)
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ require 'studium/ects/return_n_ects_from_this_file.rb'
6
+
7
+ Studium.return_n_ects_from_this_file(ARGV)
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ require 'studium/lectures/show_lectures_on_the_commandline/show_lectures_on_the_commandline.rb'
6
+
7
+ Studium::ShowLecturesOnTheCommandline.new(ARGV)
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ require 'studium/exams/show_themes/show_themes.rb'
6
+
7
+ Studium::Exams::ShowThemes.new(ARGV) # showthemes
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ require 'studium/requires/require_class_exams_solved.rb'
6
+
7
+ _ = Studium::Exams::Solved.new(ARGV, :dont_run_yet)
8
+ _.set_commandline
9
+ _.run # solved
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ require 'studium/utility_scripts/studienkennzahl.rb'
6
+
7
+ Studium::Studienkennzahl.new(ARGV) # studienkennzahl 033 201
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ require 'studium/commandline/fast_commandline_options.rb'
6
+
7
+ Studium.fast_parse_commandline(ARGV)
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ require 'studium/utility_scripts/studium_skeleton.rb'
6
+
7
+ Studium::StudiumSkeleton.new(ARGV)
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ require 'studium/utility_scripts/ufind.rb'
6
+
7
+ Studium::Ufind.new(ARGV)
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ require 'studium/exams/upcoming_exams/upcoming_exams.rb'
6
+
7
+ Studium::Exams::UpcomingExams.new(ARGV)
@@ -0,0 +1,54 @@
1
+ This file explains some of the rationale behind the number of questions
2
+ considered to be "necessary" in order to pass a given exam for a course.
3
+
4
+ Courses have ECTS credits attributed, such as 2.0 or 3.0. The higher
5
+ the number, the more **time** has to be invested in order to pass this
6
+ course.
7
+
8
+ I estimate that one should have answered at the least 150 questions per
9
+ ECTS points, in order to pass an "average" exam. 100 questions+answers
10
+ answered are probably too low as a requirement in order to be successful
11
+ here.
12
+
13
+ On the other hand, if you already have extensive knowledge in a particular
14
+ topic then 100 (new) questions per ECTS credit point may easily suffice.
15
+
16
+ Only collecting questions but not answering them will obviously not be
17
+ of major help for passing an exam; one has to really answer the questions,
18
+ too.
19
+
20
+ Since as of January 2017, I am using the number 250 questions per ECTS
21
+ credit point. This seems to be more realistic, so 8.0 ECTS points require
22
+ 2000 answered questions.
23
+
24
+ Since as of September 2019, I am actually using the number 300 per
25
+ 1.0 ECTS points. This may be a bit excessive, but I want to be absolutely
26
+ certain that this number should suffice with a high reliability. So
27
+ aim for that, even for "easier" exams. For me the most annoying part
28
+ was to have to re-learn old content for an exam because I flunked, so
29
+ investing more time into that for a higher percentage chance to pass
30
+ was better, from a time-investment point of view. (The time into
31
+ a failed exam is almost a complete waste of time, evidently.)
32
+
33
+ The following table shows how many questions are required per ECTS
34
+ point following this "300-questions/answers-per-ECTS-point"
35
+ strategy:
36
+
37
+ n ECTS points | n questions answered
38
+ --------------|-----------------------
39
+ 1 | 300
40
+ 2 | 600
41
+ 3 | 900
42
+ 4 | 1200
43
+ 5 | 1500
44
+ 6 | 1800
45
+ 7 | 2100
46
+ 8 | 2400
47
+ 9 | 2700
48
+ 10 | 3000
49
+ 11 | 3300
50
+ 12 | 3600
51
+ 13 | 3900
52
+ 14 | 4200
53
+ 15 | 4500
54
+ --------------------------------------
@@ -0,0 +1,40 @@
1
+ You can supply your own exam questions file, so that you do
2
+ not have to depend on my custom exam questions.
3
+
4
+ Note that since as of the year 2020 this has changed quite
5
+ a bit - exam entries should be collected under exam_topics/.
6
+
7
+ In order to do this, simply edit one yaml file, the file called:
8
+
9
+ file_for_exam_questions.yml
10
+
11
+ This file will reside under the yaml/ directory of this gem.
12
+
13
+ nano yaml/file_for_exam_questions.yml
14
+
15
+ In ruby code, there also is a method that can be used to change
16
+ to a new file, so that you do not have to manually edit the
17
+ .yml file above:
18
+
19
+ Studium.set_file_for_exam_questions(path_here)
20
+
21
+ Only a single line is necessary, which shall be the full path
22
+ (the location) to the .rb file that you will use for your
23
+ own exams.
24
+
25
+ That file should conform to following format:
26
+
27
+ module Foo
28
+
29
+ BLA1 = [
30
+ 'Question? Answer',
31
+ 'Another question? Another answer.'
32
+ ]
33
+ BLA2 = [
34
+ 'Bla? Bla.'
35
+ ]
36
+
37
+ end
38
+
39
+ All these constants will be used to populate the exam
40
+ questions.
@@ -0,0 +1,39 @@
1
+ This file here exists because I needed to rewrite the exams project,
2
+ and was then faced with the problem to accurately determine, in the
3
+ new code, at which point a question exists (the question component
4
+ of the question) and at which point an answer to said question
5
+ exists (the answer component). At a later time, the exams project
6
+ was merged into the studium project.
7
+
8
+ Now - to the issue of questions, let's contemplate them.
9
+
10
+ A simple way for a question-answer style would be this:
11
+
12
+ - Q: When was Rome created? A: 753 before 0.
13
+
14
+ Let's establish some points here about the above:
15
+
16
+ (1)
17
+
18
+ This clearly tells us that the first part, after Q:, is a question,
19
+ and the second part, the A:, is an answer.
20
+
21
+ (2)
22
+
23
+ However had in practice, the Q: is superfluous since we will assume
24
+ that the first part is the question anyway.
25
+
26
+ (3)
27
+
28
+ That leaves us with the second part, the 'A:'. The A: is
29
+ also superfluous when we already have a '?', since everything
30
+ past the last '?' found will be treated as the answer.
31
+
32
+ The '?' does not have to be the only delimiter possible.
33
+
34
+ We can also split on '!'.
35
+
36
+ (4)
37
+
38
+ What if we do not have a '?' though? In this case, we either require
39
+ an 'A:' in which case the entry can be parsed properly.
@@ -0,0 +1,1634 @@
1
+ ADD_RUBY_BADGE
2
+
3
+ [![logo](http://shevy.bplaced.net/STUDIES.png)](https://rubygems.org/gems/studium)
4
+
5
+ ## The purpose of the studium-gem
6
+
7
+ The **Studium project** attempts to help the user with **study-**
8
+ and **exam-related topics** in general.
9
+
10
+ The **primary** purpose of the studium gem is to distribute the code
11
+ (in ruby), the associated dataset (mostly text files, in particular
12
+ yaml files) and also **interconnect** the various ruby files under
13
+ the same "umbrella-project".
14
+
15
+ The original goal for the **Studium project**, that is **why** it
16
+ was started, was to bundle together **knowledge** from different
17
+ topics - be it related to **ruby**, **informatics**, **biology**,
18
+ **chemistry**, **biotechnology** or **physics**, as an
19
+ **exam trainer**. The objective here was to improve the grades
20
+ and pass more exams within a given time frame. Since then this
21
+ original use case has been **extended** quite a bit, including
22
+ online-related aspects (make the dataset available via a
23
+ web-interface, such as through sinatra).
24
+
25
+ There are several different classes which are all part of the
26
+ **Studium** gem (namespace being **module Studium**), that could
27
+ potentially be of **help** to the user.
28
+
29
+ If you are curious about these classes feel free to have a look
30
+ at the right hand side of this gem's homepage, the **Table of
31
+ Contents**. The direct URL is:
32
+
33
+ https://www.rubydoc.info/gems/studium/
34
+
35
+ Furthermore, some classes are described in more detail in that
36
+ file here (**README.md**), or respectively doc/README.gen, which
37
+ is the template from which the **README.md** file is autogenerated
38
+ upon publishing a new version of this gem.
39
+
40
+ Note that there are **a LOT** of different classes and it is rather
41
+ unlikely that you will need all of them, so don't focus on all
42
+ classes with the assumption that they will all be equally useful.
43
+ Some of these classes have only **a very limited scope** and
44
+ use case, and thus are not too overly useful. Other classes are
45
+ more important, though, and the page here **attempts to focus
46
+ primarily on these more useful classes**, or rather, the
47
+ **functionality** that these classes ultimately provide. It is
48
+ hoped that this functionality may be of benefit to other people
49
+ as well.
50
+
51
+ A **general overview on the commandline**, as to what the main
52
+ functionality is, can be obtained through this entry point, aka
53
+ **--help**:
54
+
55
+ studium --help
56
+
57
+ But not every feature is described there; it would make the
58
+ listing way too long.
59
+
60
+ The **major** focus of the studium gem lies in regards to
61
+ "flashcards", mnemo-cards, anki-cards - aka entries that have
62
+ a registered **question**, and an **associated answer** to
63
+ that question. (anki-cards are a bit different in that they
64
+ focus on a **GUI** and allow such fancy things like embedding
65
+ pictures; the studium project here also has this as a minor
66
+ goal, but this comes **only** via GUI bindings, not the
67
+ commandline variant, obviously. It is of a lower priority,
68
+ though.)
69
+
70
+ These exam-related questions can be asked on the commandline,
71
+ via a **delay** - usually a three seconds delay, but this
72
+ can be toggled and changed by the end user on the commandline.
73
+
74
+ First, the question will appear on the commandline, and then,
75
+ after that specified **delay** has passed, the answer will be
76
+ revealed (and shown) on the commandline. This way the user can
77
+ improve his/her knowledge on a daily basis. In fact: although
78
+ I have not been studying at a university in many years, I
79
+ still use this project almost daily to expand my own local
80
+ knowledgebase.
81
+
82
+ You can query the current **set delay** via:
83
+
84
+ studium --delay?
85
+
86
+ Note that, in order for the question-answer "exam trainer" to work, you
87
+ need to have written down these questions and answers somewhere. By
88
+ default, I have bundled the dataset that I personally use, but this
89
+ will probably be very useless to most other people, so I recommend
90
+ to keep your own entries. (Many of my own entries are in german rather
91
+ than english, so ... feel free to re-use any of these questions as
92
+ you like to, if you find them useful. As of **March 2019**,
93
+ there are over **32.500** question-answers registered in the studium
94
+ project, in various different topics).
95
+
96
+ The **format** for question-answers is very simple:
97
+
98
+ - **One question** and **one answer** per given line. For example:
99
+
100
+ '- How does Rails call a "footer" on every page? "Partials".'
101
+
102
+ The above would constitute a question-answer exam entry.
103
+
104
+ The first part there constitutes the question; and the part after the
105
+ first '?' character is the answer. The '?' token is not mandatory though;
106
+ you can also substitute with 'A:' (which stands short for "Answer") and
107
+ not make use of '?' at all.
108
+
109
+ Note that any words enclosed in double quotes "" will be colourized differently
110
+ when displayed on the commandline. The reason for this is mostly so that it
111
+ provides a stronger visual cue as to what may be more important in the given
112
+ question/answer at hand. I found this helpful for memorizing when having these
113
+ questions asked on the commandline; for some reason my brain reacts more
114
+ strongly to colours. Probably does so for other people too, but again - if
115
+ you dislike anything there, you can (and should) always use your own
116
+ exam-dataset here.
117
+
118
+ ## Exam dataset
119
+
120
+ The **individual exam topics** are stored in the subdirectory
121
+ called <b>exam_topics/</b>.
122
+
123
+ I distribute the dataset for the topics that I have an interest in with
124
+ this gem, which explains why the gem is quite large. This dataset will
125
+ probably not be very useful for other people, but if you want to use
126
+ this project (such as a base-system, and then modify it) then you
127
+ are very much encouraged to build up your own dataset anyway.
128
+
129
+ The primary reason as to why I have distributed my own dataset with this
130
+ gem is to simply show how it can be done; it is just more convenient
131
+ that way in the event that other people want to use the project and
132
+ adapt it to their own needs.
133
+
134
+ The format for these exams must be a simple one, that is - one question
135
+ and one answer per registered line. I currently encourage you to use not
136
+ more than 1000 question-answer entries per such a file but if you want
137
+ to, you can ignore this limit. I personally found it useful to have.
138
+ Whenever I have more than 1000 questions, I tend to create a new file
139
+ with "advanced" questions, or simply split things up.
140
+
141
+ For example, I used to have a single file for biochemistry. Since then I
142
+ split it up into several sub-topics, such as **metabolism**,
143
+ **advanced biochemistry** and **aminoacids**, so the total question-answers
144
+ for biochemistry is close to 4000 as of now. (It may be even more if you
145
+ also include molecular techniques and genetics into biochemistry, which
146
+ some university lectures do. But I found it easier to use separate topics
147
+ here, such as **genetics**, **genomics** and **gene technology** instead.)
148
+
149
+ If you want to query which exam-topic is the current default (the <b>current
150
+ studyset</b>), then you can use the following invocation on the commandline:
151
+
152
+ studium --current-studyset?
153
+
154
+ How to best prepare for exams?
155
+
156
+ This probably depends on the type of person you are, how your brain works,
157
+ how you memorize content. I can not give a general recommendation as to
158
+ how that should be for everyone - you need to determine this on your
159
+ own.
160
+
161
+ But - what I believe may work for many people, are so called "flash-cards",
162
+ that is: you have the question on one side, and then the answer or
163
+ answers on the other side of that card (flip card).
164
+
165
+ In my opinion, such mnemo cards or flash cards, are quite effective and
166
+ may also work for you. This was the primary goal for the studium project
167
+ too; it was built around that central concept for the most part.
168
+
169
+ Note that the python-software anki (anki cards) uses a somewhat
170
+ related concept, although it is more sophisticated, e. g. you can
171
+ embed images into the dataset, and so forth.
172
+
173
+ ## Flashcards
174
+
175
+ Since as of March 2018, the studium project also supports flashcards
176
+ formally.
177
+
178
+ Flashcards are menmonic-cards, where a question may be on the front
179
+ of a paper, and the answer to that question is on the backside.
180
+
181
+ Obviously computers can simulate this more easily without wasting
182
+ paper - but some people may prefer oldschool paper for memorizing
183
+ content.
184
+
185
+ At any rate, if you wish to add a new question-answer, then you
186
+ can use this commandline invocation:
187
+
188
+ flashcards add
189
+
190
+ You can also add a new question via the bin/studium file:
191
+
192
+ studium --add-a-new-question
193
+
194
+ ## class Studium::Exams::ShowUpcomingExams
195
+
196
+ The **class ShowUpcomingExams** will display the next n upcoming
197
+ exams, where n should be a number from 3-20. There are also files
198
+ such as d10 or d20 in the bin/ subdirectory, which defaults to
199
+ e. g. 10 or 20 upcoming exams.
200
+
201
+ Note that in order for this to work, this may require to define
202
+ local directories, and the exams in a file called **exams.yml**.
203
+
204
+ This may change in the future, since the **exams.yml** file is
205
+ not distributed with this gem (it is specific for my exams, so
206
+ really most useless to other people) - but for now, this is how
207
+ things are.
208
+
209
+ If you want to designate another file or location, have a look
210
+ at the file **file_constants.rb**. You can also invoke this
211
+ method to set another file position:
212
+
213
+ Studium.set_file_exams()
214
+
215
+ Simply pass the **location** of your exams-file, which must be
216
+ a yaml file, into that method.
217
+
218
+ ## Regex-search for exams
219
+
220
+ You can search for passed exams via a "pseudo-regex", aka //
221
+ in a string:
222
+
223
+ studium /Partial name of exam goes in here/
224
+ studium /Elektronen/
225
+ studium /Bioinf/
226
+
227
+ Let's look at the last example, on the commandline. This will
228
+ send the first argument <b>"/Bioinf/"</b> to the ruby code that
229
+ handles the commandline. ARGV is an Array that will hold the
230
+ arguments given to a ruby .rb file as Strings, so we have a
231
+ pseudo-regex there - a String object that starts and ends with
232
+ the character '/'. We assume this String to be a regex, which
233
+ conveniently allows us to query for the name of passed exams.
234
+
235
+ This may be helpful if you want to find all exams that you have
236
+ passed successfully (and registered somewhere) but do not quite
237
+ remember the full name of the exam. Or, as in the last example,
238
+ to show all exams passed with a title that includes "Bioinf"
239
+ (meaning **Bioinformatics** or **Bioinformatik**).
240
+
241
+ Of course this should be tailored to your exams, not mine or
242
+ anyone else's exams. :)
243
+
244
+ You can also see the passed exams that belong to a given theme.
245
+
246
+ So for example, to show all exams that fit to the theme
247
+ "chemistry", you can use this call to output these exams:
248
+
249
+ studium --passed-exams=chemistry
250
+
251
+ ## Flashcards / Mnemo-cards
252
+
253
+ The core of this project is to simulate the behaviour of mnemo-cards,
254
+ memo-cards or flashcards (we will assume these names to be
255
+ synonymous).
256
+
257
+ The project can ask a random exam question.
258
+
259
+ Then, if the correct answer has been given, this question can be marked
260
+ as "solved" - the code for the latter solved action resides in the
261
+ file called **solved.rb**.
262
+
263
+ Any question that has been marked as "solved" will no longer be
264
+ within the total pool of questions that the computer will ask you.
265
+
266
+ In other words, we can toggle on/off on a per question basis, via
267
+ a trailing [] to a line in that file.
268
+
269
+ This allows you to systematically work through an exam dataset for
270
+ a given topic at hand.
271
+
272
+ Currently there is a cap - 1000 questions to the same topic, not
273
+ more than that. This was mostly because I found it better to split
274
+ up the topics, e. g. "basic chemistry", and then "advanced
275
+ chemistry", and so on and so forth.
276
+
277
+ ## Namespaces in the project
278
+
279
+ The main namespace is called **Studium**, which is german for studies.
280
+
281
+ The exam-relevant part resides under **Studium::Exams**. So when you
282
+ see that latter namespace, you know that it has to be code that is
283
+ specific to exams.
284
+
285
+ There are also some auxiliary classes, such as a primitive
286
+ "statistical analyzer" of some sort, to rate the performance
287
+ per day (from day to day, in regards to exam-questions that
288
+ were answered).
289
+
290
+ ## Statistical information within the Studium project
291
+
292
+ The Studium project also allows for a few statistical informations,
293
+ e. g. such as how many exams were passed in this or that period
294
+ of time. You can also show the curricula used for any given
295
+ individual curriculum at hand.
296
+
297
+ This can be invoked such as in this way:
298
+
299
+ studium --statistics
300
+
301
+ This will tap into <b>class Studium::DetermineCurricula</b>.
302
+
303
+ ## class Studium::AutoStud
304
+
305
+ The class AutoStud can automatically modify the cd_aliases yaml
306
+ file. cd_aliases are part of another project and bundle together
307
+ my cd-aliases, that is - aliases that help me navigate through
308
+ my local filesystem quickly. I make heavy use of aliases in
309
+ general.
310
+
311
+ If there is a file called exams.yml, then we can put numbers,
312
+ so called "tag-identifiers", into these. So for example, we
313
+ may have the entry '# === (13)' there. This means that
314
+ pwdstud13 is an alias to this directory, which will correspond
315
+ to an exam entry. These entries should be sorted in a way so
316
+ that entry 1 means the next upcoming exam, entry 2 the one
317
+ after that, and so forth and so on.
318
+
319
+ In the past, before 20.01.2018, I manually did most of the
320
+ work there - first, by modifying exams.yml, and then by
321
+ navigating towards the target directory, and then invoking
322
+ "newstud NUMBER" here, such as newstud 13. This was tedious
323
+ and somewhat error-prone, but mostly unnecessary. I then
324
+ created class AutoStud, which allowed me to navigate to
325
+ the directory at hand, and just take the name of the working
326
+ directory to determine the number. But even that was too
327
+ cumbersome, so I added a range specifier, such as:
328
+
329
+ autostud 1-15
330
+
331
+ This will, similar to a Range in ruby, work through from 1
332
+ to 15, and invoke class NewStud. This class is the one
333
+ that will modify the cd-aliases file.
334
+
335
+ Even the range specifier was unnecessary since I added:
336
+
337
+ autostud --max
338
+
339
+ This will automatically guess what is the max entry and use
340
+ that.
341
+
342
+ If the above subsection is a bit confusing, don't worry, it
343
+ really is simple once you understand it. It essentially
344
+ serves two purposes:
345
+
346
+ (a) to be able to show which exames are upcoming, via
347
+ say, <b>d25</b> (see bin/d25 for that)
348
+ (b) to just quickly navigate to these directories
349
+ for upcoming exams
350
+
351
+ I can then e. g. do "to4" to navigate to exam number 4
352
+ and look at the directory as to what material has been
353
+ collected for this exam.
354
+
355
+ Obviously this works for the exam dataset on my system -
356
+ you may have to maintain your own exams.yml file. I am
357
+ willing to make improvements to this part, both in
358
+ regards to code, but also in regards to the <b>documentation</b>.
359
+
360
+ ## Determine which curricula are used for which lecture
361
+
362
+ One of the most important files for this project, file
363
+ <b>lecture_information.yml</b>, also contains the assigned
364
+ curricula for a given lecture at hand.
365
+
366
+ The class <b>Studium::DetermineCurricula</b> can then be used
367
+ to automatically output, on the commandline, in which curricula
368
+ a certain lecture is listed. This allows us to batch-calculate
369
+ the curricula used in an individual curriculum - e. g. if you
370
+ design such a curriculum, the class may help you to
371
+ automatically output from which other curricula certain lectures
372
+ were used/re-used. This constitutes the <b>"statistics"</b>
373
+ part of that class.
374
+
375
+ ## class Studium::ForeignLanguagePercentage
376
+
377
+ class <b>Studium::ForeignLanguagePercentage</b> can be used
378
+ to show which lectures are in a given language, such as
379
+ the english language.
380
+
381
+ This requires that the entry called "!ruby/symbol language: english"
382
+ in the file <b>lecture_information.yml</b> has been set.
383
+
384
+ ## class Studium::ShowLecturesOnTheCommandline
385
+
386
+ This class will show lectures that are part of the given
387
+ curriculum on the commandline. Additionally, a .html file
388
+ can be autogenerated (and will be opened in the browser,
389
+ if a certain constant has been set to true).
390
+
391
+ If a lecture has already been passed, then the remote URL
392
+ will not be shown. This behaviour can be overruled from
393
+ the commandline like so:
394
+
395
+ show_lectures_on_the_commandline --show-all-URLs --tuwienbiotech
396
+
397
+ This will show all remote URLs, even for lectures that were
398
+ already solved.
399
+
400
+ Do note that you can also design any arbitrary "curriculum"
401
+ on your own, and then load this dataset up.
402
+
403
+ Say that you have stored this into the file called **foo.md**.
404
+
405
+ To load this up, you can do:
406
+
407
+ studium --use-this-curriculum=foo.md
408
+
409
+ Remember to use only registered lectures (in the file
410
+ **lecture_information.yml**), and only one lecture per
411
+ line in that .md file (or any other text file).
412
+
413
+ ## class Studium::ShowLectures
414
+
415
+ <b>class Studium::ShowLectures</b> will show lectures according
416
+ to a particular <b>theme</b>. For example, say that you want to
417
+ see all lectures that have something to do with
418
+ <b>"analytical chemistry"</b>.
419
+
420
+ You could then invoke this class and pass in a commandline option
421
+ such as the following one:
422
+
423
+ --analytical_chemistry
424
+
425
+ I have aliased the <b>show_lectures.rb file</b>, to the alias called
426
+ <b>show_lectures</b>, and then I can do this from the commandline:
427
+
428
+ show_lectures --analytical_chemistry
429
+
430
+ (Actually, I even have this aliased, to "tanalytical" - the
431
+ t stands for "theme". I use this for all the themes, e. g.
432
+ "tgenetics" for all themes belonging to the theme genetics,
433
+ "tinformatics" for all themes belonging to the theme
434
+ informatics, and so forth.)
435
+
436
+ This class will also show a split between bachelor and master
437
+ lectures. Bachelor lectures are shown first, then we will
438
+ show the lectures belonging to a master curriculum.
439
+
440
+ This class thus allows us to quickly find out which lectures
441
+ belong to a certain theme. It can then help when you wish
442
+ to create an individual curriculum based on one or several
443
+ <b>certain themes</b> - or when you simply want to see
444
+ which lectures are available belonging to a particular theme.
445
+ (I used it to see which exams I may do next, to fulfil a
446
+ certain theme criteria.)
447
+
448
+ Note that this class acts on information, which must have been
449
+ added prior to the file <b>lecture_information</b>, which is
450
+ also distributed with this project. Always keep that file
451
+ up to date - a lot of code in this project depends on that
452
+ file.
453
+
454
+ Since as of 10.03.2018, you can also pass in the options
455
+ --timetable or --upcoming. This will then autogenerate a
456
+ .html file listening the coming exams. That functionality
457
+ depends on class <b>ShowLecturesOnTheCommandline</b>.
458
+
459
+ ## class Studium::Exams::Cycle
460
+
461
+ The class <b>Studium::Exams::Cycle</b> can be used to
462
+ cycle through the yaml file that holds which exams may
463
+ be upcoming.
464
+
465
+ Since as of March 2018, the yaml file is distributed with
466
+ the studium gem and can be found in the respective yaml
467
+ directory, such as at:
468
+
469
+ studium/yaml/current_exams.yml
470
+
471
+ Obviously if you wish to make use of it, you will have to
472
+ modify that file to fit your own preferences rather than
473
+ mine. This also depends on the exam topics that you want
474
+ to be exercising next.
475
+
476
+ The way how the class operates is really simple:
477
+
478
+ - After having asked one question from the current main
479
+ topic, the class will move towards the next topic at
480
+ hand, and so forth. When it reaches the "end", it will
481
+ resume at the beginning, so in other words this is a
482
+ cyclic array and the class operates via a "cyclic modus
483
+ operandi" - which thus explains he name of this class:
484
+ <b>Cycle</b>.
485
+
486
+ If you want to find out where the main .yml file resides,
487
+ you can do so via:
488
+
489
+ Studium::Exams::Cycle.main_file?
490
+
491
+ If you want to display which entries are part of the
492
+ current exam-cluster, you can do so from the commandline
493
+ via:
494
+
495
+ studium --collage?
496
+
497
+ ## class Studium::ShowOutdatedLvaDates
498
+
499
+ <b>class Studium::ShowOutdatedLvaDates</b> can be used
500
+ to show which lectures (lva aka "lehrveranstaltung")
501
+ have outdated lva_dates entries.
502
+
503
+ That way the outdated entries can be updated (or removed).
504
+
505
+ This then allows other classes in the project to more
506
+ reliably show only lectures that are up-to-date.
507
+
508
+ ## class Studium::ShowLvaDatesOfThisLecture
509
+
510
+ If you need to show the **LVA dates** of a given lecture
511
+ at hand, on the <b>commandline</b>, then you may want
512
+ to use <b>class Studium::ShowLvaDatesOfThisLecture</b>,
513
+ defined in the file <b>show_lva_dates_of_this_lecture.rb</b>.
514
+
515
+ The usage is quite simple - pass in the name of the lecture
516
+ that you are interested in, such as "Primatologie".
517
+
518
+ If you want to get the most accurate information, then
519
+ you should ideally also pass in the lecture ID; such
520
+ as in the above example with "Primatologie", the input
521
+ string should be in the form of:
522
+
523
+ "300227 Primatologie"
524
+
525
+ We call the "300227 Primatologie" variant as the <b>full
526
+ input</b> and the variant with "Primatologie" alone as
527
+ <b>partial input</b>. If only a partial input is provided,
528
+ then the script will try to be <b>greedy</b> and find as
529
+ many relevant entries as possible. This can be used as a
530
+ feature too.
531
+
532
+ For example, consider that <b>show_lva_dates_of_this_lecture</b>
533
+ is an alias to the above .rb file, then the following
534
+ commandline use:
535
+
536
+ show_lva_dates_of_this_lecture Geneti
537
+
538
+ would show all lectures that have the tag "Geneti"
539
+ included.
540
+
541
+ Note that you do not necessarily need an alias such
542
+ as <b>show_lva_dates_of_this_lecture</b>; you can
543
+ also invoke it from the commandline such as via:
544
+
545
+ studium --show-lva-dates-of-this-lecture=Primatologie
546
+ studium --show-lva-dates-of-this-lecture="300227 Primatologie"
547
+
548
+ ## class Studium::ShowLecturesOnThisDay
549
+
550
+ This class will show all lectures that occur on a given day. The
551
+ format for that day must be in dd.mm.yyyy format such as
552
+ <b>18.06.2018</b>. (In the future this requirement may change
553
+ and allow for other formats, such as yyyy.mm.dd; but for now,
554
+ this is the only supported time format.)
555
+
556
+ The class will then proceed to check the file <b>lecture_information.yml</b>
557
+ for matching entries. If found, they will be retained and lateron
558
+ displayed, via the <b>.report</b> method.
559
+
560
+ You can either invoke the clas directly - it resides at
561
+ <b>studium/utility_scripts/show_lectures_on_this_day.rb</b> -
562
+ or you can invoke this functionality from the commandline.
563
+
564
+ The syntax for the commandline invocation can be in two formats.
565
+
566
+ studium --lectures-on-this-day=05.05.2018
567
+ studium 07.05.2018
568
+
569
+ The latter is significantly shorter and is recommended. It is the
570
+ current default action for input in the form dd.mm.yyyy. Do note
571
+ that this may, however had, also change in the future - but for
572
+ now (March 2018), this is the documented default behaviour for
573
+ input like the above. Use the more explicit one with the --
574
+ flags, since that one will be supported forever.
575
+
576
+ ## class Studium::NExamsInTheseTopics
577
+
578
+ class <b>Studium::NExamsInTheseTopics</b> can report how many exam
579
+ topics are registered in the given input-topics at hand, and how many
580
+ of these were solved.
581
+
582
+ Several topics are combined together.
583
+
584
+ For example, for basic **biochemistry**, you can pass the argument
585
+ <b>meta_biochemistry</b> to this class, as a **String**.
586
+
587
+ class **Studium::NExamsInTheseTopics** will then output how many
588
+ questions were registered in that topic in total, and how many of
589
+ these questions were already solved.
590
+
591
+ For the "meta-topic" meta_biochemistry, we group together many
592
+ biochemistry-related topics - basic biochemistry, advanced
593
+ biochemistry, structural biology, proteomics, metabolism,
594
+ enzymes, glycolysis and so forth.
595
+
596
+ I created this class so that I can have a look at combined
597
+ topics. Otherwise it is quite similar to the statistics shown
598
+ when a single question is asked on the commandline, through
599
+ <b>class AskExamQuestion</b> (full name is:
600
+ <b>Studium::Exams::AskExamQuestion</b>).
601
+
602
+ Since as of August 2018, you can also use this as exam-trainer,
603
+ by providing the number of the sub-topic at hand.
604
+
605
+ So for example, if the main topic is meta-genetics, and
606
+ you pass in the argument 3, then the entry at the 3rd
607
+ place will be used as means to ask a question.
608
+
609
+ Examples:
610
+
611
+ metagen 2
612
+ metagen 5
613
+
614
+ Where "metagen" is my alias to:
615
+
616
+ n_exams_in_this_topic meta_genetics
617
+
618
+ By default, lines that end via "[]" are ignored, but you can also
619
+ ask a question from ALL available questions, even if they end
620
+ with a "[]" token.
621
+
622
+ Commandline example:
623
+
624
+ ask_exam_questions amg1 --all-questions
625
+
626
+ This would ask a random question from the **amg1-dataset**.
627
+
628
+ ## class Studium::Exams::UpcomingExamsDataset
629
+
630
+ The **class Studium::Exams::UpcomingExamsDataset** is a **helper**-class.
631
+
632
+ It wraps over the file <b>exams.yml</b> and allows a simple query to
633
+ the upcoming exams, based on that file (which, as exam, must be
634
+ registered in the file <b>exams.yml</b>).
635
+
636
+ This information can then be used to query which exams are upcoming
637
+ on which day, at which time. This information can also be re-used
638
+ in different classes, which was one important reason as to why
639
+ this class has been created in the first place.
640
+
641
+ ## class Studium::Exams::MandatoryContinuousAssessment
642
+
643
+ class <b>Studium::Exams::MandatoryContinuousAssessment</b> can
644
+ be used to handle lectures that require mandatory attendance
645
+ (in german "prüfungsimmanente Lehrveranstaltungen").
646
+
647
+ The section here does not include all options that this class
648
+ is able to handle; instead, only a select subset will be shown
649
+ and explained here.
650
+
651
+ If you want to show which mandatory courses may be upcoming,
652
+ sorted on the assigned priority, then you can do this:
653
+
654
+ mandatory --upcoming
655
+
656
+ The command <b>mandatory</b> is an alias I use to
657
+ the .rb file that holds
658
+ <b>class Studium::Exams::MandatoryContinuousAssessment</b>.
659
+
660
+ You can also compare (some of) the registered curricula,
661
+ by issuing:
662
+
663
+ mandatory --compare
664
+
665
+ This will output the amount of ECTS points stored in
666
+ courses that require a mandatory attendance.
667
+
668
+ If you want to also see the individual lecture, do any of this:
669
+
670
+ mandatory --compare-detail
671
+ mandatory --compare-stats
672
+
673
+ On a side-note, if you wish to see some mandatory lectures,
674
+ such as those that belong to the lecture type VO+SE, you
675
+ can pass this as input to bin/studium, like so:
676
+
677
+ studium VO+SE
678
+
679
+ ## Studium.pristine
680
+
681
+ The toplevel-method made available through <b>Studium.pristine</b>
682
+ can be used to create a new <b>lecture_information</b> file.
683
+ The one that is, by default, bundled with the studium-gem is/was
684
+ tailored to my own needs. So if you want to use the file,
685
+ it may be better to generate it once, and then modify that
686
+ newly generated file. (Don't forget to keep a backup of it
687
+ available as well, in case it is deleted or overwritten.)
688
+
689
+ This can also be done on the commandline, via:
690
+
691
+ studium --pristine
692
+ studium --new-lecture-information
693
+
694
+ You can then copy this file into the default location, where
695
+ the file <b>lecture_information.yml</b> is normally stored,
696
+ via:
697
+
698
+ studium --merge
699
+
700
+ ## Commandline examples of the studium gem
701
+
702
+ This subsection shows some commandline examples, in a succinct
703
+ manner.
704
+
705
+ Display **bachelor curricula**, via the syntax --bachelor=NAME_HERE
706
+
707
+ studium --bachelor=vektorx
708
+ studium --bachelor=genetics
709
+
710
+ Display **master curricula**, via the syntax --master=NAME_HERE
711
+
712
+ studium --master=vektorx
713
+ studium --master=immunobio
714
+
715
+ Note that in both cases, the curriculum has to be registered.
716
+
717
+ If you wish to see which exams have been passed, that is,
718
+ completed successfully, then use this invocation style:
719
+
720
+ studium --passed-exams?
721
+ studium --passed-exams
722
+
723
+ If you want to show how many ECTS points have been completed
724
+ in the registered curricula, do either of the following:
725
+
726
+ studium --passed-ects?
727
+ studium --passed-ects
728
+
729
+ ## Studium.return_div_timetable_of_upcoming_exams
730
+
731
+ This module-method can show the upcoming exams, as a html table.
732
+
733
+ This allows you to look at the upcoming exams in a <b>browser</b>.
734
+
735
+ The priority of the given lecture must be among these values:
736
+
737
+ 1, 2, 3, 4, 5
738
+
739
+ Thus, a priority value of higher than 5 will <b>not</b> be
740
+ shown/considered.
741
+
742
+ ## Aliases
743
+
744
+ The studium-gem uses several aliases. These exist mostly for
745
+ convenience.
746
+
747
+ For example, bin/studium has an entry point called <b>--master-curricula</b>.
748
+ This variant also works via <b>--master</b> alone. The latter option
749
+ is not explicitely mentioned since it is just an alias. If you think
750
+ that a specific alias is missing, let me know and I will add it (as
751
+ long as it does not conflict with any other entry point.)
752
+
753
+ ## Return all passed exams
754
+
755
+ If you need to obtain a list (an <b>Array</b>) of all exams passed,
756
+ you can use any of the following two methods:
757
+
758
+ Studium.all_passed_exams
759
+ Studium.return_all_passed_exams
760
+
761
+ On the commandline, you can invoke this via:
762
+
763
+ studium --passed-exams
764
+ studium --all-passed-exams
765
+ studium --return-all-passed-exams
766
+
767
+ Note that this will <b>only</b> honour exams that have been
768
+ registered in the file <b>lecture_information.yml</b>.
769
+
770
+ ## Vorbesprechungen / Preliminary meetings
771
+
772
+ Some courses require a date before the actual course week, which we
773
+ will call "preliminary meetings" (in german, "Vorbesprechung" or
774
+ "Vorbesprechungstermin").
775
+
776
+ The Studium project also supports this. The corresponding entry that
777
+ has to exist, in the file **lecture_information.yml**, is called
778
+ "vorbesprechungen:".
779
+
780
+ The **class Vorbesprechungen** can show upcoming preliminary
781
+ meetings. That way you should not miss the mandatory
782
+ attendance part anymore.
783
+
784
+ ## curricula.yml and registered curricula
785
+
786
+ The file <b>curricula.yml</b> collects the <b>id-numbers</b> of different
787
+ bachelor/master curricula, from <b>different universities</b>, in
788
+ <b>Austria</b>. It can be found under the <b>yaml/</b> subdirectory.
789
+
790
+ In theory this file could be extended to also include EU-wide curricula
791
+ listed, but I only limited it to my own potential use cases or that of
792
+ (former) colleagues.
793
+
794
+ If other people want to add different curricula numbers, subdirectories
795
+ may have to be created for each country - but for now, since nobody else
796
+ may need more curricula, the current structure will remain as it is.
797
+
798
+ Do also note that within the <b>yaml/ subdirectory</b>, there is another
799
+ directory called <b>curricula/</b>. The latter directory includes
800
+ several curricula with the respective lectures that belong to
801
+ this particular curriculum. These files are used to keep track of
802
+ which lectures are part of these curricula and whether you have already
803
+ successfully passed these or whether you have not.
804
+
805
+ ## Grades
806
+
807
+ Exams at universities are typically graded. Different countries make
808
+ use of different systems. For example, germany uses 6 grades whereas
809
+ Austria uses 5 grades.
810
+
811
+ If you want to output which exams fit to a certain grade, such as
812
+ <b>grade 2</b>, then you can use code written in
813
+ <b>studium/toplevel_methods/show_passed_exams_having_this_grade.rb</b>:
814
+
815
+ The API is:
816
+
817
+ Studium.show_passed_exams_having_this_grade
818
+ Studium.show_passed_exams_having_this_grade(2)
819
+ Studium.show_passed_exams_having_this_grade(4)
820
+
821
+ Simply pass the <b>number</b> to that method. In order for this to work,
822
+ you must use some file where the grades are stored. This can be
823
+ either in the file <b>lecture_information.yml</b> (I recommend
824
+ this approach), but it could also be a .csv file. (The latter is mostly
825
+ for legacy reasons; when this project was started, a .csv file was
826
+ used. Lateron it was realized that the yaml file would be much better
827
+ since it can also include native and nested data structures, which
828
+ makes it a lot easier to parse as-is, via the yaml wrapper that
829
+ ruby has.)
830
+
831
+ ## Expanding time ranges
832
+
833
+ Take a lecture where you may have to spend time in a laboratory,
834
+ from early morning to late evening, over a time period of three
835
+ weeks. (This is just an example to illustrate this subsection.)
836
+
837
+ You may see that the school/university displays the dates via
838
+ something like:
839
+
840
+ 15.10. - 2.11.2018,
841
+
842
+ Exactly like this (this is actually a copy/pasted "real-world"
843
+ example, including the trailing ',').
844
+
845
+ What does the above mean? Well, it means that the course will
846
+ start at the 15th of october, in the year 2018 (this is the
847
+ dd.mm.yyyy notation which is in general used in europe).
848
+
849
+ The - means "up until" and the end date is specified to be
850
+ at the second of november, in 2018.
851
+
852
+ Since I needed to quickly convert this into a specific time
853
+ for use in a calendar-like application, I needed a class
854
+ that can output an Array of dates where this course will
855
+ be held. So class <b>Studium::ExpandTimeRange</b> was
856
+ created.
857
+
858
+ It will accept such odd input and output an Array that can
859
+ be used in a yaml file, of specific dates, weekend-names
860
+ and the time. This then allows me to quickly copy/paste
861
+ this into the corresponding yaml file. (I needed to have
862
+ this expanded to every day because I also visually have
863
+ to look at that yaml file.)
864
+
865
+ Internally you can also use module-level instance methods, such
866
+ as:
867
+
868
+ Studium.expand_time_range()
869
+ Studium.expander()
870
+
871
+ Use whatever you prefer - the last method is quite short though,
872
+ so you can use it like this:
873
+
874
+ Studium.expander('15.10. - 2.11.2018')
875
+
876
+ This also works over the commandline, of course:
877
+
878
+ studium --expand-time-range="15.10. - 2.11.2018,"
879
+ studium --expander="15.10.-2.11.2018"
880
+
881
+ ## Improving this project
882
+
883
+ If other people would like to make use of this this project, I am open
884
+ for suggestions on how to make it more flexible.
885
+
886
+ Otherwise, I will just keep it here as it is, as I do (or rather, did)
887
+ require it in a few of my other projects. And if nobody else uses it
888
+ then this is also fine because I used to be the number one user here
889
+ anyway - the project had to solve existing problems, and it did so
890
+ fairly well. Extra work past this point (in the year 2018) is mostly
891
+ just to polish existing functionality, and to add a tiny bit of new
892
+ functionality every now and then. :)
893
+
894
+ ## The method obtain_this_value_from_hash()
895
+
896
+ This method resides in the file <b>studium/base/base.rb</b>.
897
+
898
+ It was created in order to access the main Hash - that is, the
899
+ Hash that is returned from the file <b>lecture_information.yml</b>.
900
+
901
+ I had to access the various entries from said file and this was
902
+ becoming a bit tedious. It became even more tedious because some
903
+ keys are Strings and some keys are Symbols. Since I did not want
904
+ to look up all the time whether I am dealing with Strings or
905
+ with Symbols, I transitioned into using that method instead.
906
+
907
+ It is thus a bit similar to <b>HashWithIndifferentAccess</b>, except
908
+ that it is just a simple method (and the main name is actually
909
+ <b>obtain()</b>).
910
+
911
+ ## Download the exam dataset
912
+
913
+ You can download the exam dataset by making use of this commandline
914
+ option:
915
+
916
+ studium --download-exam-dataset
917
+ studium --download-dataset
918
+
919
+ This will copy into the exam_topics/ subdirectory, so make sure
920
+ that you want this BEFORE calling the above. If in doubt, backup
921
+ your exam dataset and store it elsewhere on top of that (which
922
+ may be a good idea in general).
923
+
924
+ ## class Studium::ShowLecturesOfThisCurriculumId
925
+
926
+ **class Studium::ShowLecturesOfThisCurriculumId** can be used to output
927
+ all lectures that **belong to a particular curriculum ID**. That way
928
+ you can see which lectures could be done for a particular curriculum;
929
+ and which lectures have already been passed in this curriculum, too.
930
+
931
+ You can input either the curriculum ID to this class; or some
932
+ shortcuts.
933
+
934
+ The following input works on my home system, where
935
+ show_lectures_of_this_curriculum_id is alias to the .rb file that
936
+ holds **class Studium::ShowLecturesOfThisCurriculumId** can be used to output:
937
+
938
+ show_lectures_of_this_curriculum_id 066875
939
+ show_lectures_of_this_curriculum_id Bioinformatik
940
+ show_lectures_of_this_curriculum_id MolBio
941
+ show_lectures_of_this_curriculum_id Landschaftsplanung
942
+
943
+ ## Description of lectures
944
+
945
+ Some lectures are described in the file **lecture_information.yml**, but not
946
+ all are. I have described only some which were of relevance to me. Most of
947
+ these descriptions are in german, because the teaching language for most of
948
+ these lectures is in german.
949
+
950
+ If you ever want to add your own descriptions, you can do so, by populating
951
+ the entry called:
952
+
953
+ !ruby/symbol description: |
954
+
955
+ ## KDE Konsole support
956
+
957
+ In the past we could rename KDE Konsole tabs, but this behaviour is presently
958
+ (November 2018) slightly buggy. I have thus disabled it.
959
+
960
+ It may be re-enabled one day in the future, but via a configuration setting,
961
+ so that users can disable/enable it. By default it will then be disabled.
962
+
963
+ ## Studium::PassedEctsPerYear
964
+
965
+ If you need to find out how many ECTS points have been passed per given
966
+ year for a particular curriculum then you can use class
967
+ **Studium::PassedEctsPerYear**.
968
+
969
+ The input is the name of that curriculum. Obviously for this to work, the
970
+ curriculum has had to be registered first.
971
+
972
+ You can also invoke it from the commandline, via:
973
+
974
+ studium --passed-ects-per-year
975
+
976
+ ## Display the amount of ECTS points passed in Bachelor/Master lectures
977
+
978
+ You can find out how many ECTS points were passed in Bachelor and
979
+ Master lectures so far via:
980
+
981
+ studium --ects-bachelor-master
982
+
983
+ ## Using an environment variable to specify your replacement for lecture_information.yml
984
+
985
+ Some people may wish to use the project but wish to use another .yml
986
+ file, other than the default one called **lecture_information.yml**.
987
+ This is normally done so that you can, for example, add your own exam
988
+ dataset into this .yml file (and have it persistent, that is, stored
989
+ somewhere else on your filesystem, rather than use the bundled
990
+ variant that comes distributed with the **studium** gem itself).
991
+
992
+ For people who require this, there exists an **environment variable**
993
+ called **STUDIUM_FILE_LECTURE_INFORMATION**. Simply assign to this
994
+ variable the full path to your dataset, which must be a .yml file
995
+ in the same format.
996
+
997
+ Example for bash:
998
+
999
+ STUDIUM_FILE_LECTURE_INFORMATION=/opt/foo/bar.yml
1000
+
1001
+ ## class Studium::ShowCompletedEctsInAllCurricula
1002
+
1003
+ **class Studium::ShowCompletedEctsInAllCurricula** can be used
1004
+ to show the completed ECTS per curriculum, sorted by n ECTS (maximum
1005
+ amount of ECTS) first. This is really just an "overview" class that
1006
+ shall quickly tell you how many different curricula exist.
1007
+
1008
+ A threshold value ("cut off") exists, which is set to 5.0 ECTS
1009
+ by default. Only if you have passed exams worth a total of at
1010
+ the least 5.0 ECTS will they be shown. This is set via a constant
1011
+ which can be toggled.
1012
+
1013
+ ## class Studium::ShowConflictingLvaLectures
1014
+
1015
+ **class Studium::ShowConflictingLvaLectures** resides at the internal
1016
+ location <b>studium/utility_scripts/show_conflicting_lva_lectures.rb</b>,
1017
+ within the **studium** gem.
1018
+
1019
+ The purpose of this class is to **show conflicting lva-lecture dates**.
1020
+
1021
+ For example, say that you want to know whether there are any conflicts on
1022
+ the day **16.10.2018** (16th October in the year **2018**). Then you would
1023
+ simply pass that string into <b>class Studium::ShowConflictingLvaLectures</b>
1024
+ and that class will then display which exams and which lectures are on
1025
+ that date, **sorted by time**.
1026
+
1027
+ Example:
1028
+
1029
+ conflict 16.10.2018
1030
+
1031
+ (I use the alias called **conflict** to invoke that .rb file from the
1032
+ commandline.)
1033
+
1034
+ You can pass in any number of dates in the **dd.mm.yyyy** format, and the
1035
+ class will iterate through all of them and report which lectures and
1036
+ exams happen on each respective day.
1037
+
1038
+ You can use a range of dates too, if you pass in a **-** between two
1039
+ such dates.
1040
+
1041
+ Example:
1042
+
1043
+ conflict 16.10.2018-20.10.2018
1044
+
1045
+ This will be treated as if you would have given input from the
1046
+ 16th, 17th, 18th, 19th and 20th. That can thus be used as a
1047
+ sort of "mini-calendar", on the commandline, in regards to
1048
+ important lectures/exams. (Remember that you will have to
1049
+ populate and maintain the dataset in the file called
1050
+ **lecture_information.yml** for this to work.)
1051
+
1052
+ You can also use a few **abbreviations** for **class Studium::ShowConflictingLvaLectures**.
1053
+
1054
+ For example, the capital letter **A** is a hardcoded entry that I may
1055
+ change to indicate which is the starting day of university in a given
1056
+ semster, such as **01.10.2018** or any such day. The capital letter B
1057
+ then refers to the day after that day, the capital letter C refers to
1058
+ the day after B, and so forth. The idea here is to use just a one-letter
1059
+ abbreviation rather than have to input **4 - 10** characters instead.
1060
+
1061
+ As already stated in this subsection, the file **lecture_information.yml**
1062
+ needs to have these lectures/exams registered first, before <b>class
1063
+ Studium::ShowConflictingLvaLectures</b> is able to display them.
1064
+
1065
+ Why was this class added? I needed that functionality to plan **exam-dates**
1066
+ ahead of time. That way I could display which exams may be upcoming
1067
+ and so forth - helped me in regards to **time management**.
1068
+
1069
+ ## Underline-support for exam questions
1070
+
1071
+ You can use **ud**test**/ud** or **u**test**/u** to use underline-support
1072
+ in KDE konsole for question-answer combinations. (I can not use tags
1073
+ here in markdown, or so it seems, so assume that **ud** stands for the
1074
+ corresponding tag.)
1075
+
1076
+ ## Studium::ShowLecturers
1077
+
1078
+ class **Studium::ShowLecturers** will show the lecturers of each lecture
1079
+ in a given curriculum, on the commandline/terminal.
1080
+
1081
+ If an entry is missing the lectures then this will be reported on
1082
+ the commandline.
1083
+
1084
+ The idea behind this class is mostly to allow you to quickly find out
1085
+ which lecturer holds which particular lecture (and when).
1086
+
1087
+ It is not a too terribly useful class, though - mostly exists just
1088
+ for **sake of completeness**.
1089
+
1090
+ ## Generating .pdf files
1091
+
1092
+ You can generate some .pdf files about exam-topics.
1093
+
1094
+ For example, for the topic **amg**, you can generate a .pdf file
1095
+ through:
1096
+
1097
+ studium --generate-pdf-for=amg1
1098
+
1099
+ Do note that this functionality depends on the gem called **prawn**.
1100
+
1101
+ Here are more examples for pdf-generation:
1102
+
1103
+ studium --generate-pdf-for=biotech1
1104
+ studium --generate-pdf-for=biotech2
1105
+ studium --generate-pdf-for=virus1
1106
+ studium --generate-pdf-for=virus2
1107
+
1108
+ ## Colours
1109
+
1110
+ The **colours** within the Studium project are handled in two main ways:
1111
+
1112
+ (1) By an external gem called colours
1113
+
1114
+ (2) Internally in most classes of this project via the
1115
+ @use_colours instance variable.
1116
+
1117
+ In other words, if the toplevel instance variable **@use_colours** is set
1118
+ to **false** then the Studium project/namespace will not use colours at
1119
+ all. That way you can also disable colours for the whole project.
1120
+
1121
+ In ruby code you could invoke this method:
1122
+
1123
+ Studium.disable_colours
1124
+
1125
+ By default, on the **commandline**, for exam questions and exam answers
1126
+ to said question, colours can be defined by the user, through the file
1127
+ called <b>yaml/custom_colours.yml</b>.
1128
+
1129
+ That file has ***keys*** such as <b>colour_for_answers</b> and
1130
+ <b>colour_for_answers</b>, which denotes the colour to be used for
1131
+ when a question is asked and an answer to that question is revealed,
1132
+ on the commandline.
1133
+
1134
+ Currently this defaults to <b>olivedrab</b> for exam-questions and
1135
+ <b>lightslategray</b> for exam-answers, but you can use any other
1136
+ colour code here if you would like to. These HTML names are the
1137
+ preferred variants; if you need a link to these names, you could
1138
+ use this one here https://www.w3schools.com/colors/colors_hex.asp.
1139
+
1140
+ You can also change these colours through the commandline,
1141
+ as the next examples will show.
1142
+
1143
+ Examples:
1144
+
1145
+ studium --use-this-colour-for-exam-answers=slateblue
1146
+ studium --use-this-colour-for-exam-questions=grey
1147
+
1148
+ Do note that you can "style" exam questions and exam
1149
+ answers in various ways. For example, if you use "" quotes,
1150
+ then another colour will be used. If you use a tag such
1151
+ as <u> and </u> (a html pseudo-tag, u meaning underline),
1152
+ then the word will be underlined. You can also add HTML
1153
+ colours, such as %3Cslateblue %3Ethis will be in slateblue
1154
+ colour %3C/slateblue %3E. The latter variant may become shorter
1155
+ in the future, such as <slateblue>foo</> or something
1156
+ like that - but for now, you have to use the name of the
1157
+ HTML colour both in the opening and in the closing tag.
1158
+
1159
+ ## Registered URL entries to the (registered) lectures
1160
+
1161
+ Since as of 15.04.2019 (April 2019) it is possible to
1162
+ return the remote URL of a given registered lecture,
1163
+ through the **Studium** module.
1164
+
1165
+ Let's first show an example for this:
1166
+
1167
+ Studium.return_remote_homepage_of_this_lecture "270016 Massenspektrometrie" # => "https://ufind.univie.ac.at/de/course.html?lv=270016&semester=2019S"
1168
+ Studium.return_remote_homepage_of_this_lecture "Massenspektrometrie" # => "https://ufind.univie.ac.at/de/course.html?lv=270016&semester=2019S"
1169
+
1170
+ As you may be able to see, we take a shorter input string,
1171
+ aka the name of the lecture at hand, and then return the
1172
+ remote URL for that lecture.
1173
+
1174
+ This requires that there is a key called :homepage registered
1175
+ for that particular lecture in the file **lecture_information.yml**.
1176
+
1177
+ Right now only a very few lectures contain such an entry, but I
1178
+ will extend on this slowly, as time permits. The long term goal
1179
+ will be to provide a remote URL to **all** registered lectures.
1180
+ (This was already possible through the BeautifulUrl project,
1181
+ but I realized that it may be better to a) register this directly
1182
+ within the Studium project and b) to not depend on other projects
1183
+ if possible).
1184
+
1185
+ ## Encoding
1186
+
1187
+ The default encoding for the **Studium** gem used to be
1188
+ the **encoding ISO-8859-1**, aliased onto the constant
1189
+ called **ENCODING_ISO**. This setting (constant) can be found
1190
+ in the file **studium/encoding/encodings.rb**
1191
+
1192
+ Since as of **May 2019** the default encoding is now **UTF-8**.
1193
+
1194
+ In the event that you may wish to use another encoding, you
1195
+ can modify the yaml file called <b>default_encoding.yml</b>,
1196
+ at **studium/yaml/default_encoding.yml**. Simply add the name
1197
+ of the constant there.
1198
+
1199
+ The reason why I personally used **ISO-8859-1** as encoding is because
1200
+ german umlauts can be a hassle under UTF when combined with an
1201
+ old editor I used to use. I finally abandoned that editor in 2019
1202
+ and am now using another editor, so it was also possible to
1203
+ switch to UTF-8. Unicode/UTF has quite a massive
1204
+ <b>intrinsic complexity</b>, but it also has some useful things,
1205
+ such as emojis and unicode characters, which can be used on the
1206
+ terminal in a colourized manner. That was actually the primary
1207
+ reason why I switched into UTF-8, as odd as that may sound.
1208
+
1209
+ The Studium project will continue to allow any other encoding
1210
+ though, as long as it is supported by ruby itself.
1211
+
1212
+ For the time being, there also exists a commandline way to change
1213
+ the encoding in use for the Studium project.
1214
+
1215
+ studium --encoding=utf
1216
+ studium --encoding=iso1
1217
+
1218
+ If you are fine with UTF-8 then obviously you do not have to change
1219
+ anything.
1220
+
1221
+ ## Studium::SolvedEctsPerUniversity
1222
+
1223
+ If you have solved ECTS credits at different universities, and
1224
+ registered this in the file **lecture_information.yml**, then
1225
+ this class will give a little summary on the commandline as to
1226
+ the number of ECTS points solved at different universities.
1227
+
1228
+ ## Logging activities done within the Studium project
1229
+
1230
+ The **Studium project** will try, by default, to log a lot of
1231
+ information that may be useful in some cases. This is not a
1232
+ trivial task, because there are many different classes that
1233
+ make up this project.
1234
+
1235
+ The paragraph here aims to explain some of the rationale behind
1236
+ the logging.
1237
+
1238
+ class **Studium::Log::StoreLastQuestionAskedIntoFile** will store
1239
+ the last exam-question asked into a file, together with the time
1240
+ stamp. This can then be used to answer questions such as "have I
1241
+ already asked myself this question today?". So this may help
1242
+ for training purposes, e. g. when you wish to acquire some knowledge,
1243
+ and learn for new questions that way.
1244
+
1245
+ ## lecture_information.yml
1246
+
1247
+ The file <b>lecture_information.yml</b> is extremely important and rather
1248
+ central to the project, so this subsection will detail the rationale for
1249
+ this file and what information this file will contain.
1250
+
1251
+ The file **lecture_information.yml** is distributed as part of the **studium
1252
+ gem**, in the <b>yaml/</b> **subdirectory**.
1253
+
1254
+ In order to obtain the **full path to this file**, via the commandline,
1255
+ the following command can be used (commandline instruction):
1256
+
1257
+ studium --path-to-file-lecture-information
1258
+
1259
+ Essentially, lectures of universities can be **registered** in that file.
1260
+
1261
+ The **format** of that file is simple:
1262
+
1263
+ - The first line, within enclosed "" quotes, constitutes the **name** of
1264
+ the lecture. <b>Make sure that the name is exactly, 1:1, the official
1265
+ name of the lecture at hand.</b> Make sure that the name really is the
1266
+ name of the lecture, too - awkward errors may otherwise be the result.
1267
+
1268
+ Then, **additionally**, you must **prepend* the LV ID as the first entry
1269
+ in that particular line.
1270
+
1271
+ Complete example for this:
1272
+
1273
+ <b>"301617 Strukturbiologie I":</b>
1274
+
1275
+ So - first comes the particular **LV ID** entry and then comes the
1276
+ **name of the lecture**.
1277
+
1278
+ This is the **main entry** for that lecture in the **.yml** file.
1279
+
1280
+ Then, you can denote the content of the lecture at hand, via a
1281
+ Hash. You can use !ruby/symbol to use a symbol; it is a yaml file
1282
+ after all, with all pros and cons that come with it.
1283
+
1284
+ The **three main entries** are presently:
1285
+
1286
+ !ruby/symbol ects: 3.0
1287
+ !ruby/symbol university: BOKU
1288
+ !ruby/symbol language: german
1289
+
1290
+ More information can be added. See the file
1291
+ **studium/doc/documentation_for_the_file_lecture_information.md**
1292
+ for more information pertaining to this.
1293
+
1294
+ Why is this information about the available lectures important?
1295
+
1296
+ The information stored in the file **lecture_information.yml** is
1297
+ important because it allows us to automatically calculate the ECTS
1298
+ points in a given curriculum, and also keep track whether a
1299
+ particular exam has already been passed successfully. (The latter
1300
+ part has to be adjusted to your own exam-dataset of course.)
1301
+
1302
+ Some **helper classes** exist to sanitize or check the validity
1303
+ of the information contained in that file. For example,
1304
+ <b>class Studium::AutopurgeThisLectureDate</b> can be used to
1305
+ purge outdated lva-entries from the file, allowing you to
1306
+ more easily stay up-to-date with ongoing lectures.
1307
+
1308
+ (Obviously, for all of this to work, you need to have a
1309
+ file that keeps track of these different lectures in the
1310
+ first place.)
1311
+
1312
+ You can also check the validity of this file, from the
1313
+ commandline, through <b>class Studium::CheckTheLectureInformationFile</b>.
1314
+
1315
+ This can be invoked from the commandline as well:
1316
+
1317
+ studium --check-file-information
1318
+
1319
+ ## Studium.find_corresponding_exam_topic
1320
+
1321
+ The toplevel method **Studium.find_corresponding_exam_topic** is
1322
+ mostly a convenience method. It will accept an input, ideally
1323
+ a **String**, and return back the official, registered name
1324
+ of the particular exam topic at hand.
1325
+
1326
+ For example, 'genetik' becomes 'allgemeine_genetik', which
1327
+ is also the locally existing name for the exam-file at hand.
1328
+
1329
+ The idea behind that method is that we can take a shorter
1330
+ input, and still obtain the real filename. This is convenient
1331
+ because you can type just a few characters, and have the
1332
+ name of the exam-file returned. It allows us to be lazy here.
1333
+
1334
+ This is especially useful on the commandline, but it is also
1335
+ useful to aggregate it together in different ruby files of
1336
+ this project, and present a "unified" API for this topic.
1337
+
1338
+ Note that since as of 09.11.2019 (9th of November), the
1339
+ number of available exam-topics as part of this project
1340
+ are calculated automatically. Prior to that a constant was
1341
+ used that was hand-counted manually by me, which was too
1342
+ tedious and error-prone - so the new approach should work
1343
+ better for more exam topics in the future.
1344
+
1345
+ ## Studium::Exams::PushSolvedQuestionsOnTop
1346
+
1347
+ **class Studium::Exams::PushSolvedQuestionsOnTop** has a very simple
1348
+ task: it will move all lines ending with ' []' to the top of
1349
+ a given file, if at the least one ' []' is encountered in that
1350
+ file. Note that "top of the given file" specifically excludes
1351
+ comments, that is lines starting with **#**, and the first
1352
+ line after that '#' comment, which is just a newline for
1353
+ readability reasons.
1354
+
1355
+ The idea behind this class is really just to be able to quickly
1356
+ reshuffle all solved questions towards the top of the file;
1357
+ the unsolved questions will then be at the bottom of the file.
1358
+
1359
+ I needed this functionality because it allows me to quickly
1360
+ re-structure existing question-answers, into different
1361
+ topics/themes.
1362
+
1363
+ ## Studium::Statistics::TopStats
1364
+
1365
+ class **Studium::Statistics::TopStats** can be used to
1366
+ display the percentage value of questions answered in the
1367
+ registered exam topics.
1368
+
1369
+ Invocation example:
1370
+
1371
+ Studium::Statistics::TopStats.new(ARGV)
1372
+
1373
+ ## Display the upcoming exams, via the timetable
1374
+
1375
+ You can show the list of <b>upcoming exams</b> via:
1376
+
1377
+ studium --timetable
1378
+
1379
+ Note that this makes use of the information stored in the file called
1380
+ <b>lecture_information.yml</b>, which has to be maintained by someone.
1381
+ In this case, I am still maintaining the dataset stored in that
1382
+ file (in the year **2019**) - but this may not be the case at a later
1383
+ time, so ideally someone else should be able to maintain that file,
1384
+ or just anyone. I will add sufficient documentation to explain what
1385
+ has to be done, in order to maintain that single file.
1386
+
1387
+ At any rate, the class that is responsible for interpreting the dataset
1388
+ stored in that .yml file, is **class Studium::Exams::UpcomingImportantExams**.
1389
+
1390
+ This is the very same class that is invoked by issuing
1391
+ <b>studium --timetable</b>.
1392
+
1393
+ The exam dates should ideally follow the **dd.mm.yyyy notation**,
1394
+ that is <b>day.month.year</b>.
1395
+
1396
+ An example will be given next. Say that you have a course called
1397
+ <b>Physics for Engineers</b>. Two exams for this course are upcoming,
1398
+ which you may wish to **register** in the above-mentioned yaml
1399
+ file, like in such a way:
1400
+
1401
+ "Physics for Engineers":
1402
+ - "02.02.2018"
1403
+ - "02.03.2018"
1404
+
1405
+ The above means that the next exam for the course "**Physics for
1406
+ Engineers**" will occur at the beginning of february; and then
1407
+ the next exam will be at the beginning of march, and so
1408
+ forth. You should sort this by date.
1409
+
1410
+ In the .yml file, the exam-related entries are called
1411
+ <b>exams:</b> and should denote an **Array**.
1412
+
1413
+ Once the exam has been registered like that,
1414
+ **class Studium::Exams::UpcomingImportantExams**
1415
+ will make use of the information. That's about it for
1416
+ that class. :)
1417
+
1418
+ ## Showing upcoming exams
1419
+
1420
+ **class Studium::ShowUpcomingExams.new** can show **upcoming exams**,
1421
+ on the commandline.
1422
+
1423
+ The **first input argument** should be a number, e. g. 10, which
1424
+ means that the first 10 upcoming exams will be shown. For the
1425
+ next 20 exams, it would be **d20**.
1426
+
1427
+ Note that this **depends on aliases** called "**pwdstud1**" or
1428
+ "**pwdstud2**". These have to exist in a yaml file (on my system
1429
+ this is the yaml file named **cd_aliases.yml**). The display is
1430
+ on the commandline but in principle, a **GUI** could be used as
1431
+ well for this task.
1432
+
1433
+ Do note that when this class is invoked, it will additionally store
1434
+ the result into a file called, e. g. **d20.md** or **d10.md**. This
1435
+ would allow you to upload that file if you want to. I needed that
1436
+ functionality because I wanted to display the upcoming exams
1437
+ somewhere else other than on my machine, for when I am not at home.
1438
+
1439
+ Note that there does exist another class, which can show upcoming
1440
+ exams, via a **.html** file. This class is called
1441
+ <b>Studium::Exams::UpcomingImportantExams</b>.
1442
+
1443
+ You can invoke class <b>Studium::Exams::UpcomingImportantExams</b>
1444
+ from the commandline by issuing something like the following:
1445
+
1446
+ studium --upcoming-exams
1447
+
1448
+ The display will be a HTML table essentially. In order for this
1449
+ to work, the file **lecture_information.yml** must contain the
1450
+ information for these upcoming exams - it is the only file
1451
+ that you may have to update, though. (In theory code could
1452
+ be added to automatically check for new exams, but this
1453
+ requires more code to be written. I am not sure if I will
1454
+ add this, simply due to time constraints alone.)
1455
+
1456
+ You can pass in some other commands to the file from the
1457
+ commandline, such as **--do-not-exit** - see the **--help
1458
+ option** for more information pertaining to class
1459
+ <b>Studium::Exams::UpcomingImportantExams</b>.
1460
+
1461
+ ## Showing all STEOP lectures of a curriculum
1462
+
1463
+ You can show all STEOP lectures that are in a curriculum.
1464
+
1465
+ Issue something like the following on the commandline:
1466
+
1467
+ steop_lectures --curriculum1
1468
+ steop_lectures --curriculum2 # number-input should work
1469
+ steop_lectures --ktww
1470
+ steop_lectures --lbt # Bachelor Biotech-Curriculum at the BOKU
1471
+ steop_lectures --AW # as should abbreviations; AW is "Agrarwissenschaften"
1472
+ steop_lectures_in_this_curriculum --ktww
1473
+
1474
+ Where **steop_lectures** is an alias to where class
1475
+ **Studium::SteopLecturesInThisCurriculum** resides - usually
1476
+ in the file **studium/steop/steop_lectures_in_this_curriculum.rb**.
1477
+
1478
+ ## Graphviz: generating module dependencies
1479
+
1480
+ Since as of December 2019 it is possible to generate a module
1481
+ dependency image (as a .png file). This depends on the project
1482
+ called **ImageParadise**, and on the program called graphviz.
1483
+
1484
+ The code works, but it is not really optimized or very flexible.
1485
+ Consider it more as a proof-of-concept for the time being -
1486
+ perhaps in the future this may be extended.
1487
+
1488
+ (Note that most of the code for this can be found in the
1489
+ image_paradise gem; the studium gem only generates the
1490
+ Hash that is passed into image_paradise, and it is
1491
+ then the responsibility of image_paradise to generate
1492
+ the image file at hand.)
1493
+
1494
+ ## class Studium::SearchFor_nECTS
1495
+
1496
+ **class Studium::SearchFor_nECTS** can be used to show all lectures
1497
+ having the specified n ECTS credits.
1498
+
1499
+ So for example:
1500
+
1501
+ Studium::SearchFor_nECTS.new(1)
1502
+
1503
+ would show all lectures having 1.0 ECTS points.
1504
+
1505
+ You can invoke this class from the commandline as well.
1506
+
1507
+ I aliased the class to **nects**, and can then do the following:
1508
+
1509
+ nects 1.0 --master --show-numbers
1510
+
1511
+ This would show all lectures belonging to a master-curriculum
1512
+ having 1.0 ECTS points. Additionally, the leading LVA ID numbers
1513
+ will be shown as well.
1514
+
1515
+ ## The following curricula have been completely integrated into the Studium gem so far
1516
+
1517
+ The following **table** lists which curricula have been **integrated fully** so far,
1518
+ as of **March 2020**:
1519
+
1520
+ Number | Name of the Curriculum | Curriculum Number | University | URL to the curriculum
1521
+ --------|----------------------------------------------------|--------------------|--------------------------|---------------------------------------------------------------------------------------------------------
1522
+ **1** | **Bachelor LMBT** | **033 217** | **BOKU** | https://www.boku.ac.at/fileadmin/data/H01000/mitteilungsblatt/MB_2016_17/MB21/033_217_Bachelorcurriculum_LMBT_2017U.pdf
1523
+ **2** | **Bachelor KTWW** | **033 231** | **BOKU** | https://boku.ac.at/fileadmin/data/H01000/mitteilungsblatt/MB_2018_19/MB17/033_231_Bachelorcurriculum_KTWW_2019U.pdf
1524
+ **3** | **Bachelor Agrarwissenschaften** | **033 255** | **BOKU** | https://www.boku.ac.at/fileadmin/data/H01000/mitteilungsblatt/MB_2017_18/MB20/033_255_Bachelorcurriculum_AW_2018U.pdf
1525
+ **4** | **Bachelor Technische Chemie** | **033 290** | **TU** | http://www.tuwien.ac.at/fileadmin/t/studabt/downloads/Studienplaene/Oktober_2017/BachelorstudiumTechnischeChemieE033290.pdf
1526
+ **5** | **Bachelor Pharmazie** | **033 305** | **University of Vienna** | http://senat.univie.ac.at/fileadmin/user_upload/s_senat/konsolidierte_Bachelorcurricula/BA_Pharmazie.pdf
1527
+ **6** | **Bachelor Molekulare Biologie** | **033 630** | **University of Vienna** | https://senat.univie.ac.at/fileadmin/user_upload/s_senat/konsolidierte_Bachelorcurricula/BA_Biologie_Version2015_Juni2018.pdf
1528
+ **7** | **Bachelor Ernährungswissenschaften** | **033 638** | **University of Vienna** | https://nutrition.univie.ac.at/fileadmin/user_upload/i_ernaehrung/Download/Bachelor/Curriculum/Curriculum_Bachelor_Ernaehrungswissenschaften_2013__geringfuegige_AEnderung__2017_2018_40.pdf
1529
+ **8** | **Bachelor Chemie** | **033 662** | **University of Vienna** | http://senat.univie.ac.at/fileadmin/user_upload/s_senat/konsolidierte_Bachelorcurricula/BA_Chemie.pdf
1530
+ **9** | **Bachelor Molekularbiologie** (Graz) | **033 665** | **University Graz** | https://online.uni-graz.at/kfu_online/wbMitteilungsblaetter_neu.display?pNr=14602&pDocNr=3627868&pOrgNr=14190
1531
+ --------|----------------------------------------------------|--------------------|--------------------------|---------------------------------------------------------------------------------------------------------
1532
+ **10** | **Master LMBT** | **066 418** | **BOKU** | https://www.boku.ac.at/fileadmin/data/H01000/mitteilungsblatt/MB_2017_18/MB21/066_417_Mastercurriculum_LMWT_2018U.pdf
1533
+ **11** | **Master TU Vienna Biotechnology** | **066 490** | **TU** | https://www.tuwien.ac.at/fileadmin/t/studabt/downloads/Studienplaene/Oktober_2018/MasterTechnischeChemie.pdf
1534
+ **12** | **Master Pharmazie** | **066 605** | **University of Vienna** | http://senat.univie.ac.at/fileadmin/user_upload/s_senat/konsolidierte_Masterstudien/MA_Pharmazie.pdf
1535
+ **13** | **Master Immunobiologie** | **066 830** | **University of Vienna** | http://senat.univie.ac.at/fileadmin/user_upload/s_senat/konsolidierte_Masterstudien/MA_Molekulare_Mikrobiologie_Mikrobielle_Oekologie_und_Immunbiologie.pdf
1536
+ **14** | **Master Biologische Chemie** | **066 863** | **University of Vienna** | http://senat.univie.ac.at/fileadmin/user_upload/s_senat/konsolidierte_Masterstudien/MA_BiologischeChemie.pdf
1537
+ **15** | **Master Bioinformatik** | **066 875** | **University of Vienna** | http://senat.univie.ac.at/fileadmin/user_upload/s_senat/konsolidierte_Masterstudien/MA_Bioinformatik.pdf
1538
+ **16** | **Master Genetik und Entwicklungsbiologie** | **066 877** | **University of Vienna** | http://senat.univie.ac.at/fileadmin/user_upload/s_senat/konsolidierte_Masterstudien/MA_GenetikEntwicklungsbiologie.pdf
1539
+
1540
+ **BOKU** stands short for "Universität für Bodenkultur" (Wien / Vienna).
1541
+
1542
+ **TU** stands short for "Technische Universität" (Wien / Vienna), aka the
1543
+ "Technical University" in Vienna.
1544
+
1545
+ Keep in mind that the above table currently **only** lists curricula organized in
1546
+ **Austria**. If anyone else wants to extend this table to include other
1547
+ **european universities**, such as in Germany, feel free to do so - but the
1548
+ dataset for these universities will have to be registered **externally**
1549
+ (or at the least maintained by someone else for these other european
1550
+ universities).
1551
+
1552
+ I am willing to add required code to the studium gem, in order to make
1553
+ available any external dataset (and thus add other universities),
1554
+ though. I just can not maintain the dataset itself, since it will require
1555
+ constant adjustments. (In theory we could obtain the dataset dynamically,
1556
+ via HTTP-queries and parsing of the result, but no code doing this in
1557
+ an automated manner is presently part of the studium gem itself.)
1558
+
1559
+ ## Evaluating the progress in different curricula
1560
+
1561
+ You can evaluate your progress in different curricula via class
1562
+ <b>Studium::CurriculumComparer</b>. This class resides within the
1563
+ <b>statistics/</b> subdirectory of this gem.
1564
+
1565
+ In order for this class to work properly, all your successfully completed
1566
+ lectures have to be registered in the file <b>lecture_information.yml</b>
1567
+ prior to using that class. (Thus, you need to use your own dataset,
1568
+ but this is the only sensible thing to do; it would not make a lot of
1569
+ sense for you to use my dataset, since that makes no sense for
1570
+ **your** particular progress in your own studies. People will have
1571
+ to maintain their own dataset here.)
1572
+
1573
+ The class will then output which curricula have the highest amount
1574
+ of successfully completed ECTS points, sorted first. That way you
1575
+ can assess how far you have gotten in this or that curriculum so
1576
+ far.
1577
+
1578
+ ## Deprecations within the Studium gem
1579
+
1580
+ This subsection may eventually contain deprecations within the
1581
+ Studium gem itself.
1582
+
1583
+ - class Studium::Exams::ShowExamThemes was deprecated on
1584
+ 01.06.2020; most of its functionality was integrated into
1585
+ class Studium::Exams::ShowThemes. The new code is better
1586
+ than the old code, in my opinion. Less confusing.
1587
+
1588
+ ## Sinatra interface
1589
+
1590
+ The Studium project has a small sinatra interface, which can
1591
+ be started like this from the commandline:
1592
+
1593
+ studium --sinatra
1594
+
1595
+ (If this fails, try to reload again. On my system I have
1596
+ tied this to open it in the browser the moment sinatra
1597
+ is started, and this takes perhaps two or there seconds.)
1598
+
1599
+ Note that the sinatra-interface is fairly minimal, but it
1600
+ can be used to display different curricula. Expect this
1601
+ to be improved in the long run (past **June 2020**).
1602
+
1603
+ ## Determining the name of a curriculum
1604
+
1605
+ If you have a use case for determining (and returning) the
1606
+ name of a curriculum, you can do this:
1607
+
1608
+ require 'studium/toplevel_methods/name_of_this_curriculum.rb'
1609
+
1610
+ Studium.name_of_this_curriculum
1611
+ Studium.name_of_this_curriculum(:indi2)
1612
+ Studium.name_of_this_curriculum(:tu_wien_chem) # => "Technische Chemie"
1613
+
1614
+ ## class Studium::Exams::UpcomingExams
1615
+
1616
+ class Studium::Exams::UpcomingExams can report which exams are
1617
+ upcoming, via a HTML table.
1618
+
1619
+ ## class Studium::Calendar
1620
+
1621
+ This class attempts to display which courses are upcoming,
1622
+ so that you can plan ahead. It currently works only on
1623
+ the commandline, but in the future ruby-gtk bindings
1624
+ and a sinatra-web-interface may be added - we'll see.
1625
+
1626
+ The main dataset for this class is derived from the file
1627
+ called **participating_in_these_courses.yml**. The key
1628
+ that is listed there will become the full name.
1629
+
1630
+ The class was added in September 2020, so expect things
1631
+ to not work pefectly well for the time being - it will
1632
+ be improved upon at a later time.
1633
+
1634
+ ADD_CONTACT_INFORMATION