diff --git a/README.md b/README.md
index 2044088..fb11117 100644
--- a/README.md
+++ b/README.md
@@ -18,40 +18,113 @@ Feel free to explore, **contribute**, and make the most of this repository as yo
## Programmes
Click to expand the list of courses for each programme.
-
-👇 Software Engineering and Management BSc.
+👇 N1SOF - Software Engineering and Management Bachelor's Programme
+
+### Term 1:
+
+- [DIT043 - Object-Oriented Programming](/exams/DIT043)
+- [DIT023 - Mathematical Foundations for Software Engineering](/exams/DIT023)
+- [DIT046 - Requirements and User Experience](/exams/DIT046)
+
+***
+
+### Term 2:
+
+- [DIT033 - Data Management](/exams/DIT033)
+- [DIT182 - Data Structures and Algorithms](/exams/DIT182)
+- [DIT185 - Software Analysis and Design](/exams/DIT185)
+
+***
+
+### Term 3:
+
+- [DIT345 - Fundamentals of Software Architecture](/exams/DIT345)
+- [DIT342 - Web Development](/exams/DIT342)
+- [DIT348 - Software Development Methodologies](/exams/DIT348)
+
+***
-### Year 1:
+### Term 4:
-- [DIT023 - Mathematical Foundations for Software Engineering](https://github.com/skipgu/past-exams/tree/main/exams/DIT023)
-- [DIT033 - Data Management](https://github.com/skipgu/past-exams/tree/main/exams/DIT033)
-- [DIT043 - Object oriented programming](https://github.com/skipgu/past-exams/tree/main/exams/DIT043)
-- [DIT046 - Requirements and User Experience](https://github.com/skipgu/past-exams/tree/main/exams/DIT046)
-- [DIT182 - Datastructures and Algorithms - Chalmers repository](https://github.com/ChalmersGU-data-structure-courses/past-exams/tree/898fde17e9b76906ed57fdbb963f4281a84e0e70)
-- [DIT185- Software Analysis and Design](https://github.com/skipgu/past-exams/tree/main/exams/DIT185)
+- [DIT633 - Development of Embedded and Real-Time Systems](/exams/DIT633)
+- [DIT636 - Software Quality and Testing](/exams/DIT636)
***
-### Year 2:
+### Term 5:
-- [DIT342 - Web Development](https://github.com/skipgu/past-exams/tree/main/exams/DIT342)
-- [DIT345 - Software Architecture](https://github.com/skipgu/past-exams/tree/main/exams/DIT345)
-- [DIT348 - Software Development Methodologies](https://github.com/skipgu/past-exams/tree/main/exams/DIT348)
-- [DIT633 - Development of Embedded and Realtime systems](https://github.com/skipgu/past-exams/tree/main/exams/DIT633)
-- [DIT636 - Software Quality and Testing](https://github.com/skipgu/past-exams/tree/main/exams/DIT636)
+- [DIT822 - Software engineering for AI systems](/exams/DIT822)
***
-### Year 3:
+### Term 6:
-- [DIT822 - Software Engineering for AI Systems](https://github.com/skipgu/past-exams/tree/main/exams/DIT822)
+- [DIT822 - Software engineering for AI systems](/exams/DIT822)
-👇 TODO
: Add other programmes
+👇 N2SOF - Software Engineering and Management Master's Programme
+
+- [DIT431 - High Performance Parallel Programming](/exams/DIT431)
+
+
-This section is currently under construction. Please check back later!
+
+👇 N1COS - Datavetenskapligt program
+
+- [DIT093 - Algorithms](/exams/DIT093)
+- [DIT185 - Software Analysis and Design](/exams/DIT185)
+- [DIT342 - Web Development](/exams/DIT342)
+- [DIT348 - Software Development Methodologies](/exams/DIT348)
+- [DIT401 - Operating Systems](/exams/DIT401)
+
+
+
+
+👇 N2ADS - Applied Data Science Master's Programme
+
+- [DIT033 - Data Management](/exams/DIT033)
+- [DIT046 - Requirements and User Experience](/exams/DIT046)
+- [DIT093 - Algorithms](/exams/DIT093)
+- [DIT182 - Data Structures and Algorithms](/exams/DIT182)
+- [DIT401 - Operating Systems](/exams/DIT401)
+- [DIT431 - High Performance Parallel Programming](/exams/DIT431)
+- [DIT822 - Software engineering for AI systems](/exams/DIT822)
+
+
+
+
+👇 N2COS - Computer Science Master's Programme
+
+- [DIT093 - Algorithms](/exams/DIT093)
+- [DIT401 - Operating Systems](/exams/DIT401)
+- [DIT431 - High Performance Parallel Programming](/exams/DIT431)
+
+
+
+👇 NONE - Courses that have yet to be assigned to any programmes
+
+- [DAT050 - Objektorientered programmering](/exams/DAT050)
+- [DAT060 - Logic in Computer Science](/exams/DAT060)
+- [DAT105 - Computer Architecture](/exams/DAT105)
+- [DAT246 - Empirical Software Engineering](/exams/DAT246)
+- [DAT400 - High Performance Parallel Programming](/exams/DAT400)
+- [DAT555 - Programmeringsteknik : Python](/exams/DAT555)
+- [DIT440 - Introduction to Functional Programming](/exams/DIT440)
+- [DIT670 - Computer Networks](/exams/DIT670)
+- [DIT792 - Grundläggande Datorteknik](/exams/DIT792)
+- [DIT852 - Introduction to Data Science](/exams/DIT852)
+- [DIT962 - Datastrukturer](/exams/DIT962)
+- [DIT980 - Diskret matematik för Datavetare](/exams/DIT980)
+- [DIT984 - Diskret matematik för Datavetare](/exams/DIT984)
+- [EDA093 - Operating Systems](/exams/EDA093)
+- [EDA387 - Computer Networks](/exams/EDA387)
+- [EDA452 - Grundläggunde daterteknik](/exams/EDA452)
+- [TDA384 - Principles of concurrent programming](/exams/TDA384)
+- [TDA548 - Grundlöggande programvarutveckling](/exams/TDA548)
+- [TDA555 - Introduction to functional programming](/exams/TDA555)
+- [TIN093 - Algorithms](/exams/TIN093)
diff --git a/_config.yml b/_config.yml
index b4a178e..cb6ca0a 100644
--- a/_config.yml
+++ b/_config.yml
@@ -2,4 +2,4 @@ markdown: CommonMarkGhPages
commonmark:
options: ["UNSAFE", "SMART", "FOOTNOTES"]
extensions: ["strikethrough", "autolink", "table", "tagfilter"]
-exclude: ["_site", "exams", ".github", "scripts", "Gemfile", "Gemfile.lock"]
+exclude: ["_site", "exams", "courses", ".github", "scripts", "Gemfile", "Gemfile.lock"]
diff --git a/courses/courses.json b/courses/courses.json
new file mode 100644
index 0000000..43b18fd
--- /dev/null
+++ b/courses/courses.json
@@ -0,0 +1,548 @@
+{
+ "DIT837": {
+ "name": "Bachelor Thesis in Software Engineering and Management",
+ "credits": 15,
+ "level": "bachelor",
+ "programmes": ["N1SOF"]
+ },
+ "DIT828": {
+ "name": "Project: Software Innovation",
+ "credits": 15,
+ "level": "bachelor",
+ "programmes": ["N1SOF"]
+ },
+ "DIT826": {
+ "name": "Software Engineering for Data-Intensive AI Applications",
+ "credits": 15,
+ "level": "bachelor",
+ "programmes": ["N1SOF"]
+ },
+ "DIT822": {
+ "name": "Software engineering for AI systems",
+ "credits": 7.5,
+ "level": "bachelor",
+ "programmes": ["N2ADS", "N1SOF"]
+ },
+ "DIT639": {
+ "name": "Cyber Physical Systems and Systems of Systems",
+ "credits": 7.5,
+ "level": "bachelor",
+ "programmes": ["N1SOF", "N1SEM"]
+ },
+ "DIT636": {
+ "name": "Software Quality and Testing",
+ "credits": 7.5,
+ "level": "bachelor",
+ "programmes": ["N1SOF"]
+ },
+ "DIT356": {
+ "name": "Mini Project: Distributed Systems Development",
+ "credits": 7.5,
+ "level": "bachelor",
+ "programmes": ["N1SOF"]
+ },
+ "DIT342": {
+ "name": "Web Development",
+ "credits": 7.5,
+ "level": "bachelor",
+ "programmes": ["N1COS", "N1SOF"]
+ },
+ "DIT113": {
+ "name": "Mini Project: Systems Development",
+ "credits": 7.5,
+ "level": "bachelor",
+ "programmes": ["N1SOF", "N1SEM"]
+ },
+ "DIT094": {
+ "name": "Mini Project: Team Programming",
+ "credits": 7.5,
+ "level": "bachelor",
+ "programmes": ["N1SOF"]
+ },
+ "DIT023": {
+ "name": "Mathematical Foundations for Software Engineering",
+ "credits": 7.5,
+ "level": "bachelor",
+ "programmes": ["N1SOF"]
+ },
+ "DIT043": {
+ "name": "Object-Oriented Programming",
+ "credits": 7.5,
+ "level": "bachelor",
+ "programmes": ["N1SOF"]
+ },
+ "DIT127": {
+ "name": "Web applications",
+ "credits": 7.5,
+ "level": "bachelor",
+ "programmes": ["N2COS", "N1COS"]
+ },
+ "DIT235": {
+ "name": "Types for Programs and Proofs",
+ "credits": 7.5,
+ "level": "master",
+ "programmes": ["N2COS", "N1COS"]
+ },
+ "DIT084": {
+ "name": "Testing, Debugging and Verification",
+ "credits": 7.5,
+ "level": "bachelor",
+ "programmes": ["N2COS", "N2ADS", "N1COS", "N2SOF"]
+ },
+ "DIT147": {
+ "name": "Technical writing in computer systems and networks",
+ "credits": 7.5,
+ "level": "master",
+ "programmes": ["N2COS"]
+ },
+ "DIT107": {
+ "name": "Tangible interaction",
+ "credits": 7.5,
+ "level": "master",
+ "programmes": ["N2COS", "N1COS"]
+ },
+ "DIT056": {
+ "name": "Sustainable computing",
+ "credits": 7.5,
+ "level": "master",
+ "programmes": ["N2COS", "N1COS"]
+ },
+ "DIT863": {
+ "name": "Statistical Methods for Data Science",
+ "credits": 7.5,
+ "level": "master",
+ "programmes": ["N2ADS"]
+ },
+ "DIT836": {
+ "name": "Startups and Industrial Software Product Management",
+ "credits": 7.5,
+ "level": "bachelor",
+ "programmes": ["N1SOF"]
+ },
+ "DIT265": {
+ "name": "Software Evolution Project",
+ "credits": 7.5,
+ "level": "master",
+ "programmes": ["N2COS", "N2SOF"]
+ },
+ "DIT588": {
+ "name": "Software Evolution Project",
+ "credits": 15,
+ "level": "master",
+ "programmes": ["N2COS", "N2SOF"]
+ },
+ "DIT348": {
+ "name": "Software Development Methodologies",
+ "credits": 7.5,
+ "level": "bachelor",
+ "programmes": ["N1COS", "N1SOF"]
+ },
+ "DIT185": {
+ "name": "Software Analysis and Design",
+ "credits": 7.5,
+ "level": "bachelor",
+ "programmes": ["N1COS", "N1SOF", "N1SEM"]
+ },
+ "DIT046": {
+ "name": "Requirements and User Experience",
+ "credits": 7.5,
+ "level": "bachelor",
+ "programmes": ["N2ADS", "N1SOF", "N1SEM"]
+ },
+ "DIT162": {
+ "name": "Real-Time Systems",
+ "credits": 7.5,
+ "level": "master",
+ "programmes": ["N2COS", "N2ADS", "N2GDT", "N1COS", "N2SOF"]
+ },
+ "DIT843": {
+ "name": "Quality Assurance and Testing",
+ "credits": 7.5,
+ "level": "master",
+ "programmes": ["N2COS", "N2GDT", "N2SOF"]
+ },
+ "DIT231": {
+ "name": "Programming Language Technology",
+ "credits": 7.5,
+ "level": "master",
+ "programmes": ["N2COS", "N2ADS", "N1COS", "N2SOM"]
+ },
+ "DIT392": {
+ "name": "Principles of Concurrent Programming",
+ "credits": 7.5,
+ "level": "bachelor",
+ "programmes": ["N2COS", "N2MAT", "N2ADS", "N1MAT", "N1COS", "N2SOM", "N2SOF"]
+ },
+ "DIT362": {
+ "name": "Parallel Computer Architecture",
+ "credits": 7.5,
+ "level": "master",
+ "programmes": ["N2COS"]
+ },
+ "DIT401": {
+ "name": "Operating Systems",
+ "credits": 7.5,
+ "level": "master",
+ "programmes": ["N2COS", "N2ADS", "N1COS"]
+ },
+ "DIT071": {
+ "name": "Network Security",
+ "credits": 7.5,
+ "level": "master",
+ "programmes": ["N2COS", "N2ADS", "N1COS", "NDATM"]
+ },
+ "DIT075": {
+ "name": "Mobile Computing: Design and Implementation",
+ "credits": 7.5,
+ "level": "master",
+ "programmes": ["N2COS", "N1COS"]
+ },
+ "DIT203": {
+ "name": "Logic in Computer Science",
+ "credits": 7.5,
+ "level": "master",
+ "programmes": ["N2MAT", "N2COS", "N1COS", "N1MAT"]
+ },
+ "DIT202": {
+ "name": "Logic in Computer Science",
+ "credits": 7.5,
+ "level": "master",
+ "programmes": ["N2MAT", "N2COS", "N1COS", "N1MAT"]
+ },
+ "DIT101": {
+ "name": "Language-Based Security",
+ "credits": 7.5,
+ "level": "master",
+ "programmes": ["N2COS", "N2ADS", "N2SOM", "N1COS", "NDATM"]
+ },
+ "DIT407": {
+ "name": "Introduction to Data science and AI",
+ "credits": 7.5,
+ "level": "bachelor",
+ "programmes": ["N2MAT", "N2COS", "N1MAT", "N1COS", "N2SOF"]
+ },
+ "DIT998": {
+ "name": "Interactive and linear storytelling with digital media",
+ "credits": 7.5,
+ "level": "master",
+ "programmes": ["N2GDT"]
+ },
+ "DIT104": {
+ "name": "Interaction design methodology",
+ "credits": 7.5,
+ "level": "master",
+ "programmes": ["N2COS", "N2ADS", "N2GDT"]
+ },
+ "DIT109": {
+ "name": "Information Visualization",
+ "credits": 7.5,
+ "level": "master",
+ "programmes": ["N2COS", "N2ADS", "N1COS", "N2GDT"]
+ },
+ "DIT007": {
+ "name": "Human-Robot Interaction Design",
+ "credits": 7.5,
+ "level": "master",
+ "programmes": []
+ },
+ "DIT096": {
+ "name": "Human-Computer Interaction",
+ "credits": 7.5,
+ "level": "bachelor",
+ "programmes": ["N2ADS", "N1COS", "N2SOF"]
+ },
+ "DIT431": {
+ "name": "High Performance Parallel Programming",
+ "credits": 7.5,
+ "level": "master",
+ "programmes": ["N2COS", "N2ADS", "N2SOF"]
+ },
+ "DIT493": {
+ "name": "Graphical Interfaces",
+ "credits": 7.5,
+ "level": "master",
+ "programmes": ["N2COS", "N2ADS", "N1COS"]
+ },
+ "DIT098": {
+ "name": "Gameplay Design",
+ "credits": 7.5,
+ "level": "master",
+ "programmes": ["N2GDT", "N2COS", "N2ADS", "N2GDT", "N2SOF"]
+ },
+ "DIT572": {
+ "name": "Game Engine Architecture",
+ "credits": 7.5,
+ "level": "master",
+ "programmes": ["N2COS", "N1COS", "N2GDT"]
+ },
+ "DIT345": {
+ "name": "Fundamentals of Software Architecture",
+ "credits": 7.5,
+ "level": "bachelor",
+ "programmes": ["N1SOF"]
+ },
+ "DIT143": {
+ "name": "Functional Programming",
+ "credits": 7.5,
+ "level": "bachelor",
+ "programmes": ["N2MAT", "N2COS", "N2ADS", "N1MAT", "N2SOF"]
+ },
+ "DIT272": {
+ "name": "Formal Methods in Software Development",
+ "credits": 7.5,
+ "level": "master",
+ "programmes": ["N2COS", "N1COS"]
+ },
+ "DIT323": {
+ "name": "Finite automata and formal languages",
+ "credits": 7.5,
+ "level": "bachelor",
+ "programmes": ["N2MAT", "N2COS", "N1MAT", "N1COS"]
+ },
+ "DIT246": {
+ "name": "Empirical Software Engineering",
+ "credits": 7.5,
+ "level": "master",
+ "programmes": ["N2COS", "N2ADS", "N2GDT", "N2SOF"]
+ },
+ "DIT983": {
+ "name": "Domain Specific Languages of Mathematics",
+ "credits": 7.5,
+ "level": "bachelor",
+ "programmes": ["N2COS", "N2MAT", "N2ADS", "N1MAT", "N1COS"]
+ },
+ "DIT290": {
+ "name": "Distributed Systems, Advanced Course",
+ "credits": 7.5,
+ "level": "master",
+ "programmes": ["N2COS", "N2ADS", "N2SOM", "N1COS", "NDATM"]
+ },
+ "DIT240": {
+ "name": "Distributed Systems",
+ "credits": 7.5,
+ "level": "master",
+ "programmes": ["N2COS", "N2ADS", "N1COS"]
+ },
+ "DIT206": {
+ "name": "Discrete optimization",
+ "credits": 7.5,
+ "level": "master",
+ "programmes": ["N2MAT", "N2COS", "N2ADS", "N1COS", "N2SOF"]
+ },
+ "DIT004": {
+ "name": "Digitalization in a changing world",
+ "credits": 7.5,
+ "level": "bachelor",
+ "programmes": []
+ },
+ "DIT798": {
+ "name": "Digital design",
+ "credits": 7.5,
+ "level": "bachelor",
+ "programmes": ["N2COS", "N1COS"]
+ },
+ "DIT633": {
+ "name": "Development of Embedded and Real-Time Systems",
+ "credits": 7.5,
+ "level": "bachelor",
+ "programmes": ["N1SOF"]
+ },
+ "DIT728": {
+ "name": "Design of AI systems",
+ "credits": 7.5,
+ "level": "master",
+ "programmes": ["N2MAT", "N2COS", "N2ADS"]
+ },
+ "DIT414": {
+ "name": "Design and construction of digital games",
+ "credits": 7.5,
+ "level": "bachelor",
+ "programmes": ["N1COS", "N1SOF"]
+ },
+ "DIT173": {
+ "name": "Dependable Real-Time Systems",
+ "credits": 7.5,
+ "level": "master",
+ "programmes": ["N2COS", "N2ADS", "N1COS", "N2GDT"]
+ },
+ "DIT622": {
+ "name": "Databases",
+ "credits": 7.5,
+ "level": "bachelor",
+ "programmes": ["N2MAT", "N2COS", "N2ADS", "N1MAT", "N1COS"]
+ },
+ "DIT182": {
+ "name": "Data Structures and Algorithms",
+ "credits": 7.5,
+ "level": "bachelor",
+ "programmes": ["N2MAT", "N2ADS", "N1MAT", "N1SOF", "N1SEM"]
+ },
+ "DIT033": {
+ "name": "Data Management",
+ "credits": 7.5,
+ "level": "bachelor",
+ "programmes": ["N2ADS", "N1SOF", "N1SEM"]
+ },
+ "DIT616": {
+ "name": "Data-driven support for cyber-physical systems",
+ "credits": 7.5,
+ "level": "master",
+ "programmes": ["N2COS"]
+ },
+ "DIT468": {
+ "name": "Current Trends in Gaming",
+ "credits": 7.5,
+ "level": "master",
+ "programmes": ["N2GDT"]
+ },
+ "DIT250": {
+ "name": "Cryptography",
+ "credits": 7.5,
+ "level": "master",
+ "programmes": ["N2COS", "N2ADS", "N1MAT", "N1COS"]
+ },
+ "DIT642": {
+ "name": "Computer Security",
+ "credits": 7.5,
+ "level": "master",
+ "programmes": ["N2COS", "N2ADS", "N1COS"]
+ },
+ "DIT671": {
+ "name": "Computer Networks",
+ "credits": 7.5,
+ "level": "master",
+ "programmes": ["N2COS"]
+ },
+ "DIT423": {
+ "name": "Computer communication",
+ "credits": 7.5,
+ "level": "bachelor",
+ "programmes": ["N2COS", "N2ADS", "N1COS"]
+ },
+ "DIT051": {
+ "name": "Computer Architecture",
+ "credits": 7.5,
+ "level": "master",
+ "programmes": ["N2COS", "N2ADS", "N2SEM", "N2GDT", "N2SOM", "N1COS", "NDATM"]
+ },
+ "DIT743": {
+ "name": "Computational Methods in Bioinformatics",
+ "credits": 7.5,
+ "level": "master",
+ "programmes": ["N2COS", "N2MAT", "N2ADS", "N1COS"]
+ },
+ "DIT313": {
+ "name": "Computability",
+ "credits": 7.5,
+ "level": "master",
+ "programmes": ["N2COS", "N1COS"]
+ },
+ "DIT301": {
+ "name": "Compiler Construction",
+ "credits": 7.5,
+ "level": "master",
+ "programmes": ["N2COS", "N2ADS", "N1COS", "N2GDT", "N2SOF"]
+ },
+ "DIT038": {
+ "name": "Change Management in Software Development Organizations",
+ "credits": 7.5,
+ "level": "bachelor",
+ "programmes": ["N1SOB", "N1SEM"]
+ },
+ "DIT849": {
+ "name": "Behavioral Software Engineering",
+ "credits": 7.5,
+ "level": "master",
+ "programmes": ["N2COS", "N2GDT", "N2SOF"]
+ },
+ "DIT291": {
+ "name": "Architectures for Scale-out Systems",
+ "credits": 7.5,
+ "level": "master",
+ "programmes": ["N2COS", "N2SOF"]
+ },
+ "DIT026": {
+ "name": "Applied mathematical thinking",
+ "credits": 7.5,
+ "level": "bachelor",
+ "programmes": []
+ },
+ "DIT025": {
+ "name": "Applied mathematical thinking",
+ "credits": 7.5,
+ "level": "bachelor",
+ "programmes": []
+ },
+ "DIT867": {
+ "name": "Applied Machine Learning",
+ "credits": 7.5,
+ "level": "master",
+ "programmes": ["N2COS", "N2MAT", "N2ADS", "N1COS", "N2SOF"]
+ },
+ "DIT248": {
+ "name": "An introduction to Game Research",
+ "credits": 7.5,
+ "level": "master",
+ "programmes": ["H2DHU", "N2GDT"]
+ },
+ "DIT382": {
+ "name": "Algorithms for Machine Learning and Inference",
+ "credits": 7.5,
+ "level": "master",
+ "programmes": [ "N2COS", "N2MAT", "N2ADS", "N2GDT", "N2SOF"]
+ },
+ "DIT251": {
+ "name": "Algorithms, advanced course",
+ "credits": 7.5,
+ "level": "master",
+ "programmes": ["N2COS", "N2ADS", "N1COS"]
+ },
+ "DIT093": {
+ "name": "Algorithms",
+ "credits": 7.5,
+ "level": "master",
+ "programmes": ["N2MAT", "N2COS", "N2ADS", "N1MAT", "N1COS"]
+ },
+ "DIT257": {
+ "name": "Agile software project management",
+ "credits": 7.5,
+ "level": "bachelor",
+ "programmes": ["N2COS", "N2ADS", "N1COS"]
+ },
+ "DIT193": {
+ "name": "Agile Development Processes",
+ "credits": 7.5,
+ "level": "master",
+ "programmes": ["N2COS", "N2ADS", "N2GDT", "N2SOF"]
+ },
+ "DIT978": {
+ "name": "Advanced Software Engineering for AI/ML-Enabled Systems",
+ "credits": 7.5,
+ "level": "master",
+ "programmes": ["N2ADS", "N2SOF"]
+ },
+ "DIT285": {
+ "name": "Advanced Requirements Engineering",
+ "credits": 7.5,
+ "level": "master",
+ "programmes": ["N2COS", "N2ADS", "N2GDT", "N2SOF"]
+ },
+ "DIT260": {
+ "name": "Advanced Functional Programming",
+ "credits": 7.5,
+ "level": "master",
+ "programmes": ["N2COS", "N2ADS", "N1COS"]
+ },
+ "DIT930": {
+ "name": "Advanced databases",
+ "credits": 7.5,
+ "level": "master",
+ "programmes": ["N2COS", "N2ADS", "N2SOF"]
+ },
+ "DIT227": {
+ "name": "Advanced Computer Graphics",
+ "level": "master",
+ "credits": 7.5,
+ "programmes": ["N2COS", "N2ADS", "N1COS", "N2GDT"]
+ }
+}
\ No newline at end of file
diff --git a/courses/createReadme.js b/courses/createReadme.js
new file mode 100644
index 0000000..4aa26f5
--- /dev/null
+++ b/courses/createReadme.js
@@ -0,0 +1,31 @@
+const fs = require("fs");
+const programmeMD = require("./modules/programmeMD");
+const courseTools = require("./modules/courseTools");
+
+const programmes = require("./programmes.json");
+let courses = require("./courses.json");
+
+const priorityProgrammes = ["N1SOF", "N2SOF"];
+
+
+function main() {
+ const courseProgrammes = courseTools.getCourseProgrammes(courses);
+
+ courses = courseTools.stealCourseNames(courses);
+
+ let readme = fs.readFileSync("./courses/static/header.md", "utf-8");
+
+ const [programmeMDs, coursesInProgrammes] = programmeMD.getProgrammeMDs(programmes, courses, courseProgrammes)
+
+ let orderedProgrammeMDs = programmeMD.sortProgrammeMDs(programmeMDs, priorityProgrammes);
+
+ orderedProgrammeMDs.forEach(programmeCode => {
+ readme += programmeMDs[programmeCode]
+ });
+
+ readme += programmeMD.getNoneMD(courses, coursesInProgrammes);
+
+ fs.writeFileSync("./README.md", readme, "utf-8");
+}
+
+main();
\ No newline at end of file
diff --git a/courses/modules/courseTools.js b/courses/modules/courseTools.js
new file mode 100644
index 0000000..91f3a55
--- /dev/null
+++ b/courses/modules/courseTools.js
@@ -0,0 +1,34 @@
+const fs = require("fs");
+
+
+function stealCourseNames(courses) {
+ trackedCourses = fs.readdirSync("./exams/", "utf-8");
+
+ trackedCourses.forEach(course => {
+ if (courses[course] == undefined && !fs.existsSync(`./exams/${course}/.gitignore`)) {
+ let courseReadme = fs.readFileSync(`./exams/${course}/README.md`, "utf-8");
+ courseReadme = courseReadme.split("\n")[0].split("-");
+ courseReadme.shift();
+ courses[course] = {"name": courseReadme.join("-").trim(), "credits": null, "level": null, "programmes": []};
+ }
+ });
+
+ return courses;
+}
+
+function getCourseProgrammes(courses) {
+ let programmes = {"NONE": []};
+
+ for (const courseCode in courses) {
+ const course = courses[courseCode];
+
+ course.programmes.forEach(programme => {
+ if (programmes[programme] == undefined) programmes[programme] = [];
+ programmes[programme].push(courseCode);
+ });
+ }
+
+ return programmes;
+}
+
+module.exports = { getCourseProgrammes, stealCourseNames };
\ No newline at end of file
diff --git a/courses/modules/programmeMD.js b/courses/modules/programmeMD.js
new file mode 100644
index 0000000..10e622e
--- /dev/null
+++ b/courses/modules/programmeMD.js
@@ -0,0 +1,132 @@
+const fs = require("fs");
+
+// Replace {{variable}}s
+function replaceVariables(originalString, data) {
+ return originalString.replace(/\{\{(\w+)\}\}/g, function (variable, variableName) {
+ if (data.hasOwnProperty(variableName)) {
+ return data[variableName];
+ } else {
+ return variable;
+ }
+ });
+}
+
+// Create the markdown section for each programme.
+function getProgrammeMDs(programmes, courses, courseProgrammes) {
+ const programmeSource = fs.readFileSync("./courses/static/programme.md", "utf-8"); // The skeleton of the md.
+
+ let programmeMDs = {};
+
+ let coursesInProgrammes = []
+
+ for (const programmeCode in courseProgrammes) {
+ const programme = programmes[programmeCode];
+ if (programme === undefined) continue; // If the programme is not tracked (e.g. Not from the IT Faculty) then skips
+
+ let courseList = courseProgrammes[programmeCode];
+ courseList = courseList.filter(course => fs.existsSync(`./exams/${course}`)); // Only tracks courses that have their directories
+
+ coursesInProgrammes = coursesInProgrammes.concat(courseList);
+
+ const stuctureFilePath = `./courses/programmeOrders/${programmeCode}.json`; // The programme's structure
+
+ let sectionStrings = [];
+
+ // Check for defined terms
+ if (fs.existsSync(stuctureFilePath)) {
+ const programmeOrderRaw = fs.readFileSync(stuctureFilePath, "utf-8");
+ const programmeOrder = JSON.parse(programmeOrderRaw);
+
+ let processedCourses = []; // To keep track of processed courses
+
+ Object.keys(programmeOrder).forEach(term => {
+ let termCoursesStrings = [];
+ programmeOrder[term].forEach(course => {
+ if (courseList.includes(course) && fs.existsSync(`./exams/${course}`)) {
+ termCoursesStrings.push(`- [${course} - ${courses[course].name}](/exams/${course})\n`);
+ processedCourses.push(course); // Mark course as processed
+ }
+ });
+
+ if (termCoursesStrings.length > 0) {
+ sectionStrings.push(`### ${term}:\n\n${termCoursesStrings.join('')}`);
+ }
+ });
+
+ // Process courses not in any terms
+ const unlistedCourses = courseList.filter(course => !processedCourses.includes(course)).sort();
+ if (unlistedCourses.length > 0) {
+ let unlistedCoursesString = unlistedCourses.map(course => `- [${course} - ${courses[course].name}](/exams/${course})\n`).join('');
+ sectionStrings.push(`### Not in any terms:\n\n${unlistedCoursesString}`);
+ }
+ } else {
+ // File doesn't exist
+ courseList = courseList.sort();
+ if (courseList.length > 0) {
+ let coursesString = courseList.map(course => `- [${course} - ${courses[course].name}](/exams/${course})\n`).join('');
+ sectionStrings.push(coursesString);
+ }
+ }
+
+ // Join all sections with `***` only if more than one section exists
+ let programmeCourses = sectionStrings.length > 1 ? sectionStrings.join("\n***\n\n") : sectionStrings.join("");
+
+ if (programmeCourses) {
+ const programmeMD = replaceVariables(programmeSource, {
+ "programmeCode": programmeCode,
+ "programmeName": programme.name,
+ "courses": programmeCourses
+ });
+
+ programmeMDs[programmeCode] = `\n${programmeMD}`;
+ }
+ }
+
+ return [programmeMDs, coursesInProgrammes];
+}
+
+function getNoneMD(courses, courseProgrammes) {
+ const programmeSource = fs.readFileSync("./courses/static/programme.md", "utf-8"); // The skeleton of the md.
+
+ let trackedProgrammlessCourses = [];
+ for (const course in courses) {
+ if (!courseProgrammes.includes(course) && fs.existsSync(`./exams/${course}`)) trackedProgrammlessCourses.push(course);
+ }
+
+ if (trackedProgrammlessCourses.length == 0) return "";
+
+ let programmeCourses = "";
+
+ trackedProgrammlessCourses.forEach(courseCode => {
+ const course = courses[courseCode];
+ programmeCourses += `- [${courseCode} - ${course.name}](/exams/${courseCode})\n`;
+ });
+
+ const NoneMD = replaceVariables(programmeSource, {
+ "programmeCode": "NONE",
+ "programmeName": "Courses that have yet to be assigned to any programmes",
+ "courses": programmeCourses
+ });
+
+ return NoneMD;
+}
+
+// Sort all programme markdowns based and also apply priority.
+function sortProgrammeMDs(programmeMDs, priorityProgrammes) {
+ const allProgrammes = Object.keys(programmeMDs);
+ const prioritized = [], others = [];
+
+ allProgrammes.forEach(key => {
+ if (priorityProgrammes.includes(key)) {
+ prioritized.push(key);
+ } else {
+ others.push(key);
+ }
+ });
+
+ others.sort();
+
+ return [...prioritized, ...others];
+}
+
+module.exports = { sortProgrammeMDs, getProgrammeMDs, getNoneMD};
\ No newline at end of file
diff --git a/courses/programmeOrders/N1SOF.json b/courses/programmeOrders/N1SOF.json
new file mode 100644
index 0000000..07098b3
--- /dev/null
+++ b/courses/programmeOrders/N1SOF.json
@@ -0,0 +1,36 @@
+{
+ "Term 1": [
+ "DIT043",
+ "DIT023",
+ "DIT046",
+ "DIT094"
+ ],
+ "Term 2": [
+ "DIT033",
+ "DIT182",
+ "DIT185",
+ "DIT113"
+ ],
+ "Term 3": [
+ "DIT345",
+ "DIT342",
+ "DIT348",
+ "DIT356"
+ ],
+ "Term 4": [
+ "DIT633",
+ "DIT636",
+ "DIT639"
+ ],
+ "Term 5": [
+ "DIT038",
+ "DIT822",
+ "DIT826",
+ "DIT828"
+ ],
+ "Term 6": [
+ "DIT836",
+ "DIT822",
+ "DIT837"
+ ]
+}
\ No newline at end of file
diff --git a/courses/programmes.json b/courses/programmes.json
new file mode 100644
index 0000000..2ddf821
--- /dev/null
+++ b/courses/programmes.json
@@ -0,0 +1,50 @@
+{
+ "N2ADS": {
+ "name": "Applied Data Science Master's Programme",
+ "lang": "en"
+ },
+ "N2COS": {
+ "name": "Computer Science Master's Programme",
+ "lang": "en"
+ },
+ "N1COS": {
+ "name": "Datavetenskapligt program",
+ "lang": "se"
+ },
+ "N2DGL": {
+ "name": "Digital Leadership Master's Programme",
+ "lang": "en"
+ },
+ "N2GDT": {
+ "name": "Game Design & Technology Master's Programme",
+ "lang": "en"
+ },
+ "T2HAI": {
+ "name": "Human-centered Artificial Intelligence Master's Programme",
+ "lang": "en"
+ },
+ "S2ITL": {
+ "name": "International Master's Programme in Information Technology and Learning",
+ "lang": "en"
+ },
+ "N2LKI": {
+ "name": "Lärande, kommunikation och informationsteknologi, Magisterprogram",
+ "lang": "se"
+ },
+ "H2LTG": {
+ "name": "Master in Language Technology",
+ "lang": "en"
+ },
+ "N1SOF": {
+ "name": "Software Engineering and Management Bachelor's Programme",
+ "lang": "en"
+ },
+ "N2SOF": {
+ "name": "Software Engineering and Management Master's Programme",
+ "lang": "en"
+ },
+ "N1SYD": {
+ "name": "Systemvetenskap: samhällets digitalisering, kandidatprogram",
+ "lang": "se"
+ }
+}
\ No newline at end of file
diff --git a/courses/static/header.md b/courses/static/header.md
new file mode 100644
index 0000000..139e6ad
--- /dev/null
+++ b/courses/static/header.md
@@ -0,0 +1,20 @@
+
SKIP – Past Exams Repository
+
+
+
+
+Welcome to the official `GitHub` repository that gathers **examination materials** for programmes at the **IT Faculty** of [Gothenburg University](https://www.gu.se/).
+
+### What's Inside
+
+Our repository currently features a sample of past exams, providing insights into the types of assessments you can expect during your studies. These materials are here to help you prepare effectively, understand the course expectations, and excel in your academic journey.
+
+### Explore and Contribute
+
+As we move forward into the academic year of **2023/2024**, our primary focus will be to continuously expand this repository. We are committed to adding old exams for the current study periods, ensuring that you have access to the most up-to-date and relevant assessment materials to support your learning.
+
+Feel free to explore, **contribute**, and make the most of this repository as you strive for excellence in your studies. Your feedback and contributions are highly encouraged and appreciated as we work together to enhance this resource for the benefit of the entire student community.
+
+## Programmes
+
+Click to expand the list of courses for each programme.
\ No newline at end of file
diff --git a/courses/static/programme.md b/courses/static/programme.md
new file mode 100644
index 0000000..d492339
--- /dev/null
+++ b/courses/static/programme.md
@@ -0,0 +1,5 @@
+
+👇 {{programmeCode}} - {{programmeName}}
+
+{{courses}}
+
diff --git a/exams/DAT050/2023-08-23/Answer-DAT050-230823.pdf b/exams/DAT050/2023-08-23/Answer-DAT050-230823.pdf
new file mode 100644
index 0000000..74e64d1
Binary files /dev/null and b/exams/DAT050/2023-08-23/Answer-DAT050-230823.pdf differ
diff --git a/exams/DAT050/2023-10-26/Answer-DAT050-231026.pdf b/exams/DAT050/2023-10-26/Answer-DAT050-231026.pdf
new file mode 100644
index 0000000..03d56c1
Binary files /dev/null and b/exams/DAT050/2023-10-26/Answer-DAT050-231026.pdf differ
diff --git a/exams/DAT050/README.md b/exams/DAT050/README.md
new file mode 100644
index 0000000..1cf198e
--- /dev/null
+++ b/exams/DAT050/README.md
@@ -0,0 +1,9 @@
+# DAT050 - Objektorientered programmering
+Welcome to the DAT050 - Objektorientered programmering, where we've compiled past exams and student answers to assist in your preparation for this course.
+
+Here’s what we have so far:
+
+| Date | Questions | Answers |
+|------------|-----------|---------|
+| 2023-08-23 | No | Yes |
+| 2023-10-26 | No | Yes |
diff --git a/exams/DAT060/2023-08-14/Answer-DAT060-230814.pdf b/exams/DAT060/2023-08-14/Answer-DAT060-230814.pdf
new file mode 100644
index 0000000..75e4663
Binary files /dev/null and b/exams/DAT060/2023-08-14/Answer-DAT060-230814.pdf differ
diff --git a/exams/DAT060/2023-10-26/Answer-DAT060-231026.pdf b/exams/DAT060/2023-10-26/Answer-DAT060-231026.pdf
new file mode 100644
index 0000000..2dd9b5e
Binary files /dev/null and b/exams/DAT060/2023-10-26/Answer-DAT060-231026.pdf differ
diff --git a/exams/DAT060/README.md b/exams/DAT060/README.md
new file mode 100644
index 0000000..cb9a40f
--- /dev/null
+++ b/exams/DAT060/README.md
@@ -0,0 +1,9 @@
+# DAT060 - Logic in Computer Science
+Welcome to the DAT060 - Logic in Computer Science, where we've compiled past exams and student answers to assist in your preparation for this course.
+
+Here’s what we have so far:
+
+| Date | Questions | Answers |
+|------------|-----------|---------|
+| 2023-08-14 | No | Yes |
+| 2023-10-26 | No | Yes |
diff --git a/exams/DAT105/2023-08-15/Answer-DAT105-230815.pdf b/exams/DAT105/2023-08-15/Answer-DAT105-230815.pdf
new file mode 100644
index 0000000..2bba69b
Binary files /dev/null and b/exams/DAT105/2023-08-15/Answer-DAT105-230815.pdf differ
diff --git a/exams/DAT105/2023-10-21/Answer-DAT105-231021.pdf b/exams/DAT105/2023-10-21/Answer-DAT105-231021.pdf
new file mode 100644
index 0000000..814d84c
Binary files /dev/null and b/exams/DAT105/2023-10-21/Answer-DAT105-231021.pdf differ
diff --git a/exams/DAT105/README.md b/exams/DAT105/README.md
new file mode 100644
index 0000000..6380390
--- /dev/null
+++ b/exams/DAT105/README.md
@@ -0,0 +1,9 @@
+# DAT105 - Computer Architecture
+Welcome to the DAT105 - Computer Architecture, where we've compiled past exams and student answers to assist in your preparation for this course.
+
+Here’s what we have so far:
+
+| Date | Questions | Answers |
+|------------|-----------|---------|
+| 2023-08-15 | No | Yes |
+| 2023-10-21 | No | Yes |
diff --git a/exams/DAT246/2022-10-24/Answer-DAT246-221024.pdf b/exams/DAT246/2022-10-24/Answer-DAT246-221024.pdf
new file mode 100644
index 0000000..8b79c81
Binary files /dev/null and b/exams/DAT246/2022-10-24/Answer-DAT246-221024.pdf differ
diff --git a/exams/DAT246/2022-10-24/Exam-DAT246_DIT246-221024.pdf b/exams/DAT246/2022-10-24/Exam-DAT246_DIT246-221024.pdf
new file mode 100644
index 0000000..502ed50
Binary files /dev/null and b/exams/DAT246/2022-10-24/Exam-DAT246_DIT246-221024.pdf differ
diff --git a/exams/DAT246/2023-08-22/Answer-DAT246-230822.pdf b/exams/DAT246/2023-08-22/Answer-DAT246-230822.pdf
new file mode 100644
index 0000000..ddbde39
Binary files /dev/null and b/exams/DAT246/2023-08-22/Answer-DAT246-230822.pdf differ
diff --git a/exams/DAT246/2023-08-22/Exam-DAT246_DIT246-230822.pdf b/exams/DAT246/2023-08-22/Exam-DAT246_DIT246-230822.pdf
new file mode 100644
index 0000000..673d111
Binary files /dev/null and b/exams/DAT246/2023-08-22/Exam-DAT246_DIT246-230822.pdf differ
diff --git a/exams/DAT246/README.md b/exams/DAT246/README.md
new file mode 100644
index 0000000..0ca6faa
--- /dev/null
+++ b/exams/DAT246/README.md
@@ -0,0 +1,9 @@
+# DAT246 - Empirical Software Engineering
+Welcome to the DAT246 - Empirical Software Engineering, where we've compiled past exams and student answers to assist in your preparation for this course.
+
+Here’s what we have so far:
+
+| Date | Questions | Answers |
+|------------|-----------|---------|
+| 2022-10-24 | Yes | Yes |
+| 2023-08-22 | Yes | Yes |
diff --git a/exams/DAT400/2023-01-03/Answer-DAT400-230103.pdf b/exams/DAT400/2023-01-03/Answer-DAT400-230103.pdf
new file mode 100644
index 0000000..9f2ee4d
Binary files /dev/null and b/exams/DAT400/2023-01-03/Answer-DAT400-230103.pdf differ
diff --git a/exams/DAT400/README.md b/exams/DAT400/README.md
new file mode 100644
index 0000000..aa2c521
--- /dev/null
+++ b/exams/DAT400/README.md
@@ -0,0 +1,8 @@
+# DAT400 - High Performance Parallel Programming
+Welcome to the DAT400 - High Performance Parallel Programming, where we've compiled past exams and student answers to assist in your preparation for this course.
+
+Here’s what we have so far:
+
+| Date | Questions | Answers |
+|------------|-----------|---------|
+| 2023-01-03 | No | Yes |
diff --git a/exams/DAT555/2023-01-05/Answer-DAT555-230105.pdf b/exams/DAT555/2023-01-05/Answer-DAT555-230105.pdf
new file mode 100644
index 0000000..9b9d8db
Binary files /dev/null and b/exams/DAT555/2023-01-05/Answer-DAT555-230105.pdf differ
diff --git a/exams/DAT555/2023-08-16/Answer-DAT555-230816.pdf b/exams/DAT555/2023-08-16/Answer-DAT555-230816.pdf
new file mode 100644
index 0000000..762cb3e
Binary files /dev/null and b/exams/DAT555/2023-08-16/Answer-DAT555-230816.pdf differ
diff --git a/exams/DAT555/README.md b/exams/DAT555/README.md
new file mode 100644
index 0000000..d0b1201
--- /dev/null
+++ b/exams/DAT555/README.md
@@ -0,0 +1,9 @@
+# DAT555 - Programmeringsteknik : Python
+Welcome to the DAT555 - Programmeringsteknik : Python, where we've compiled past exams and student answers to assist in your preparation for this course.
+
+Here’s what we have so far:
+
+| Date | Questions | Answers |
+|------------|-----------|---------|
+| 2023-01-05 | No | Yes |
+| 2023-08-16 | No | Yes |
diff --git a/exams/DIT093/2022-08-25/Exam-TIN093_DIT093_DIT602-220825.pdf b/exams/DIT093/2022-08-25/Exam-TIN093_DIT093_DIT602-220825.pdf
new file mode 100644
index 0000000..9a6cbae
Binary files /dev/null and b/exams/DIT093/2022-08-25/Exam-TIN093_DIT093_DIT602-220825.pdf differ
diff --git a/exams/DIT093/README.md b/exams/DIT093/README.md
new file mode 100644
index 0000000..5859019
--- /dev/null
+++ b/exams/DIT093/README.md
@@ -0,0 +1,8 @@
+# DIT093 - Algorithms
+Welcome to the DIT093 - Algorithms, where we've compiled past exams and student answers to assist in your preparation for this course.
+
+Here’s what we have so far:
+
+| Date | Questions | Answers |
+|------------|-----------|---------|
+| 2022-08-25 | Yes | No |
diff --git a/exams/DIT401/2023-10-21/Answer-DIT401-231021.pdf b/exams/DIT401/2023-10-21/Answer-DIT401-231021.pdf
new file mode 100644
index 0000000..acb80a6
Binary files /dev/null and b/exams/DIT401/2023-10-21/Answer-DIT401-231021.pdf differ
diff --git a/exams/DIT401/README.md b/exams/DIT401/README.md
new file mode 100644
index 0000000..16516d8
--- /dev/null
+++ b/exams/DIT401/README.md
@@ -0,0 +1,8 @@
+# DIT401 - Operating Systems
+Welcome to the DIT401 - Operating Systems, where we've compiled past exams and student answers to assist in your preparation for this course.
+
+Here’s what we have so far:
+
+| Date | Questions | Answers |
+|------------|-----------|---------|
+| 2023-10-21 | No | Yes |
diff --git a/exams/DIT431/2023-10-27/Answer-DIT431-231027.pdf b/exams/DIT431/2023-10-27/Answer-DIT431-231027.pdf
new file mode 100644
index 0000000..79687d0
Binary files /dev/null and b/exams/DIT431/2023-10-27/Answer-DIT431-231027.pdf differ
diff --git a/exams/DIT431/README.md b/exams/DIT431/README.md
new file mode 100644
index 0000000..cc264cc
--- /dev/null
+++ b/exams/DIT431/README.md
@@ -0,0 +1,8 @@
+# DIT431 - High Performance Parallel Programming
+Welcome to the DIT431 - High Performance Parallel Programming, where we've compiled past exams and student answers to assist in your preparation for this course.
+
+Here’s what we have so far:
+
+| Date | Questions | Answers |
+|------------|-----------|---------|
+| 2023-10-27 | No | Yes |
diff --git a/exams/DIT440/2023-01-03/Exam-TDA555_DIT441_DIT440-230103.pdf b/exams/DIT440/2023-01-03/Exam-TDA555_DIT441_DIT440-230103.pdf
new file mode 100644
index 0000000..6679c17
Binary files /dev/null and b/exams/DIT440/2023-01-03/Exam-TDA555_DIT441_DIT440-230103.pdf differ
diff --git a/exams/DIT440/2023-08-15/Exam-TDA555_DIT441_DIT440-230815.pdf b/exams/DIT440/2023-08-15/Exam-TDA555_DIT441_DIT440-230815.pdf
new file mode 100644
index 0000000..8e29279
Binary files /dev/null and b/exams/DIT440/2023-08-15/Exam-TDA555_DIT441_DIT440-230815.pdf differ
diff --git a/exams/DIT440/README.md b/exams/DIT440/README.md
new file mode 100644
index 0000000..f0a730a
--- /dev/null
+++ b/exams/DIT440/README.md
@@ -0,0 +1,9 @@
+# DIT440 - Introduction to Functional Programming
+Welcome to the DIT440 - Introduction to Functional Programming, where we've compiled past exams and student answers to assist in your preparation for this course.
+
+Here’s what we have so far:
+
+| Date | Questions | Answers |
+|------------|-----------|---------|
+| 2023-01-03 | Yes | No |
+| 2023-08-15 | Yes | No |
diff --git a/exams/DIT670/2022-08-25/Exam-EDA387_DIT670-220825.pdf b/exams/DIT670/2022-08-25/Exam-EDA387_DIT670-220825.pdf
new file mode 100644
index 0000000..bf07648
Binary files /dev/null and b/exams/DIT670/2022-08-25/Exam-EDA387_DIT670-220825.pdf differ
diff --git a/exams/DIT670/README.md b/exams/DIT670/README.md
new file mode 100644
index 0000000..08b18cd
--- /dev/null
+++ b/exams/DIT670/README.md
@@ -0,0 +1,8 @@
+# DIT670 - Computer Networks
+Welcome to the DIT670 - Computer Networks, where we've compiled past exams and student answers to assist in your preparation for this course.
+
+Here’s what we have so far:
+
+| Date | Questions | Answers |
+|------------|-----------|---------|
+| 2022-08-25 | Yes | No |
diff --git a/exams/DIT792/2023-01-14/Answer-DIT792-230114.pdf b/exams/DIT792/2023-01-14/Answer-DIT792-230114.pdf
new file mode 100644
index 0000000..720ae24
Binary files /dev/null and b/exams/DIT792/2023-01-14/Answer-DIT792-230114.pdf differ
diff --git a/exams/DIT792/README.md b/exams/DIT792/README.md
new file mode 100644
index 0000000..b0c1187
--- /dev/null
+++ b/exams/DIT792/README.md
@@ -0,0 +1,8 @@
+# DIT792 - Grundläggande Datorteknik
+Welcome to the DIT792 - Grundläggande Datorteknik, where we've compiled past exams and student answers to assist in your preparation for this course.
+
+Here’s what we have so far:
+
+| Date | Questions | Answers |
+|------------|-----------|---------|
+| 2023-01-14 | No | Yes |
diff --git a/exams/DIT852/2023-01-04/Combined-DIT852-230104.pdf b/exams/DIT852/2023-01-04/Combined-DIT852-230104.pdf
new file mode 100644
index 0000000..517791b
Binary files /dev/null and b/exams/DIT852/2023-01-04/Combined-DIT852-230104.pdf differ
diff --git a/exams/DIT852/2023-10-24/Answer-DIT852-231024.pdf b/exams/DIT852/2023-10-24/Answer-DIT852-231024.pdf
new file mode 100644
index 0000000..26e9195
Binary files /dev/null and b/exams/DIT852/2023-10-24/Answer-DIT852-231024.pdf differ
diff --git a/exams/DIT852/README.md b/exams/DIT852/README.md
new file mode 100644
index 0000000..e77547f
--- /dev/null
+++ b/exams/DIT852/README.md
@@ -0,0 +1,9 @@
+# DIT852 - Introduction to Data Science
+Welcome to the DIT852 - Introduction to Data Science, where we've compiled past exams and student answers to assist in your preparation for this course.
+
+Here’s what we have so far:
+
+| Date | Questions | Answers |
+|------------|-----------|---------|
+| 2023-01-04 | Yes | Yes |
+| 2023-10-24 | No | Yes |
diff --git a/exams/DIT962/2023-06-01/Answer-DIT962-230601.pdf b/exams/DIT962/2023-06-01/Answer-DIT962-230601.pdf
new file mode 100644
index 0000000..32a649a
Binary files /dev/null and b/exams/DIT962/2023-06-01/Answer-DIT962-230601.pdf differ
diff --git a/exams/DIT962/2023-08-17/Answer-DIT962-230817.pdf b/exams/DIT962/2023-08-17/Answer-DIT962-230817.pdf
new file mode 100644
index 0000000..ba92738
Binary files /dev/null and b/exams/DIT962/2023-08-17/Answer-DIT962-230817.pdf differ
diff --git a/exams/DIT962/README.md b/exams/DIT962/README.md
new file mode 100644
index 0000000..627b0ea
--- /dev/null
+++ b/exams/DIT962/README.md
@@ -0,0 +1,9 @@
+# DIT962 - Datastrukturer
+Welcome to the DIT962 - Datastrukturer, where we've compiled past exams and student answers to assist in your preparation for this course.
+
+Here’s what we have so far:
+
+| Date | Questions | Answers |
+|------------|-----------|---------|
+| 2023-06-01 | No | Yes |
+| 2023-08-17 | No | Yes |
diff --git a/exams/DIT980/2023-08-14/Answer-DIT980-230814.pdf b/exams/DIT980/2023-08-14/Answer-DIT980-230814.pdf
new file mode 100644
index 0000000..e36b400
Binary files /dev/null and b/exams/DIT980/2023-08-14/Answer-DIT980-230814.pdf differ
diff --git a/exams/DIT980/README.md b/exams/DIT980/README.md
new file mode 100644
index 0000000..078d185
--- /dev/null
+++ b/exams/DIT980/README.md
@@ -0,0 +1,8 @@
+# DIT980 - Diskret matematik för Datavetare
+Welcome to the DIT980 - Diskret matematik för Datavetare, where we've compiled past exams and student answers to assist in your preparation for this course.
+
+Here’s what we have so far:
+
+| Date | Questions | Answers |
+|------------|-----------|---------|
+| 2023-08-14 | No | Yes |
diff --git a/exams/DIT984/2023-01-03/Answer-DIT984-230103.pdf b/exams/DIT984/2023-01-03/Answer-DIT984-230103.pdf
new file mode 100644
index 0000000..49660d6
Binary files /dev/null and b/exams/DIT984/2023-01-03/Answer-DIT984-230103.pdf differ
diff --git a/exams/DIT984/README.md b/exams/DIT984/README.md
new file mode 100644
index 0000000..0874276
--- /dev/null
+++ b/exams/DIT984/README.md
@@ -0,0 +1,8 @@
+# DIT984 - Diskret matematik för Datavetare
+Welcome to the DIT984 - Diskret matematik för Datavetare, where we've compiled past exams and student answers to assist in your preparation for this course.
+
+Here’s what we have so far:
+
+| Date | Questions | Answers |
+|------------|-----------|---------|
+| 2023-01-03 | No | Yes |
diff --git a/exams/EDA093/2023-08-15/Answer-EDA093-230815.pdf b/exams/EDA093/2023-08-15/Answer-EDA093-230815.pdf
new file mode 100644
index 0000000..fdfd3af
Binary files /dev/null and b/exams/EDA093/2023-08-15/Answer-EDA093-230815.pdf differ
diff --git a/exams/EDA093/README.md b/exams/EDA093/README.md
new file mode 100644
index 0000000..521fbcc
--- /dev/null
+++ b/exams/EDA093/README.md
@@ -0,0 +1,8 @@
+# EDA093 - Operating Systems
+Welcome to the EDA093 - Operating Systems, where we've compiled past exams and student answers to assist in your preparation for this course.
+
+Here’s what we have so far:
+
+| Date | Questions | Answers |
+|------------|-----------|---------|
+| 2023-08-15 | No | Yes |
diff --git a/exams/EDA387/2022-08-25/Answer-EDA387-220825.pdf b/exams/EDA387/2022-08-25/Answer-EDA387-220825.pdf
new file mode 100644
index 0000000..fbccde6
Binary files /dev/null and b/exams/EDA387/2022-08-25/Answer-EDA387-220825.pdf differ
diff --git a/exams/EDA387/2023-01-04/Answer-EDA387-230104.pdf b/exams/EDA387/2023-01-04/Answer-EDA387-230104.pdf
new file mode 100644
index 0000000..7ca1c3f
Binary files /dev/null and b/exams/EDA387/2023-01-04/Answer-EDA387-230104.pdf differ
diff --git a/exams/EDA387/README.md b/exams/EDA387/README.md
new file mode 100644
index 0000000..8b13b0d
--- /dev/null
+++ b/exams/EDA387/README.md
@@ -0,0 +1,9 @@
+# EDA387 - Computer Networks
+Welcome to the EDA387 - Computer Networks, where we've compiled past exams and student answers to assist in your preparation for this course.
+
+Here’s what we have so far:
+
+| Date | Questions | Answers |
+|------------|-----------|---------|
+| 2022-08-25 | No | Yes |
+| 2023-01-04 | No | Yes |
diff --git a/exams/EDA452/2023-04-03/Answer-EDA452-230403.pdf b/exams/EDA452/2023-04-03/Answer-EDA452-230403.pdf
new file mode 100644
index 0000000..e6e57b6
Binary files /dev/null and b/exams/EDA452/2023-04-03/Answer-EDA452-230403.pdf differ
diff --git a/exams/EDA452/README.md b/exams/EDA452/README.md
new file mode 100644
index 0000000..0be13a5
--- /dev/null
+++ b/exams/EDA452/README.md
@@ -0,0 +1,8 @@
+# EDA452 - Grundläggunde daterteknik
+Welcome to the EDA452 - Grundläggunde daterteknik, where we've compiled past exams and student answers to assist in your preparation for this course.
+
+Here’s what we have so far:
+
+| Date | Questions | Answers |
+|------------|-----------|---------|
+| 2023-04-03 | No | Yes |
diff --git a/exams/TDA384/2022-08-18/Answer-TDA384-220818.pdf b/exams/TDA384/2022-08-18/Answer-TDA384-220818.pdf
new file mode 100644
index 0000000..1f2860e
Binary files /dev/null and b/exams/TDA384/2022-08-18/Answer-TDA384-220818.pdf differ
diff --git a/exams/TDA384/2023-03-13/Answer-TDA384-230313.pdf b/exams/TDA384/2023-03-13/Answer-TDA384-230313.pdf
new file mode 100644
index 0000000..4e59351
Binary files /dev/null and b/exams/TDA384/2023-03-13/Answer-TDA384-230313.pdf differ
diff --git a/exams/TDA384/README.md b/exams/TDA384/README.md
new file mode 100644
index 0000000..f8d56fb
--- /dev/null
+++ b/exams/TDA384/README.md
@@ -0,0 +1,9 @@
+# TDA384 - Principles of concurrent programming
+Welcome to the TDA384 - Principles of concurrent programming, where we've compiled past exams and student answers to assist in your preparation for this course.
+
+Here’s what we have so far:
+
+| Date | Questions | Answers |
+|------------|-----------|---------|
+| 2022-08-18 | No | Yes |
+| 2023-03-13 | No | Yes |
diff --git a/exams/TDA548/2023-01-05/Answer-TDA548-230105.pdf b/exams/TDA548/2023-01-05/Answer-TDA548-230105.pdf
new file mode 100644
index 0000000..bab1ad4
Binary files /dev/null and b/exams/TDA548/2023-01-05/Answer-TDA548-230105.pdf differ
diff --git a/exams/TDA548/2023-08-16/Answer-TDA548-230816.pdf b/exams/TDA548/2023-08-16/Answer-TDA548-230816.pdf
new file mode 100644
index 0000000..39001c7
Binary files /dev/null and b/exams/TDA548/2023-08-16/Answer-TDA548-230816.pdf differ
diff --git a/exams/TDA548/README.md b/exams/TDA548/README.md
new file mode 100644
index 0000000..6def5b4
--- /dev/null
+++ b/exams/TDA548/README.md
@@ -0,0 +1,9 @@
+# TDA548 - Grundlöggande programvarutveckling
+Welcome to the TDA548 - Grundlöggande programvarutveckling, where we've compiled past exams and student answers to assist in your preparation for this course.
+
+Here’s what we have so far:
+
+| Date | Questions | Answers |
+|------------|-----------|---------|
+| 2023-01-05 | No | Yes |
+| 2023-08-16 | No | Yes |
diff --git a/exams/TDA555/2023-01-03/Answer-TDA555-230103.pdf b/exams/TDA555/2023-01-03/Answer-TDA555-230103.pdf
new file mode 100644
index 0000000..d889965
Binary files /dev/null and b/exams/TDA555/2023-01-03/Answer-TDA555-230103.pdf differ
diff --git a/exams/TDA555/2023-08-15/Answer-TDA555-230815.pdf b/exams/TDA555/2023-08-15/Answer-TDA555-230815.pdf
new file mode 100644
index 0000000..cbdef01
Binary files /dev/null and b/exams/TDA555/2023-08-15/Answer-TDA555-230815.pdf differ
diff --git a/exams/TDA555/README.md b/exams/TDA555/README.md
new file mode 100644
index 0000000..e224690
--- /dev/null
+++ b/exams/TDA555/README.md
@@ -0,0 +1,9 @@
+# TDA555 - Introduction to functional programming
+Welcome to the TDA555 - Introduction to functional programming, where we've compiled past exams and student answers to assist in your preparation for this course.
+
+Here’s what we have so far:
+
+| Date | Questions | Answers |
+|------------|-----------|---------|
+| 2023-01-03 | No | Yes |
+| 2023-08-15 | No | Yes |
diff --git a/exams/TIN093/2022-08-25/Answer-TIN093-220825.pdf b/exams/TIN093/2022-08-25/Answer-TIN093-220825.pdf
new file mode 100644
index 0000000..41786f2
Binary files /dev/null and b/exams/TIN093/2022-08-25/Answer-TIN093-220825.pdf differ
diff --git a/exams/TIN093/2022-10-26/Answer-TIN093-221026.pdf b/exams/TIN093/2022-10-26/Answer-TIN093-221026.pdf
new file mode 100644
index 0000000..29c1cea
Binary files /dev/null and b/exams/TIN093/2022-10-26/Answer-TIN093-221026.pdf differ
diff --git a/exams/TIN093/README.md b/exams/TIN093/README.md
new file mode 100644
index 0000000..aa289cc
--- /dev/null
+++ b/exams/TIN093/README.md
@@ -0,0 +1,9 @@
+# TIN093 - Algorithms
+Welcome to the TIN093 - Algorithms, where we've compiled past exams and student answers to assist in your preparation for this course.
+
+Here’s what we have so far:
+
+| Date | Questions | Answers |
+|------------|-----------|---------|
+| 2022-08-25 | No | Yes |
+| 2022-10-26 | No | Yes |