StudiePlanlæggeren 0.0.3

Java 1.2



Overview

This is an applet for calculating dependencies of courses and calculating a solution to having all the courses you wish. The applet was originally a command-line application - hence the simple GUI. Below is the explanation for the input to the application. (Dansk)




Example

# .ALT
# .PRINT_ALT

.ANTAG 01010 01012 01015 01020 49102 49104 49105 49108 85101 85111
.SEMESTER E
01032 "Signaler og linære systemer       " 75 E1 E4 01010 01011 & 01012 01014
01932 "Signaler og linære systemer, 2.del" 50 F1 01032
10010 "Mekanik og bølger                 " 75 E4 E5 F4 F5 01002 01003 01020
10012 "Termodynamik                      " 50 E6 F6 10010 & 01020 01021
21010 "Komisk Grundkursus                " 50 E4 F6
48000 "Elektromagnetisme                 " 75 F3 49102 & 01020 01021
49116 "Digitalteknik                     " 50 E2 49102 45110 49163
49142 "Algoritmer og datastrukturer      " 50 F7 49136 49137 49161
49161 "Programmel-konstruktion           " 50 E5 01015 49104
49230 "Objektor. analyse, design og impl." 50 F3 49142
49233 "Data-logik                        " 50 E2 49142
49238 "Programmel-specifikation          " 50 F5 49233 49232
49256 "Oversætterteknik                  " 75 E3 49142
49270 "Parallelprogrammering             " 50 E5 49142
49275 "Maskinnær programmering           " 75 F3 49270 49142
49285 "Adv. Algoritmer                   " 75 E7 49142
49351 "Vidr. Programmelspecifikation     " 50 F2 49238
49352 "Semantik                          " 50 E6 49233 49232
49372 "Distribuerede systemer            " 50 E5 49270 52235
49413 "Operativsystemer                  " 50 E1 49275
50250 "Mikrodatamatsystemer              " 50 E7 49105 21390 77142 45110 49102
# 52211 "Teleteknik 1                      " 50 E7 01032 & 49210 52201
# 52221 "Digital Kommunikation             " 75 E6 52201 49210 & 52211
# 52235 "Datanet                           " 50 F6 52211
# 52201 "Signalanalyse i telekommunikation " 50 E2 01032 01030 01031 01034 36260 & 01142 04041
# 49201 "Kredsløbsteori                    " 50 E4 49102 45110 & 49108 49101 & 01032
# 49220 "Analog elektronik                 " 50 E6 49101 49108 & 01032




Dansk vejledning

De 2 første linjer er en opsætningsparameter. Der findes i øjeblikket 2 opsætningsparameter:

Linjerne derefter opretter de fag, du gerne vil have. Som det ses er hvert felt adskilt af et/flere mellemrum. Syntaksæderen er ikke særlig god, så du må sørge for at formatet er:

[kursusnummer] [kursusnavn] [skemamodul] [forudsætningskurser]


Alle linjer med syntaksfejl bliver ignoreret af programmet!

Programmet var egentlig et kommandolinjeprogram, derfor det elementære brugerinterface. Fordelen er at du kan tage en tekst-editor på det system du nu end arbejder på og redigere input-filen. Derefter kan sende den gennem programmet.

Mht. beregningstiden er det svært at udtale sig om den nøjagtige afviklingstid, da der er for mange parametre med inde idet nogle af de kombinationer, man kunne tro var der jo ikke er der pga. afhængigheder. Jeg forventer at hvis du anvender .ALT vil næsten alle kombinationer blive prøvet, hvorfor afviklingstiden må ligge i retning af n!, hvor n er antallet af fag. Uden .ALT er der ikke en simpel beregning, kun overslag. På min P2-266 med JDK 1.2 er afviklingstiden for 21 fag 11 sek. og for 44 for stor til at jeg gad at vente (dvs. over 5 timers CPU-tid). Desuden har det betydning hvilken JVM, der anvendes. IBM's har et fortræffeligt ry, men er ikke til at downloade nemt (den er gratis), Sun's nye HotSpot har jeg ikke prøvet, men den er garanteret virkelig god (det er den samme kode der afvikles ofte). En native Java compiler er selvfølgelig at foretrække, men der er ingen på markedet i øjeblikket (der er en til Linux under udvikling ved jeg). Er det i øvrigt studierelevant beregning, for så kan man sikkert låne noget CPU-tid i G-Bar (husk på laveste prioritet! - er det renice det hedder). Så vidt jeg ved er der ingen mulighed for at der kan opstå en uendelig løkke, så i alle tilfælde skulle et resultat findes (evt. ingen løsning).

ADVARSEL: DETTE PROGRAM ER IKKE GENNEMTESTET - DVS. DU SKAL HUSKE AT CHECKE DENS BEREGNINGER - DU ER SELV ANSVARLIG FOR RETTE TILMELDINGER!




Instructions

The first two lines are statements to the application preparing the calculation. Currently the following two statements are supported:

The lines beneath the statements are course-definitions:

[course no.] [course name] [module] [prerequisites]


The applet will ignore all lines with syntax errors!

Use your favorite editor (eg. Emacs, VI or NotePad) to create the input for the program, run the program and save/print the output with your text-editor.

The time of the calculation is very hard to predict due to the many parameters and the algoritm, so only very rough estimates may be made. On my P2-266, 21 courses took 11 secs to solve, whereas 44 courses took more than I cared to wait for (that means more than 5 hours CPU-time). The only solution is to have patience - I do not believe that there is any possibilty of an infinite loop in the code, so a result should be reached in any event (perhaps no solution, but that is a result too).

WARNING: YOUR ARE RESPONSIBLE FOR YOUR OWN COURSES - THEREFORE BE SURE TO VERIFY THE OUTPUT FROM THE PROGRAM MANUALLY (I AM IN NO WAY RESPONSIBLE)! THIS IS STILL CONSIDERED BETA SOFTWARE




Files

StudiePlan.jar - Java ARchive med både kildekode og bytecode. Hurtigt download.
Planner.java - Selve hovedprogrammet
Kursus.java - Definition af et kursus og dets parametre
Semester.java - Definition af et semester - holder modul-liste og kontrollerer regler
IOSource.java - Tekstlinje Input/Output modul
Tokenizer.java - Opdeler input i små-bidder så læsningen bliver lettere
StudiePlan.java - Applet-kode
EKursusFejl.java - Exception, der kastes når en fejl i forbindelse med et kursus opstår
ESyntaks.java - Exception, der kastes i forbindelse med syntaksfejl i input
VectorSort.java - Modul til sortering af java.util.Vector
IVectorSort.java - Interface erklæring til VectorSort
Source code is in Danish




Back...





Last updated 2000-02-16 FlushedSector