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