Bachelor programme processor (Bachelorizer)
Bachelorizer is a command-line tool
to validate course compositions for bachelor programmes
at Roskilde University.
It was initially created
as a Computer Science mini project assignment
for the bachelor course in Computer Science
"Subject Module Course 2: Software Development F2025"
at Roskilde University,
done by Jonas Smedegaard.
Bachelorizer is publicly available as source.
Code execution
The code has only been verified to work from command-line
(it is unknown if it works in IDEs like Eclipse, Intellij or NetBeans).
GNUMake files are provided for building, packaging and running the code.
For those not using GNUMake,
Concrete example commands are provided below,
with notes on OpenJDK versions the commands are known to work with.
Execution succeeds with OpenJDK 17, 21, 22, 23, 24 and build 20 of 25,
except JavaFX/OpenJFX-related code failing with OpenJDK 17 and 21.
OpenJDK versions before 23 emit many errors
due to not recognizing the Markdown-flavored javadoc comments.
Code has been tested only against the following library releases:
Executing from source
The command make runsrc-dk.biks.bachelorizer
is equivalent to these three commands:
rm -rf mods/com.example.portfolio3
javac -Xlint -Xdoclint -implicit:none -d mods/com.example.portfolio3 \
src/com.example.portfolio3/module-info.java \
src/com.example.portfolio3/com/example/portfolio3/AbstractGraph.java \
src/com.example.portfolio3/com/example/portfolio3/AdjListGraph.java \
src/com.example.portfolio3/com/example/portfolio3/AdjMapGraph.java \
src/com.example.portfolio3/com/example/portfolio3/Edge.java \
src/com.example.portfolio3/com/example/portfolio3/GraphAlgorithms.java \
src/com.example.portfolio3/com/example/portfolio3/Graph.java \
src/com.example.portfolio3/com/example/portfolio3/Graphs.java \
src/com.example.portfolio3/com/example/portfolio3/MatrixGraph.java \
src/com.example.portfolio3/com/example/portfolio3/Vertex.java
java --module-path /usr/share/openjfx/lib:mods/com.example.portfolio3 \
--add-modules javafx.base,javafx.controls,javafx.graphics \
--enable-native-access=javafx.graphics \
src/dk.biks.bachelorizer/dk/biks/bachelorizer/Main.java
Executing from class files
The command make runclass-dk.biks.bachelorizer
is equivalent to these five commands:
rm -rf mods/com.example.portfolio3
javac -Xlint -Xdoclint -implicit:none -d mods/com.example.portfolio3 \
src/com.example.portfolio3/module-info.java \
src/com.example.portfolio3/com/example/portfolio3/AbstractGraph.java \
src/com.example.portfolio3/com/example/portfolio3/AdjListGraph.java \
src/com.example.portfolio3/com/example/portfolio3/AdjMapGraph.java \
src/com.example.portfolio3/com/example/portfolio3/Edge.java \
src/com.example.portfolio3/com/example/portfolio3/GraphAlgorithms.java \
src/com.example.portfolio3/com/example/portfolio3/Graph.java \
src/com.example.portfolio3/com/example/portfolio3/Graphs.java \
src/com.example.portfolio3/com/example/portfolio3/MatrixGraph.java \
src/com.example.portfolio3/com/example/portfolio3/Vertex.java
rm -rf mods/dk.biks.bachelorizer
javac --module-path /usr/share/openjfx/lib:mods/com.example.portfolio3 \
--add-modules javafx.base,javafx.controls,javafx.graphics \
-Xlint -Xdoclint -implicit:none \
-d mods/dk.biks.bachelorizer \
src/dk.biks.bachelorizer/module-info.java \
src/dk.biks.bachelorizer/dk/biks/bachelorizer/Main.java \
src/dk.biks.bachelorizer/dk/biks/bachelorizer/Combi.java \
src/dk.biks.bachelorizer/dk/biks/bachelorizer/Window.java \
src/dk.biks.bachelorizer/dk/biks/bachelorizer/Control.java \
src/dk.biks.bachelorizer/dk/biks/bachelorizer/GUI.java \
src/dk.biks.bachelorizer/dk/biks/bachelorizer/Person.java
java --module-path mods/dk.biks.bachelorizer \
:/usr/share/openjfx/lib:mods/com.example.portfolio3 \
--add-modules javafx.base,javafx.controls,javafx.graphics \
--enable-native-access=javafx.graphics \
-m dk.biks.bachelorizer/dk.biks.bachelorizer.Main
Executing from jar containers
The command make runjar-dk.biks.bachelorizer
is equivalent to these six commands:
rm -rf mods/com.example.portfolio3
javac -Xlint -Xdoclint -implicit:none -d mods/com.example.portfolio3 \
src/com.example.portfolio3/module-info.java \
src/com.example.portfolio3/com/example/portfolio3/AbstractGraph.java \
src/com.example.portfolio3/com/example/portfolio3/AdjListGraph.java \
src/com.example.portfolio3/com/example/portfolio3/AdjMapGraph.java \
src/com.example.portfolio3/com/example/portfolio3/Edge.java \
src/com.example.portfolio3/com/example/portfolio3/GraphAlgorithms.java \
src/com.example.portfolio3/com/example/portfolio3/Graph.java \
src/com.example.portfolio3/com/example/portfolio3/Graphs.java \
src/com.example.portfolio3/com/example/portfolio3/MatrixGraph.java \
src/com.example.portfolio3/com/example/portfolio3/Vertex.java
rm -rf mods/dk.biks.bachelorizer
javac --module-path /usr/share/openjfx/lib:mods/com.example.portfolio3 \
--add-modules javafx.base,javafx.controls,javafx.graphics \
-Xlint -Xdoclint -implicit:none \
-d mods/dk.biks.bachelorizer \
src/dk.biks.bachelorizer/module-info.java \
src/dk.biks.bachelorizer/dk/biks/bachelorizer/Main.java \
src/dk.biks.bachelorizer/dk/biks/bachelorizer/Combi.java \
src/dk.biks.bachelorizer/dk/biks/bachelorizer/Window.java \
src/dk.biks.bachelorizer/dk/biks/bachelorizer/Control.java \
src/dk.biks.bachelorizer/dk/biks/bachelorizer/GUI.java \
src/dk.biks.bachelorizer/dk/biks/bachelorizer/Person.java
jar --create --file dk.biks.bachelorizer.jar \
--main-class dk.biks.bachelorizer.Main \
-C mods/dk.biks.bachelorizer .
java --module-path dk.biks.bachelorizer.jar\
:/usr/share/openjfx/lib:mods/com.example.portfolio3 \
--enable-native-access=javafx.graphics \
--module dk.biks.bachelorizer
License
Copyright © 2025 Jonas Smedegaard
Except when otherwise noted,
this work is licensed
under a Creative Commons Attribution-ShareAlike 4.0 International License
(CC-BY-SA-4.0).