Spaces:
Runtime error
Runtime error
NilsDunlop commited on
Commit ·
bd0cfa7
1
Parent(s): 0781070
Initial commit: RAG-powered chatbot for GU courses and programs
Browse filesThis view is limited to 50 files because it contains too many changes. See raw diff
- .gitattributes +4 -0
- .gitignore +6 -0
- app.py +822 -0
- chat_history.json +525 -0
- data/courses/md/academic-english-for-africanists-af1212.md +3 -0
- data/courses/md/academic-skills-presentations-publications-applications-lir212.md +3 -0
- data/courses/md/advanced-climate-data-analysis-gvn370.md +3 -0
- data/courses/md/advanced-computer-graphics-dit227.md +3 -0
- data/courses/md/advanced-course-on-spanish-grammar-sp2209.md +3 -0
- data/courses/md/advanced-databases-dit930.md +3 -0
- data/courses/md/advanced-differential-calculus-mma211.md +3 -0
- data/courses/md/advanced-digital-tools-for-heritage-conservation-kud113.md +3 -0
- data/courses/md/advanced-functional-programming-dit260.md +3 -0
- data/courses/md/advanced-grammatical-analysis-the-generative-perspective-sv2128.md +3 -0
- data/courses/md/advanced-materials-imaging-and-microanalysis-fym340.md +3 -0
- data/courses/md/advanced-medicinal-chemistry-kem760.md +3 -0
- data/courses/md/advanced-non-fictional-chinese-i-ki2101.md +3 -0
- data/courses/md/advanced-non-fictional-chinese-ii-ki2102.md +3 -0
- data/courses/md/advanced-organic-chemistry-kem815.md +3 -0
- data/courses/md/advanced-organic-synthesis-kem750.md +3 -0
- data/courses/md/advanced-petrology-gvg410.md +3 -0
- data/courses/md/advanced-phylogenetics-bio404.md +3 -0
- data/courses/md/advanced-requirements-engineering-dit285.md +3 -0
- data/courses/md/advanced-structural-geology-gvg465.md +3 -0
- data/courses/md/advanced-topics-in-probability-msf600.md +3 -0
- data/courses/md/advanced-topics-in-probability-syllabus-msf600.md +3 -0
- data/courses/md/aerosols-kem720.md +3 -0
- data/courses/md/african-language-structures-and-typology-af1211.md +3 -0
- data/courses/md/african-languages-comparative-linguistics-and-typology-af2215.md +3 -0
- data/courses/md/african-languages-data-and-method-af2213.md +3 -0
- data/courses/md/african-languages-independent-project-af2204.md +3 -0
- data/courses/md/african-languages-independent-project-at-bachelor-level-af1320.md +3 -0
- data/courses/md/african-languages-linguistic-structures-af2211.md +3 -0
- data/courses/md/african-languages-masters-essay-independent-project-af2210.md +3 -0
- data/courses/md/african-languages-theory-af2212.md +3 -0
- data/courses/md/african-languages-xhosa-and-zulu-introductory-course-af1121.md +3 -0
- data/courses/md/agile-software-project-management-dit257.md +3 -0
- data/courses/md/algebraic-number-theory-mma350.md +3 -0
- data/courses/md/algebraic-structures-mmg500.md +3 -0
- data/courses/md/algorithms-advanced-course-dit251.md +3 -0
- data/courses/md/algorithms-dit093.md +3 -0
- data/courses/md/algorithms-for-machine-learning-and-inference-dit382.md +3 -0
- data/courses/md/an-introduction-to-game-research-dit248.md +3 -0
- data/courses/md/analytic-function-theory-mmg700.md +3 -0
- data/courses/md/analytic-number-theory-mma340.md +3 -0
- data/courses/md/analytical-chemistry-introductory-course-kem070.md +3 -0
- data/courses/md/ancient-latin-poetry-lat204.md +3 -0
- data/courses/md/animal-ecophysiology-from-a-climate-perspective-bio560.md +3 -0
- data/courses/md/apocryphal-gospels-rt2522.md +3 -0
- data/courses/md/applied-analytical-chemistry-in-marine-sciences-mar455.md +3 -0
.gitattributes
CHANGED
|
@@ -33,3 +33,7 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 36 |
+
data/courses/md/*.md filter=lfs diff=lfs merge=lfs -text
|
| 37 |
+
data/programs/md/*.md filter=lfs diff=lfs merge=lfs -text
|
| 38 |
+
data/courses/pdf/*.pdf filter=lfs diff=lfs merge=lfs -text
|
| 39 |
+
data/programs/pdf/*.pdf filter=lfs diff=lfs merge=lfs -text
|
.gitignore
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
**/pdf/
|
| 2 |
+
.DS_Store
|
| 3 |
+
**/.DS_Store
|
| 4 |
+
.env
|
| 5 |
+
/__pycache__/
|
| 6 |
+
**/chroma/
|
app.py
ADDED
|
@@ -0,0 +1,822 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Standard library imports
|
| 2 |
+
import os
|
| 3 |
+
import json
|
| 4 |
+
import time
|
| 5 |
+
from typing import List, Dict, Literal, Optional
|
| 6 |
+
from datetime import datetime
|
| 7 |
+
|
| 8 |
+
# Third-party imports
|
| 9 |
+
import numpy as np
|
| 10 |
+
import gradio as gr
|
| 11 |
+
from dotenv import load_dotenv
|
| 12 |
+
from pydantic import BaseModel, Field
|
| 13 |
+
|
| 14 |
+
# LangChain imports
|
| 15 |
+
from langchain_community.document_loaders import PyPDFLoader
|
| 16 |
+
from langchain.text_splitter import RecursiveCharacterTextSplitter
|
| 17 |
+
from langchain_openai import OpenAIEmbeddings, ChatOpenAI
|
| 18 |
+
from langchain_chroma import Chroma
|
| 19 |
+
from langchain.chains import ConversationalRetrievalChain
|
| 20 |
+
from langchain.memory import ConversationBufferWindowMemory
|
| 21 |
+
from langchain.prompts import ChatPromptTemplate, SystemMessagePromptTemplate, HumanMessagePromptTemplate
|
| 22 |
+
from langchain_core.documents import Document
|
| 23 |
+
from langchain_core.output_parsers import StrOutputParser
|
| 24 |
+
|
| 25 |
+
# Load environment variables
|
| 26 |
+
load_dotenv()
|
| 27 |
+
|
| 28 |
+
#######################
|
| 29 |
+
# Constants and Templates
|
| 30 |
+
#######################
|
| 31 |
+
|
| 32 |
+
# Prompt Templates
|
| 33 |
+
COURSE_QUERY_TEMPLATE = """You are an AI language model assistant. Your task is to generate five
|
| 34 |
+
different versions of the given user question to retrieve relevant documents about university COURSES.
|
| 35 |
+
|
| 36 |
+
Follow these guidelines:
|
| 37 |
+
1. Focus on different aspects: content, prerequisites, learning outcomes, examination methods
|
| 38 |
+
2. Use different phrasings and synonyms
|
| 39 |
+
3. Include the course code or name if present in the original question
|
| 40 |
+
4. Make queries both more specific and more general than the original
|
| 41 |
+
5. Ensure each query is semantically meaningful and complete
|
| 42 |
+
|
| 43 |
+
Original question: {question}
|
| 44 |
+
|
| 45 |
+
Generate 5 different versions, one per line."""
|
| 46 |
+
|
| 47 |
+
PROGRAM_QUERY_TEMPLATE = """You are an AI language model assistant. Your task is to generate five
|
| 48 |
+
different versions of the given user question to retrieve relevant documents about university PROGRAMS.
|
| 49 |
+
|
| 50 |
+
Follow these guidelines:
|
| 51 |
+
1. Focus on different aspects: program structure, career opportunities, admission requirements, outcomes
|
| 52 |
+
2. Use different phrasings and synonyms
|
| 53 |
+
3. Include the program name if present in the original question
|
| 54 |
+
4. Make queries both more specific and more general than the original
|
| 55 |
+
5. Consider both overall program information and specific details
|
| 56 |
+
|
| 57 |
+
Original question: {question}
|
| 58 |
+
|
| 59 |
+
Generate 5 different versions, one per line."""
|
| 60 |
+
|
| 61 |
+
GENERAL_QUERY_TEMPLATE = """You are an AI language model assistant. Your task is to generate five
|
| 62 |
+
different versions of the given user question to retrieve relevant documents about both university COURSES and PROGRAMS.
|
| 63 |
+
|
| 64 |
+
Follow these guidelines:
|
| 65 |
+
1. Balance between course-specific and program-level information
|
| 66 |
+
2. Include variations that focus on how courses fit into programs
|
| 67 |
+
3. Use different phrasings and synonyms
|
| 68 |
+
4. Make queries both more specific and more general than the original
|
| 69 |
+
5. Maintain the original intent while exploring different aspects
|
| 70 |
+
|
| 71 |
+
Original question: {question}
|
| 72 |
+
|
| 73 |
+
Generate 5 different versions, one per line."""
|
| 74 |
+
|
| 75 |
+
ROUTER_SYSTEM_TEMPLATE = """You are an expert at routing user questions about university education to the appropriate content type.
|
| 76 |
+
Your task is to determine whether the question is about:
|
| 77 |
+
1. A specific COURSE or course-related information
|
| 78 |
+
2. A specific PROGRAM or program-related information
|
| 79 |
+
3. BOTH when the question involves both courses and programs or when it's unclear
|
| 80 |
+
|
| 81 |
+
Examples:
|
| 82 |
+
- "What are the prerequisites for DIT134?" -> course
|
| 83 |
+
- "Tell me about the Software Engineering program" -> program
|
| 84 |
+
- "What courses are included in the Data Science master's?" -> both
|
| 85 |
+
- "How many credits do I need?" -> both"""
|
| 86 |
+
|
| 87 |
+
SYSTEM_TEMPLATE = """You are a helpful course and program information assistant for Gothenburg University.
|
| 88 |
+
Your role is to provide accurate information about courses and programs based ONLY on the provided course and program documents.
|
| 89 |
+
|
| 90 |
+
Important rules to follow:
|
| 91 |
+
1. Only answer questions about courses that are explicitly mentioned in the provided documents
|
| 92 |
+
2. If a course is not in the documents, clearly state that you don't have information about that course
|
| 93 |
+
3. Base your answers solely on the content from the course documents
|
| 94 |
+
4. If you're unsure about any information, say so explicitly
|
| 95 |
+
5. When discussing course content, prerequisites, or evaluation methods, quote directly from the source documents when possible
|
| 96 |
+
6. Include the course code (e.g., DIT123) when referring to courses
|
| 97 |
+
7. For listing questions (e.g., "What programs are available?", "List all courses in X"):
|
| 98 |
+
- ALWAYS check the sources list first
|
| 99 |
+
- THOROUGHLY examine EACH source document listed in the sources
|
| 100 |
+
- List EVERY program or course mentioned in ANY of the retrieved documents
|
| 101 |
+
- Do not skip any programs even if they seem similar to others
|
| 102 |
+
- Include program/course codes when available
|
| 103 |
+
- Group items logically (e.g., by degree level: Bachelor's, Master's)
|
| 104 |
+
- Double-check the sources list against your response to ensure no programs were missed
|
| 105 |
+
8. For questions asking about all programs from a specific school/department:
|
| 106 |
+
- List ALL programs from the retrieved documents
|
| 107 |
+
- Cross-reference the sources list with your response to ensure completeness
|
| 108 |
+
- Include full program names and codes
|
| 109 |
+
- Organize by degree level (Bachelor's/Master's)
|
| 110 |
+
- Specify the credit amount if available
|
| 111 |
+
- Before finishing your response, verify that you've included every program from every source listed
|
| 112 |
+
|
| 113 |
+
Context from documents: {context}
|
| 114 |
+
|
| 115 |
+
Current conversation history: {chat_history}
|
| 116 |
+
|
| 117 |
+
Human question: {question}
|
| 118 |
+
|
| 119 |
+
Remember:
|
| 120 |
+
1. When asked to list programs or courses, THOROUGHLY check all retrieved documents and include EVERY relevant item.
|
| 121 |
+
2. Do not summarize or skip any programs/courses found in the sources.
|
| 122 |
+
3. Always cross-reference your final list against the sources to ensure nothing was missed.
|
| 123 |
+
4. If you see a source in the list that contains "programme" or "program" in its name, make sure that program is included in your response.
|
| 124 |
+
|
| 125 |
+
Please provide a response based strictly on the above context. If the information isn't in the context, say so."""
|
| 126 |
+
|
| 127 |
+
#######################
|
| 128 |
+
# Helper Classes
|
| 129 |
+
#######################
|
| 130 |
+
|
| 131 |
+
class RouteQuery(BaseModel):
|
| 132 |
+
"""Route a user query to the most relevant content type."""
|
| 133 |
+
content_type: Literal["course", "program", "both"] = Field(
|
| 134 |
+
...,
|
| 135 |
+
description="Route to: 'course' for specific course questions, 'program' for program questions, 'both' when the question involves both or is unclear"
|
| 136 |
+
)
|
| 137 |
+
|
| 138 |
+
class ChatLogger:
|
| 139 |
+
"""Handles logging of chat interactions."""
|
| 140 |
+
def __init__(self, log_file: str = "chat_history.json"):
|
| 141 |
+
self.log_file = log_file
|
| 142 |
+
self._initialize_log_file()
|
| 143 |
+
|
| 144 |
+
def _initialize_log_file(self):
|
| 145 |
+
"""Create log file if it doesn't exist."""
|
| 146 |
+
if not os.path.exists(self.log_file):
|
| 147 |
+
with open(self.log_file, 'w') as f:
|
| 148 |
+
json.dump([], f)
|
| 149 |
+
|
| 150 |
+
def log_interaction(self, data: Dict):
|
| 151 |
+
"""Log a single interaction to the JSON file."""
|
| 152 |
+
try:
|
| 153 |
+
# Read existing logs
|
| 154 |
+
with open(self.log_file, 'r') as f:
|
| 155 |
+
logs = json.load(f)
|
| 156 |
+
|
| 157 |
+
# Add new log
|
| 158 |
+
logs.append(data)
|
| 159 |
+
|
| 160 |
+
# Write back to file
|
| 161 |
+
with open(self.log_file, 'w') as f:
|
| 162 |
+
json.dump(logs, f, indent=2)
|
| 163 |
+
except Exception as e:
|
| 164 |
+
print(f"Error logging interaction: {str(e)}")
|
| 165 |
+
|
| 166 |
+
#######################
|
| 167 |
+
# Document Processing
|
| 168 |
+
#######################
|
| 169 |
+
|
| 170 |
+
def get_unique_union(documents: List[List[Document]]) -> List[Document]:
|
| 171 |
+
"""Get unique union of retrieved documents."""
|
| 172 |
+
seen = set()
|
| 173 |
+
unique_docs = []
|
| 174 |
+
|
| 175 |
+
for doc_list in documents:
|
| 176 |
+
for doc in doc_list:
|
| 177 |
+
# Create a unique identifier from content and metadata
|
| 178 |
+
doc_id = f"{doc.page_content}_{json.dumps(doc.metadata, sort_keys=True)}"
|
| 179 |
+
if doc_id not in seen:
|
| 180 |
+
seen.add(doc_id)
|
| 181 |
+
unique_docs.append(doc)
|
| 182 |
+
|
| 183 |
+
return unique_docs
|
| 184 |
+
|
| 185 |
+
def process_documents(base_path: str) -> List[Document]:
|
| 186 |
+
"""Process both markdown and PDF documents from courses and programs directories.
|
| 187 |
+
|
| 188 |
+
This function maintains a clear separation between course and program documents
|
| 189 |
+
by properly tagging them with metadata and organizing them by type.
|
| 190 |
+
|
| 191 |
+
Args:
|
| 192 |
+
base_path: The base path where the data directories are located
|
| 193 |
+
|
| 194 |
+
Returns:
|
| 195 |
+
List of processed documents with proper metadata
|
| 196 |
+
"""
|
| 197 |
+
documents = {
|
| 198 |
+
'courses': [],
|
| 199 |
+
'programs': []
|
| 200 |
+
}
|
| 201 |
+
|
| 202 |
+
# Define paths for different document types
|
| 203 |
+
md_paths = {
|
| 204 |
+
'courses': os.path.join(base_path, 'data/courses/md'),
|
| 205 |
+
'programs': os.path.join(base_path, 'data/programs/md')
|
| 206 |
+
}
|
| 207 |
+
|
| 208 |
+
pdf_paths = {
|
| 209 |
+
'courses': os.path.join(base_path, 'data/courses/pdf'),
|
| 210 |
+
'programs': os.path.join(base_path, 'data/programs/pdf')
|
| 211 |
+
}
|
| 212 |
+
|
| 213 |
+
# Create directories if they don't exist
|
| 214 |
+
for path_dict in [md_paths, pdf_paths]:
|
| 215 |
+
for path in path_dict.values():
|
| 216 |
+
if not os.path.exists(path):
|
| 217 |
+
os.makedirs(path, exist_ok=True)
|
| 218 |
+
print(f"Created directory: {path}")
|
| 219 |
+
|
| 220 |
+
# Process documents by category
|
| 221 |
+
for category in ['courses', 'programs']:
|
| 222 |
+
# Process markdown files
|
| 223 |
+
if os.path.exists(md_paths[category]):
|
| 224 |
+
documents[category].extend(_process_markdown_files(md_paths[category], category))
|
| 225 |
+
|
| 226 |
+
# Process PDF files
|
| 227 |
+
if os.path.exists(pdf_paths[category]):
|
| 228 |
+
documents[category].extend(_process_pdf_files(pdf_paths[category], category))
|
| 229 |
+
|
| 230 |
+
print(f"Processed {len(documents[category])} {category} documents")
|
| 231 |
+
|
| 232 |
+
# Combine all documents while maintaining their metadata
|
| 233 |
+
all_documents = documents['courses'] + documents['programs']
|
| 234 |
+
print(f"Total documents processed: {len(all_documents)}")
|
| 235 |
+
print(f"Courses: {len(documents['courses'])}, Programs: {len(documents['programs'])}")
|
| 236 |
+
|
| 237 |
+
return all_documents
|
| 238 |
+
|
| 239 |
+
def _process_markdown_files(path: str, category: str) -> List[Document]:
|
| 240 |
+
"""Helper function to process markdown files.
|
| 241 |
+
|
| 242 |
+
Args:
|
| 243 |
+
path: Path to the markdown files directory
|
| 244 |
+
category: Type of documents ('courses' or 'programs')
|
| 245 |
+
|
| 246 |
+
Returns:
|
| 247 |
+
List of processed markdown documents with metadata
|
| 248 |
+
"""
|
| 249 |
+
documents = []
|
| 250 |
+
for filename in os.listdir(path):
|
| 251 |
+
if filename.endswith('.md'):
|
| 252 |
+
file_path = os.path.join(path, filename)
|
| 253 |
+
try:
|
| 254 |
+
content = _read_file_with_fallback_encoding(file_path)
|
| 255 |
+
# Extract code if it's a course document
|
| 256 |
+
metadata = {
|
| 257 |
+
'source': file_path,
|
| 258 |
+
'type': 'markdown',
|
| 259 |
+
'category': category,
|
| 260 |
+
'doc_type': category.rstrip('s'), # 'course' or 'program'
|
| 261 |
+
'filename': filename
|
| 262 |
+
}
|
| 263 |
+
|
| 264 |
+
if category == 'courses':
|
| 265 |
+
code = _extract_course_code(filename, content)
|
| 266 |
+
if code: # Only add course_code to metadata if it exists
|
| 267 |
+
metadata['course_code'] = code
|
| 268 |
+
|
| 269 |
+
doc = Document(
|
| 270 |
+
page_content=content,
|
| 271 |
+
metadata=metadata
|
| 272 |
+
)
|
| 273 |
+
documents.append(doc)
|
| 274 |
+
except Exception as e:
|
| 275 |
+
print(f"Error processing markdown file {filename}: {str(e)}")
|
| 276 |
+
return documents
|
| 277 |
+
|
| 278 |
+
def _process_pdf_files(path: str, category: str) -> List[Document]:
|
| 279 |
+
"""Helper function to process PDF files.
|
| 280 |
+
|
| 281 |
+
Args:
|
| 282 |
+
path: Path to the PDF files directory
|
| 283 |
+
category: Type of documents ('courses' or 'programs')
|
| 284 |
+
|
| 285 |
+
Returns:
|
| 286 |
+
List of processed PDF documents with metadata
|
| 287 |
+
"""
|
| 288 |
+
documents = []
|
| 289 |
+
for filename in os.listdir(path):
|
| 290 |
+
if filename.endswith('.pdf'):
|
| 291 |
+
file_path = os.path.join(path, filename)
|
| 292 |
+
try:
|
| 293 |
+
loader = PyPDFLoader(file_path)
|
| 294 |
+
pdf_docs = loader.load()
|
| 295 |
+
|
| 296 |
+
# Create base metadata
|
| 297 |
+
metadata = {
|
| 298 |
+
'type': 'pdf',
|
| 299 |
+
'category': category,
|
| 300 |
+
'doc_type': category.rstrip('s'), # 'course' or 'program'
|
| 301 |
+
'filename': filename
|
| 302 |
+
}
|
| 303 |
+
|
| 304 |
+
# Add course code if it exists and it's a course document
|
| 305 |
+
if category == 'courses' and pdf_docs:
|
| 306 |
+
code = _extract_course_code(filename, pdf_docs[0].page_content)
|
| 307 |
+
if code: # Only add course_code to metadata if it exists
|
| 308 |
+
metadata['course_code'] = code
|
| 309 |
+
|
| 310 |
+
# Add metadata to each page
|
| 311 |
+
for doc in pdf_docs:
|
| 312 |
+
doc.metadata.update(metadata)
|
| 313 |
+
documents.extend(pdf_docs)
|
| 314 |
+
except Exception as e:
|
| 315 |
+
print(f"Error processing PDF {filename}: {str(e)}")
|
| 316 |
+
return documents
|
| 317 |
+
|
| 318 |
+
def _read_file_with_fallback_encoding(file_path: str) -> str:
|
| 319 |
+
"""Helper function to read files with different encodings."""
|
| 320 |
+
encodings = ['utf-8', 'iso-8859-1', 'latin1']
|
| 321 |
+
for encoding in encodings:
|
| 322 |
+
try:
|
| 323 |
+
with open(file_path, 'r', encoding=encoding) as f:
|
| 324 |
+
return f.read()
|
| 325 |
+
except UnicodeDecodeError:
|
| 326 |
+
continue
|
| 327 |
+
raise UnicodeDecodeError(f"Failed to read {file_path} with any encoding")
|
| 328 |
+
|
| 329 |
+
def _extract_course_code(filename: str, content: str) -> Optional[str]:
|
| 330 |
+
"""Extract course code from filename or content if possible.
|
| 331 |
+
|
| 332 |
+
Args:
|
| 333 |
+
filename: Name of the file
|
| 334 |
+
content: Content of the document
|
| 335 |
+
|
| 336 |
+
Returns:
|
| 337 |
+
Course code if found, None otherwise
|
| 338 |
+
"""
|
| 339 |
+
# Try to extract from filename first (e.g., "DIT134-advanced-programming.pdf")
|
| 340 |
+
import re
|
| 341 |
+
code_match = re.search(r'([A-Z]{3}\d{3})', filename)
|
| 342 |
+
if code_match:
|
| 343 |
+
return code_match.group(1)
|
| 344 |
+
|
| 345 |
+
# Try to extract from content
|
| 346 |
+
code_match = re.search(r'([A-Z]{3}\d{3})', content)
|
| 347 |
+
if code_match:
|
| 348 |
+
return code_match.group(1)
|
| 349 |
+
|
| 350 |
+
return None
|
| 351 |
+
|
| 352 |
+
#######################
|
| 353 |
+
# Main RAG Model Class
|
| 354 |
+
#######################
|
| 355 |
+
|
| 356 |
+
class RAGModel:
|
| 357 |
+
"""Main RAG (Retrieval-Augmented Generation) model class."""
|
| 358 |
+
|
| 359 |
+
def __init__(self, pdf_folder_path: str):
|
| 360 |
+
"""Initialize the RAG model with the path to PDF documents."""
|
| 361 |
+
self.pdf_folder_path = pdf_folder_path
|
| 362 |
+
self.openai_api_key = os.getenv("OPENAI_API_KEY")
|
| 363 |
+
if not self.openai_api_key:
|
| 364 |
+
raise ValueError("OpenAI API key not found in environment variables")
|
| 365 |
+
|
| 366 |
+
self._initialize_components()
|
| 367 |
+
self._setup_prompts()
|
| 368 |
+
|
| 369 |
+
def _initialize_components(self):
|
| 370 |
+
"""Initialize all necessary components."""
|
| 371 |
+
# Initialize AI models
|
| 372 |
+
self.llm = ChatOpenAI(
|
| 373 |
+
model_name="gpt-4o-mini", # do not change this
|
| 374 |
+
temperature=0.1,
|
| 375 |
+
openai_api_key=self.openai_api_key
|
| 376 |
+
)
|
| 377 |
+
self.embeddings = OpenAIEmbeddings(
|
| 378 |
+
openai_api_key=self.openai_api_key,
|
| 379 |
+
model="text-embedding-3-small"
|
| 380 |
+
)
|
| 381 |
+
|
| 382 |
+
# Initialize text splitter
|
| 383 |
+
self.text_splitter = RecursiveCharacterTextSplitter(
|
| 384 |
+
chunk_size=2000,
|
| 385 |
+
chunk_overlap=200,
|
| 386 |
+
length_function=len,
|
| 387 |
+
separators=["\n\n", "\n", " ", ""]
|
| 388 |
+
)
|
| 389 |
+
|
| 390 |
+
# Initialize memory
|
| 391 |
+
self.memory = ConversationBufferWindowMemory(
|
| 392 |
+
memory_key="chat_history",
|
| 393 |
+
output_key="answer",
|
| 394 |
+
return_messages=True,
|
| 395 |
+
k=3
|
| 396 |
+
)
|
| 397 |
+
|
| 398 |
+
# Initialize other components
|
| 399 |
+
self.vector_store = None
|
| 400 |
+
self.qa_chain = None
|
| 401 |
+
self.model_version = "gpt-4o-mini" # do not change this
|
| 402 |
+
self.embedding_version = "text-embedding-3-small"
|
| 403 |
+
|
| 404 |
+
# Add chat logger
|
| 405 |
+
self.chat_logger = ChatLogger()
|
| 406 |
+
|
| 407 |
+
def _setup_prompts(self):
|
| 408 |
+
"""Set up all prompt templates."""
|
| 409 |
+
# Router prompt
|
| 410 |
+
self.router_prompt = ChatPromptTemplate.from_messages([
|
| 411 |
+
("system", ROUTER_SYSTEM_TEMPLATE),
|
| 412 |
+
("human", "{question}")
|
| 413 |
+
])
|
| 414 |
+
self.router = self.router_prompt | self.llm.with_structured_output(RouteQuery)
|
| 415 |
+
|
| 416 |
+
# Query prompts
|
| 417 |
+
self.query_prompts = {
|
| 418 |
+
"course": ChatPromptTemplate.from_template(COURSE_QUERY_TEMPLATE),
|
| 419 |
+
"program": ChatPromptTemplate.from_template(PROGRAM_QUERY_TEMPLATE),
|
| 420 |
+
"both": ChatPromptTemplate.from_template(GENERAL_QUERY_TEMPLATE)
|
| 421 |
+
}
|
| 422 |
+
|
| 423 |
+
# Answer prompt
|
| 424 |
+
messages = [
|
| 425 |
+
SystemMessagePromptTemplate.from_template(SYSTEM_TEMPLATE),
|
| 426 |
+
HumanMessagePromptTemplate.from_template("{question}")
|
| 427 |
+
]
|
| 428 |
+
self.prompt = ChatPromptTemplate.from_messages(messages)
|
| 429 |
+
|
| 430 |
+
def route_query(self, question: str) -> str:
|
| 431 |
+
"""Route the query to the appropriate content type."""
|
| 432 |
+
result = self.router.invoke({"question": question})
|
| 433 |
+
return result.content_type
|
| 434 |
+
|
| 435 |
+
def generate_queries(self, question: str, content_type: str) -> List[str]:
|
| 436 |
+
"""Generate multiple versions of the input question based on content type.
|
| 437 |
+
|
| 438 |
+
This method creates semantically diverse query variations to improve retrieval:
|
| 439 |
+
1. Uses different phrasings and synonyms
|
| 440 |
+
2. Focuses on different aspects based on content type
|
| 441 |
+
3. Maintains the original intent while exploring variations
|
| 442 |
+
|
| 443 |
+
Args:
|
| 444 |
+
question: The original user question
|
| 445 |
+
content_type: The type of content to focus on ('course', 'program', or 'both')
|
| 446 |
+
|
| 447 |
+
Returns:
|
| 448 |
+
List of query variations (usually 5)
|
| 449 |
+
"""
|
| 450 |
+
# Select appropriate prompt template
|
| 451 |
+
prompt = self.query_prompts[content_type]
|
| 452 |
+
|
| 453 |
+
# Generate variations using the LLM
|
| 454 |
+
chain = prompt | self.llm | StrOutputParser()
|
| 455 |
+
variations = chain.invoke({"question": question})
|
| 456 |
+
|
| 457 |
+
# Process and clean the variations
|
| 458 |
+
queries = [q.strip() for q in variations.split('\n') if q.strip()]
|
| 459 |
+
|
| 460 |
+
# Always include the original question
|
| 461 |
+
if question not in queries:
|
| 462 |
+
queries.append(question)
|
| 463 |
+
|
| 464 |
+
# Store for logging
|
| 465 |
+
self.last_generated_queries = queries
|
| 466 |
+
|
| 467 |
+
# Ensure we have at least 3 queries
|
| 468 |
+
if len(queries) < 3:
|
| 469 |
+
print("Warning: Generated fewer than 3 query variations")
|
| 470 |
+
|
| 471 |
+
return queries
|
| 472 |
+
|
| 473 |
+
def retrieve_documents(self, question: str, content_type: str) -> List[Document]:
|
| 474 |
+
"""Retrieve documents using multiple queries and content type.
|
| 475 |
+
|
| 476 |
+
This method implements:
|
| 477 |
+
1. Multi-query generation based on content type
|
| 478 |
+
2. Document filtering based on content type
|
| 479 |
+
3. MMR-based retrieval for diversity
|
| 480 |
+
|
| 481 |
+
Args:
|
| 482 |
+
question: The original user question
|
| 483 |
+
content_type: The routing type ('course', 'program', or 'both')
|
| 484 |
+
|
| 485 |
+
Returns:
|
| 486 |
+
List of relevant documents
|
| 487 |
+
"""
|
| 488 |
+
# Generate multiple variations of the query
|
| 489 |
+
queries = self.generate_queries(question, content_type)
|
| 490 |
+
print(f"\nGenerated queries for '{question}':")
|
| 491 |
+
for q in queries:
|
| 492 |
+
print(f" • {q}")
|
| 493 |
+
|
| 494 |
+
# Set retrieval parameters based on content type
|
| 495 |
+
k_values = {
|
| 496 |
+
"course": 6, # More focused for specific course info
|
| 497 |
+
"program": 15, # Increased from 8 to 15 for better program coverage
|
| 498 |
+
"both": 15 # Increased from 10 to 15 for better coverage
|
| 499 |
+
}
|
| 500 |
+
|
| 501 |
+
# Create metadata filter based on content type
|
| 502 |
+
metadata_filter = None
|
| 503 |
+
if content_type != "both":
|
| 504 |
+
metadata_filter = {"doc_type": content_type}
|
| 505 |
+
|
| 506 |
+
# Configure the retriever for MMR
|
| 507 |
+
retriever = self.vector_store.as_retriever(
|
| 508 |
+
search_type="mmr",
|
| 509 |
+
search_kwargs={
|
| 510 |
+
"k": k_values[content_type],
|
| 511 |
+
"filter": metadata_filter,
|
| 512 |
+
"fetch_k": k_values[content_type] * 3 # Fetch more candidates for MMR to choose from
|
| 513 |
+
}
|
| 514 |
+
)
|
| 515 |
+
|
| 516 |
+
# Retrieve documents for each query variation
|
| 517 |
+
all_docs = []
|
| 518 |
+
for query in queries:
|
| 519 |
+
# Use the retriever to get documents
|
| 520 |
+
docs = retriever.get_relevant_documents(query)
|
| 521 |
+
all_docs.append(docs)
|
| 522 |
+
|
| 523 |
+
# Get unique union of documents
|
| 524 |
+
unique_docs = get_unique_union(all_docs)
|
| 525 |
+
|
| 526 |
+
# Log retrieval statistics
|
| 527 |
+
doc_types = [doc.metadata.get('doc_type') for doc in unique_docs]
|
| 528 |
+
print(f"\nRetrieved {len(unique_docs)} unique documents:")
|
| 529 |
+
print(f" • Courses: {doc_types.count('course')}")
|
| 530 |
+
print(f" • Programs: {doc_types.count('program')}")
|
| 531 |
+
|
| 532 |
+
return unique_docs
|
| 533 |
+
|
| 534 |
+
def query(self, question: str) -> Dict:
|
| 535 |
+
"""Process a user query and return the response."""
|
| 536 |
+
if not self.qa_chain:
|
| 537 |
+
raise ValueError("Model not initialized. Please load documents first.")
|
| 538 |
+
|
| 539 |
+
start_time = time.time()
|
| 540 |
+
try:
|
| 541 |
+
result = self._process_query(question, start_time)
|
| 542 |
+
|
| 543 |
+
# Log the interaction with enhanced information
|
| 544 |
+
log_data = {
|
| 545 |
+
"timestamp": datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
|
| 546 |
+
"query": {
|
| 547 |
+
"original_question": question,
|
| 548 |
+
"content_type": result["content_type"],
|
| 549 |
+
"generated_queries": self.last_generated_queries if hasattr(self, 'last_generated_queries') else []
|
| 550 |
+
},
|
| 551 |
+
"retrieval": {
|
| 552 |
+
"total_documents": len(result["source_documents"]),
|
| 553 |
+
"documents": [
|
| 554 |
+
{
|
| 555 |
+
"content": doc.page_content,
|
| 556 |
+
"metadata": doc.metadata,
|
| 557 |
+
"source": os.path.basename(doc.metadata.get("source", ""))
|
| 558 |
+
}
|
| 559 |
+
for doc in result["source_documents"]
|
| 560 |
+
],
|
| 561 |
+
"document_types": {
|
| 562 |
+
"course": sum(1 for doc in result["source_documents"] if doc.metadata.get("doc_type") == "course"),
|
| 563 |
+
"program": sum(1 for doc in result["source_documents"] if doc.metadata.get("doc_type") == "program")
|
| 564 |
+
}
|
| 565 |
+
},
|
| 566 |
+
"response": {
|
| 567 |
+
"answer": result["answer"]
|
| 568 |
+
},
|
| 569 |
+
"performance": {
|
| 570 |
+
"processing_time": time.time() - start_time,
|
| 571 |
+
"tokens_used": None # TODO: Add token usage if available
|
| 572 |
+
},
|
| 573 |
+
"chat_context": {
|
| 574 |
+
"chat_history": [
|
| 575 |
+
{"role": msg.type, "content": msg.content}
|
| 576 |
+
for msg in self.memory.chat_memory.messages[-3:] # Last 3 messages
|
| 577 |
+
],
|
| 578 |
+
"memory_window_size": self.memory.k
|
| 579 |
+
},
|
| 580 |
+
"system_info": {
|
| 581 |
+
"model_version": self.model_version,
|
| 582 |
+
"embedding_version": self.embedding_version,
|
| 583 |
+
"search_config": {
|
| 584 |
+
"search_type": "mmr",
|
| 585 |
+
"k_value": result.get("k_value", None),
|
| 586 |
+
"metadata_filter": result.get("metadata_filter", None)
|
| 587 |
+
}
|
| 588 |
+
}
|
| 589 |
+
}
|
| 590 |
+
|
| 591 |
+
self.chat_logger.log_interaction(log_data)
|
| 592 |
+
return result
|
| 593 |
+
|
| 594 |
+
except Exception as e:
|
| 595 |
+
return {
|
| 596 |
+
"answer": f"Error processing query: {str(e)}",
|
| 597 |
+
"source_documents": [],
|
| 598 |
+
"content_type": None,
|
| 599 |
+
"evaluation_metrics": None
|
| 600 |
+
}
|
| 601 |
+
|
| 602 |
+
def _process_query(self, question: str, start_time: float) -> Dict:
|
| 603 |
+
"""Helper method to process a query."""
|
| 604 |
+
# Route and retrieve
|
| 605 |
+
content_type = self.route_query(question)
|
| 606 |
+
docs = self.retrieve_documents(question, content_type)
|
| 607 |
+
docs_content = "\n\n".join([d.page_content for d in docs])
|
| 608 |
+
|
| 609 |
+
# Generate answer
|
| 610 |
+
chain = self.prompt | self.llm | StrOutputParser()
|
| 611 |
+
answer = chain.invoke({
|
| 612 |
+
"context": docs_content,
|
| 613 |
+
"question": question,
|
| 614 |
+
"chat_history": self.memory.chat_memory.messages
|
| 615 |
+
})
|
| 616 |
+
|
| 617 |
+
# Update memory
|
| 618 |
+
self.memory.save_context({"question": question}, {"answer": answer})
|
| 619 |
+
|
| 620 |
+
# Format sources
|
| 621 |
+
sources = list(set(os.path.basename(doc.metadata.get("source", "")) for doc in docs if doc.metadata.get("source")))
|
| 622 |
+
sources = sorted(sources) # Sort alphabetically
|
| 623 |
+
|
| 624 |
+
if sources:
|
| 625 |
+
if len(sources) > 2:
|
| 626 |
+
# Show only first 2 sources with a note about more
|
| 627 |
+
visible_sources = sources[:2]
|
| 628 |
+
hidden_sources = sources[2:]
|
| 629 |
+
answer += "\n\nSources:"
|
| 630 |
+
for source in visible_sources:
|
| 631 |
+
answer += f"\n• {source}"
|
| 632 |
+
answer += f"\n<details><summary>**See {len(hidden_sources)} more sources...**</summary>\n"
|
| 633 |
+
for source in hidden_sources:
|
| 634 |
+
answer += f"\n• {source}"
|
| 635 |
+
answer += "\n</details>"
|
| 636 |
+
else:
|
| 637 |
+
# If 2 or fewer sources, show all
|
| 638 |
+
answer += "\n\nSources:"
|
| 639 |
+
for source in sources:
|
| 640 |
+
answer += f"\n• {source}"
|
| 641 |
+
|
| 642 |
+
# Update metrics
|
| 643 |
+
query_time = time.time() - start_time
|
| 644 |
+
|
| 645 |
+
return {
|
| 646 |
+
"answer": answer,
|
| 647 |
+
"source_documents": docs,
|
| 648 |
+
"content_type": content_type
|
| 649 |
+
}
|
| 650 |
+
|
| 651 |
+
def load_documents(self) -> int:
|
| 652 |
+
"""Load and process PDF documents."""
|
| 653 |
+
try:
|
| 654 |
+
start_time = time.time()
|
| 655 |
+
|
| 656 |
+
if os.path.exists("./data/chroma") and os.listdir("./data/chroma"):
|
| 657 |
+
return self._load_existing_database()
|
| 658 |
+
else:
|
| 659 |
+
return self._create_new_database()
|
| 660 |
+
|
| 661 |
+
except Exception as e:
|
| 662 |
+
print(f"Error loading documents: {str(e)}")
|
| 663 |
+
raise
|
| 664 |
+
|
| 665 |
+
def _load_existing_database(self) -> int:
|
| 666 |
+
"""Helper method to load existing database."""
|
| 667 |
+
print("Loading existing embeddings from Chroma database...")
|
| 668 |
+
self.vector_store = Chroma(
|
| 669 |
+
persist_directory="./data/chroma",
|
| 670 |
+
embedding_function=self.embeddings,
|
| 671 |
+
collection_metadata={"hnsw:space": "cosine"},
|
| 672 |
+
collection_name="course_docs"
|
| 673 |
+
)
|
| 674 |
+
collection_size = len(self.vector_store.get()['ids'])
|
| 675 |
+
print(f"Loaded {collection_size} existing document chunks from database.")
|
| 676 |
+
self._initialize_qa_chain()
|
| 677 |
+
return collection_size
|
| 678 |
+
|
| 679 |
+
def _create_new_database(self) -> int:
|
| 680 |
+
"""Helper method to create new database."""
|
| 681 |
+
print("Creating new embeddings (this will incur OpenAI API costs)...")
|
| 682 |
+
documents = process_documents(".")
|
| 683 |
+
chunks = self.text_splitter.split_documents(documents)
|
| 684 |
+
|
| 685 |
+
self.vector_store = Chroma.from_documents(
|
| 686 |
+
documents=chunks,
|
| 687 |
+
embedding=self.embeddings,
|
| 688 |
+
persist_directory="./data/chroma",
|
| 689 |
+
collection_metadata={"hnsw:space": "cosine"},
|
| 690 |
+
collection_name="course_docs"
|
| 691 |
+
)
|
| 692 |
+
|
| 693 |
+
self._initialize_qa_chain()
|
| 694 |
+
return len(chunks)
|
| 695 |
+
|
| 696 |
+
def _initialize_qa_chain(self):
|
| 697 |
+
"""Initialize the QA chain with specific configuration."""
|
| 698 |
+
self.qa_chain = ConversationalRetrievalChain.from_llm(
|
| 699 |
+
llm=self.llm,
|
| 700 |
+
retriever=self.vector_store.as_retriever(
|
| 701 |
+
search_type="mmr",
|
| 702 |
+
search_kwargs={"k": 8}
|
| 703 |
+
),
|
| 704 |
+
memory=self.memory,
|
| 705 |
+
return_source_documents=True,
|
| 706 |
+
combine_docs_chain_kwargs={"prompt": self.prompt},
|
| 707 |
+
verbose=True
|
| 708 |
+
)
|
| 709 |
+
|
| 710 |
+
#######################
|
| 711 |
+
# Gradio Interface
|
| 712 |
+
#######################
|
| 713 |
+
|
| 714 |
+
def create_gradio_interface(rag_model: RAGModel) -> gr.Blocks:
|
| 715 |
+
"""Create and configure the Gradio interface."""
|
| 716 |
+
|
| 717 |
+
def process_query(message: str, history: List[List[str]]) -> str:
|
| 718 |
+
"""Process a single query in the chat interface."""
|
| 719 |
+
try:
|
| 720 |
+
response = rag_model.query(message)
|
| 721 |
+
content_type = response["content_type"]
|
| 722 |
+
answer = response["answer"]
|
| 723 |
+
|
| 724 |
+
# Add routing information
|
| 725 |
+
routing_info = {
|
| 726 |
+
"course": "🎓 Course-specific response:",
|
| 727 |
+
"program": "📚 Program-specific response:",
|
| 728 |
+
"both": "🏫 General education response:"
|
| 729 |
+
}
|
| 730 |
+
|
| 731 |
+
return f"{routing_info.get(content_type, '')} \n\n{answer}"
|
| 732 |
+
except Exception as e:
|
| 733 |
+
return f"Error: {str(e)}"
|
| 734 |
+
|
| 735 |
+
# Create the interface
|
| 736 |
+
with gr.Blocks(theme=gr.themes.Soft()) as interface:
|
| 737 |
+
gr.Markdown("""
|
| 738 |
+
# GuPT: Gothenburg University Information Assistant
|
| 739 |
+
Ask questions about Gothenburg University's courses and programs.
|
| 740 |
+
""")
|
| 741 |
+
|
| 742 |
+
with gr.Row(equal_height=True):
|
| 743 |
+
# Chat column (2/3 of width)
|
| 744 |
+
with gr.Column(scale=2):
|
| 745 |
+
chat_interface = gr.ChatInterface(
|
| 746 |
+
fn=process_query,
|
| 747 |
+
examples=[
|
| 748 |
+
"What is the Applied Data Science program about?",
|
| 749 |
+
"What are the prerequisites for Applied Machine Learning?",
|
| 750 |
+
"Tell me about courses in the Master's Program in Management.",
|
| 751 |
+
"List all master's programs in the School of Business, Economics and Law.",
|
| 752 |
+
"What programs are available in Computer Science?"
|
| 753 |
+
],
|
| 754 |
+
css="""
|
| 755 |
+
div.message-wrap { height: 600px !important; overflow-y: auto; }
|
| 756 |
+
details { margin-top: 10px; }
|
| 757 |
+
summary { cursor: pointer; color: #2A6BB0; }
|
| 758 |
+
summary:hover { text-decoration: underline; }
|
| 759 |
+
""",
|
| 760 |
+
type="messages"
|
| 761 |
+
)
|
| 762 |
+
|
| 763 |
+
# Info column (1/3 of width)
|
| 764 |
+
with gr.Column(scale=1):
|
| 765 |
+
# Get initial collection info
|
| 766 |
+
collection = rag_model.vector_store.get()
|
| 767 |
+
doc_metadata = [m.get('doc_type', 'unknown') for m in collection['metadatas']]
|
| 768 |
+
course_count = sum(1 for t in doc_metadata if t == 'course')
|
| 769 |
+
program_count = sum(1 for t in doc_metadata if t == 'program')
|
| 770 |
+
|
| 771 |
+
gr.Markdown(f"""
|
| 772 |
+
### Document Collection
|
| 773 |
+
- Course Documents: {course_count}
|
| 774 |
+
- Program Documents: {program_count}
|
| 775 |
+
- Total Documents: {len(doc_metadata)}
|
| 776 |
+
|
| 777 |
+
### Search Configuration
|
| 778 |
+
- Using MMR for diverse results
|
| 779 |
+
- Course queries: top 6 matches
|
| 780 |
+
- Program queries: top 15 matches
|
| 781 |
+
- Mixed queries: top 15 matches
|
| 782 |
+
|
| 783 |
+
### Query Types
|
| 784 |
+
|
| 785 |
+
🎓 **Course Queries**
|
| 786 |
+
- Specific course information
|
| 787 |
+
- Prerequisites and requirements
|
| 788 |
+
- Learning outcomes
|
| 789 |
+
|
| 790 |
+
📚 **Program Queries**
|
| 791 |
+
- Program overviews
|
| 792 |
+
- Available programs by department
|
| 793 |
+
- Program requirements
|
| 794 |
+
|
| 795 |
+
🏫 **General Queries**
|
| 796 |
+
- Courses within programs
|
| 797 |
+
- Department offerings
|
| 798 |
+
- Combined course/program information
|
| 799 |
+
""")
|
| 800 |
+
|
| 801 |
+
return interface
|
| 802 |
+
|
| 803 |
+
#######################
|
| 804 |
+
# Main Entry Point
|
| 805 |
+
#######################
|
| 806 |
+
|
| 807 |
+
def main():
|
| 808 |
+
"""Main entry point of the application."""
|
| 809 |
+
# Initialize RAG model
|
| 810 |
+
rag_model = RAGModel(".")
|
| 811 |
+
|
| 812 |
+
# Load and process documents
|
| 813 |
+
print("Loading and processing documents...")
|
| 814 |
+
num_chunks = rag_model.load_documents()
|
| 815 |
+
print(f"Processed {num_chunks} document chunks")
|
| 816 |
+
|
| 817 |
+
# Create and launch Gradio interface
|
| 818 |
+
interface = create_gradio_interface(rag_model)
|
| 819 |
+
interface.launch(share=False)
|
| 820 |
+
|
| 821 |
+
if __name__ == "__main__":
|
| 822 |
+
main()
|
chat_history.json
ADDED
|
@@ -0,0 +1,525 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
[
|
| 2 |
+
{
|
| 3 |
+
"timestamp": "2025-01-10 23:35:33",
|
| 4 |
+
"query": {
|
| 5 |
+
"original_question": "What is the Applied Data Science program about?",
|
| 6 |
+
"content_type": "program",
|
| 7 |
+
"generated_queries": [
|
| 8 |
+
"1. Can you provide an overview of the Applied Data Science program, including its curriculum and key components?",
|
| 9 |
+
"2. What career paths can graduates of the Applied Data Science program pursue, and what skills do they gain?",
|
| 10 |
+
"3. What are the admission criteria for the Applied Data Science program, and what prerequisites should applicants have?",
|
| 11 |
+
"4. How does the Applied Data Science program prepare students for real-world applications and job opportunities in the field?",
|
| 12 |
+
"5. Could you explain the structure and outcomes of the Applied Data Science program, including any specializations or projects involved?",
|
| 13 |
+
"What is the Applied Data Science program about?"
|
| 14 |
+
]
|
| 15 |
+
},
|
| 16 |
+
"retrieval": {
|
| 17 |
+
"total_documents": 41,
|
| 18 |
+
"documents": [
|
| 19 |
+
{
|
| 20 |
+
"content": "\u2022 debate and discuss the consequences of the technologies with respect to different ethical\nframeworks.\n \n6. Content and structure \nThe programme consists of courses in Data Science and related subjects. The programme\nincludes a total of 120 credits. Of these, 52.5\u00a0credits are compulsory courses in the main field of\nData Science. In addition, an independent degree project of 30 or 60 credits is compulsory. \nThe courses are progressively arranged so that they, within the framework of learning outcomes,\ncontribute separately and jointly, with developing the student's skills and abilities in the field. \nThe academic year is divided into two semesters and four study periods. A semester includes two\nstudy periods, each of 15 credits. Students normally attend two courses in parallel in each study\nperiod. \nThe education is conducted in the form of lectures, seminars, teacher-led exercises, and tutoring\nas well as projects in which students apply and deepen their knowledge. \n\u00a0 \nStudy Process \nThe following compulsory second-cycle courses are included in the main field of Data Science: \n\u2022 Python for Data Scientists, 7.5 hp\n\u2022 Introduction to Data Science, 7.5 credits\n\u2022 Statistical Methods for Data Science, 7.5 credits\n\u2022 Applied Machine Learning, 7.5 credits\n\u2022 Research methods for Data Science, 7.5 credits\n\u2022 Master\u2019s Thesis in Data Science, 30 credits, or Master\u00b4s Thesis in Data Science, 60 credits\n \nIn addition to these compulsory second-cycle courses, students are required to take the first-\ncycle course Databases, 7.5 credits, which is included in the main field of study. \n\u00a0 \nFurthermore, the students are required to take at least one\u00a07.5 credit\u00a0courses\u00a0from the list of\nsemi-compulsory courses. \nThe following semi-compulsory courses are included in the main field of Data Science: \n\u2022 Computational techniques for Large-scale Data, 7.5 credits\n\u2022 Applied Mathematical Thinking, 7.5 credits\n\u2022 Deep Machine Learning, 7.5 credits\n\u2022 Seminar course in Data Science, 7.5 credits",
|
| 21 |
+
"metadata": {
|
| 22 |
+
"category": "programs",
|
| 23 |
+
"doc_type": "program",
|
| 24 |
+
"filename": "applied-data-science-masters-programme.pdf",
|
| 25 |
+
"page": 3,
|
| 26 |
+
"source": "./data/programs/pdf/applied-data-science-masters-programme.pdf",
|
| 27 |
+
"type": "pdf"
|
| 28 |
+
},
|
| 29 |
+
"source": "applied-data-science-masters-programme.pdf"
|
| 30 |
+
},
|
| 31 |
+
{
|
| 32 |
+
"content": "\u2022 apply Data Science methods to solving problems in a variety of application areas, and\n\u2022 independently, as well as in cooperation with others, investigate and draw relevant\nconclusions based on the methods of Data Science.\n \nJudgement and approach \nFor a Degree of Master of Science (120 credits) with a major in Data Science the student shall be\nable to \n\u2022 discuss advantages and disadvantages of various techniques and technologies for the\nanalysis, modeling, and management of data,\n\u2022 determine how different Data Science methods may be applicable in different situations,\nand\n(N2ADS) Applied Data Science Master's Programme, 120 credits / Applied Data Science masterprogram, 120\nh\u00f6gskolepo\u00e4ng\nSecond cycle / Avancerad niv\u00e5\n3/6",
|
| 33 |
+
"metadata": {
|
| 34 |
+
"category": "programs",
|
| 35 |
+
"doc_type": "program",
|
| 36 |
+
"filename": "applied-data-science-masters-programme.pdf",
|
| 37 |
+
"page": 2,
|
| 38 |
+
"source": "./data/programs/pdf/applied-data-science-masters-programme.pdf",
|
| 39 |
+
"type": "pdf"
|
| 40 |
+
},
|
| 41 |
+
"source": "applied-data-science-masters-programme.pdf"
|
| 42 |
+
},
|
| 43 |
+
{
|
| 44 |
+
"content": "### Welcoming students with backgrounds in many different areas\n\nThe master\u2019s programme in Applied Data Science is designed to be accessible to students with a wide range of bachelor\u2019s degrees, and a master\u2019s education in applied data science will be of benefit to students with backgrounds in many different areas who recognize that being able to work effectively with large data sets will be important in their future careers. Some previous programming experience is required, and the programme builds on this. Some examples of general programming languages that provide a good foundation are Python, Java, C, C++, and C#. Languages such as Matlab, SQL, R, and Prolog do not provide sufficient knowledge.\n\nThis master's programme gives students an overview of the techniques and technologies that are relevant to data science, an appreciation of when and how they can be used, and practical skills for their application.\n\nSince we welcome students with various backgrounds you can help us by downloading and filling in the following form, to help us assess the prerequisites for the program. The form also contains room for your motivation letter. Please submit the form together with your transcripts and other documents in the application system.\n\n[The reason for starting a master's programme in Data Science](https://www.gu.se/en/study-gothenburg/the-it-faculty-launched-a-masters-programme-in-data-science)\n\n### Student interviews\n\n[Fionn Delahunty: From Psychology to Applied Data Science](https://www.gu.se/en/study-gothenburg/psychology-applied-data-science)\n\n[Katalin Ferenc: From Biomedicine to Applied Data Science](https://www.gu.se/en/study-gothenburg/from-biomedicine-to-applied-data-science)\n\n### Alumni interviews\n\n[S\u00f6ren Stahlschmidt: Went directly into a trainee programme at SKF](https://www.gu.se/en/study-gothenburg/open-doors-to-industry-and-academia)",
|
| 45 |
+
"metadata": {
|
| 46 |
+
"category": "programs",
|
| 47 |
+
"doc_type": "program",
|
| 48 |
+
"filename": "applied-data-science-masters-programme-n2ads.md",
|
| 49 |
+
"source": "./data/programs/md/applied-data-science-masters-programme-n2ads.md",
|
| 50 |
+
"type": "markdown"
|
| 51 |
+
},
|
| 52 |
+
"source": "applied-data-science-masters-programme-n2ads.md"
|
| 53 |
+
},
|
| 54 |
+
{
|
| 55 |
+
"content": "(N2ADS) Applied Data Science Master's Programme, 120 credits / Applied Data Science masterprogram, 120\nh\u00f6gskolepo\u00e4ng\nSecond cycle / Avancerad niv\u00e5",
|
| 56 |
+
"metadata": {
|
| 57 |
+
"category": "programs",
|
| 58 |
+
"doc_type": "program",
|
| 59 |
+
"filename": "applied-data-science-masters-programme.pdf",
|
| 60 |
+
"page": 0,
|
| 61 |
+
"source": "./data/programs/pdf/applied-data-science-masters-programme.pdf",
|
| 62 |
+
"type": "pdf"
|
| 63 |
+
},
|
| 64 |
+
"source": "applied-data-science-masters-programme.pdf"
|
| 65 |
+
},
|
| 66 |
+
{
|
| 67 |
+
"content": "This includes the design and analysis of various types of studies in basic research, clinical research and epidemiological research, encompassing experimental, intervention and observational studies. A key component is understanding how data is collected and independently mastering all steps in data management, analysis and visualization. Furthermore, the program aims to develop good practices for planning, documenting, and reporting work, with a focus on reproducibility. The use of AI is integrated both as part of effective workflows and as a method for data analysis.\n\n## Entry requirements\n\nQualification for admission to the Programme in Applied Biostatistics requires:\n\n- Bachelor\u2019s degree or equivalent professional degree of 180 credits in health sciences, economic, natural sciences, or engineering.\n- At least 7.5 credits in statistics.\n- English 6/English B or equivalent and Mathematics 3b/3c or equivalent.\n\n## Degree and main field of study\n\nThis programme leads to a Degree of Master of Medical Science (120 credits) with a major in\u00a0Applied Biostatistics (Medicine masterexamen i huvudomr\u00e5det Till\u00e4mpad Biostatistik).\n\n## Content\n\nThe program consists of a total of 120 credits, with 105 credits allocated to mandatory courses, including a 30-credit thesis, and 15 credits allocated to elective courses. The courses are designed and organized to provide progression within the framework of the program learning outcomes and to collectively offer both breadth and depth in the main field of study.",
|
| 68 |
+
"metadata": {
|
| 69 |
+
"category": "programs",
|
| 70 |
+
"doc_type": "program",
|
| 71 |
+
"filename": "masters-programme-in-applied-biostatistics-syllabusm2sta.md",
|
| 72 |
+
"source": "./data/programs/md/masters-programme-in-applied-biostatistics-syllabusm2sta.md",
|
| 73 |
+
"type": "markdown"
|
| 74 |
+
},
|
| 75 |
+
"source": "masters-programme-in-applied-biostatistics-syllabusm2sta.md"
|
| 76 |
+
},
|
| 77 |
+
{
|
| 78 |
+
"content": "The first semester begins with an introduction to biostatistics focusing on inference and mathematical foundations, including a review of linear algebra and functions, as well as a course in R programming that covers the basics of programming, data management, analysis and visualization. This is followed by a course in study design and experimental planning, including an introduction to epidemiology, and a course in regression analysis that forms the foundation for several of the advanced courses in biostatistical methods.\n\nThe second semester includes advanced courses in the main field, which together provide comprehensive and in-depth methodological knowledge in biostatistics, with an increased understanding of statistical modelling, and the application of various methods in medical research and life sciences. Example of topics are methods for handling incomplete data, more advanced regression models, and causal inference with methods for mapping causal relationships and concepts such as confounding factors, mediation, directed acyclic graphs (DAGs) and propensity score.\n\nAdditionally, statistical learning is a component of the second semester, covering principles and methods for both unsupervised and supervised learning in regression, classification and clustering, as well as general principles for evaluating predictive analysis and model performance. An important part of the second semester is also a course focusing on health data and questionnaires, which deepens the understanding of handling and analysing data structures typical for medical research and development projects. This includes knowledge and management of registry data and composite outcomes, as well as evaluation of questionnaires, health instruments and scores. The course enhances skills in R programming and supports the student\u2019s development towards a professional role as an independent, applied biostatistician capable of handling all stages of data analysis.",
|
| 79 |
+
"metadata": {
|
| 80 |
+
"category": "programs",
|
| 81 |
+
"doc_type": "program",
|
| 82 |
+
"filename": "masters-programme-in-applied-biostatistics-syllabusm2sta.md",
|
| 83 |
+
"source": "./data/programs/md/masters-programme-in-applied-biostatistics-syllabusm2sta.md",
|
| 84 |
+
"type": "markdown"
|
| 85 |
+
},
|
| 86 |
+
"source": "masters-programme-in-applied-biostatistics-syllabusm2sta.md"
|
| 87 |
+
},
|
| 88 |
+
{
|
| 89 |
+
"content": "\u25cf be able to follow developments in financial mathematics\n\u25cf be well prepared for work within the financial sector\n\u00a0 \nMathematical statistics \nFor a Degree of Master (120 credits) the student shall also: \n\u25cf be able to understand and independently formulate and analyze statistical models\n\u25cf be able to solve problems and use advanced methods applied in probability theory,\nstochastic processes and statistics\n\u25cf be well acquainted with the computer's role in applied statistics and simulation\n\u25cf be well prepared for postgraduate education within mathematical statistics\u00a0and / or work in\nthe industry that require advanced statistical methods\n \nStatistical learning and AI \nFor a Degree of Master (120 credits) the student shall also: \n\u25cf have the ability to handle large amounts of data and be able to select and apply advanced\nstatistical methods to extract information from them\n\u25cf be able to follow the\u00a0development\u00a0in statistical learning and AI\n\u25cf be familiar with, able to manage and also further develop software used in statistical\nlearning and AI\n\u25cf be well prepared for work\u00a0within AI\n \n6. Content and structure \nWithin the program there is a wide range of courses at the advanced level to choose from, but\nthere is also the possibility to supplement with courses at the undergraduate level (maximum 30\ncredits) and / or within any other subject. One can also include postgraduate courses in\nthe\u00a0education. \n \nThe program has five specializations: \n\u25cf Mathematics\n\u25cf Applied mathematics\n\u25cf Financial mathematics\n\u25cf Mathematical statistics\n\u25cf Statistical learning and AI\n \nThe student will\u00a0in collaboration with the student counselor do an individual study plan\u00a0to\nensure\u00a0the requirements for at least one of the specializations are met at the end of the studies.\nRegardless of the specialization, the course MVA200 Perspectives on Mathematics (7.5 credits)\nis mandatory and should be taken during the first semester of the program. Below are the",
|
| 90 |
+
"metadata": {
|
| 91 |
+
"category": "programs",
|
| 92 |
+
"doc_type": "program",
|
| 93 |
+
"filename": "mathematical-sciences-masters-programme.pdf",
|
| 94 |
+
"page": 3,
|
| 95 |
+
"source": "./data/programs/pdf/mathematical-sciences-masters-programme.pdf",
|
| 96 |
+
"type": "pdf"
|
| 97 |
+
},
|
| 98 |
+
"source": "mathematical-sciences-masters-programme.pdf"
|
| 99 |
+
},
|
| 100 |
+
{
|
| 101 |
+
"content": "2. A more specialized knowledge in a chosen subfield that can be used for problem solving\nconnected to an area of current research. \n \n3. Training in constructing mathematical models that capture essential aspects of physical\nphenomena and critically examining their consistence and domain of validity. \n4. Training in using the scientific literature and giving oral and written scientific and popular\npresentations. \n5. The skills necessary for continued individual studies and research in the field of fundamental\nphysics and related areas. \n\u00a0 \n \n6. Content and structure \nThe program contains a mix of theoretical and experimental courses. The first year of the\nprogramme is devoted to course work.\u00a0In the first quarter there are three recommended courses\nthat will set the stage for the rest of program, namely a quantum mechanics course, a data\nanalysis and big data course containing modern tools such as Monte Carlo methods\nand\u00a0machine learning, and a project course aimed at getting exposed to different topics.\u00a0\u00a0 \nAfter this the student is free to set up his or her own programplan from a large selection of\ncourses. There are five different specializations;\u00a0theoretical-, computational-, materials-,\nbiological physics and astronomy and astrophysics.\u00a0\u00a0 \nThe master thesis (30, 45, or\u00a060 credit points) typically includes both literature studies and\nindependent work, and may be done at the University or at company.\u00a0It is presented in a\nseminar and a written report. \nRecommended courses in the first quarter\u00a0 \n\u2022 Learning from data\u00a0\n\u2022 Quantum mechanics + Project course\u00a0 \n\u00a0\nRecommended elective courses.\u00a0 \n\u2022 Computational Physics\n\u2022 Modern astrophysics\n\u2022 Spectroscopy\n\u2022 Statistical physics\n\u2022 Symmetry\n\u2022 Biological and biotechnical physics\n\u2022 Computational materials and molecular physics\n\u2022 Condensed matter physics\n\u2022 Fundamentals of hard and soft materials\n\u2022 Gravitation and cosmology\n\u2022 Stellar physics\n\u2022 Symmetry\n\u2022 Computational continuum physics\n\u2022 Interstellar medium and star formation",
|
| 102 |
+
"metadata": {
|
| 103 |
+
"category": "programs",
|
| 104 |
+
"doc_type": "program",
|
| 105 |
+
"filename": "physics-masters-programme.pdf",
|
| 106 |
+
"page": 2,
|
| 107 |
+
"source": "./data/programs/pdf/physics-masters-programme.pdf",
|
| 108 |
+
"type": "pdf"
|
| 109 |
+
},
|
| 110 |
+
"source": "physics-masters-programme.pdf"
|
| 111 |
+
},
|
| 112 |
+
{
|
| 113 |
+
"content": "Judgement and approach \nFor a Degree of Master of Science (120 credits) with a major in Human-centered Artificial\nIntelligence the student shall \n\u2022 demonstrate ability to critically evaluate assumptions, principles, strengths and weaknesses\nof central theories and frameworks in human-centered\u00a0AI,\u00a0\n\u2022 demonstrate ability to compare and contrast AI innovation and application,\u00a0\n\u2022 demonstrate ability to assess and argue for choices and combinations of methods for\norganisational development and AI transformation that take ethics and sustainability into\nconsideration.\u00a0\n \nSustainability labelling \nThe programme is sustainability-related, which means that at least one of the outcomes clearly\nshows that the programme content meets at least one of the University of Gothenburg\u2019s\nconfirmed sustainability criteria. \n \n6. Content and structure \nThe programme departs from the assumption that the development and integration of AI in\neveryday practices requires deep understanding of the relationship between the technology and\nindividuals, groups, organisations, societies, and cultures. It prepares students to take an active\nrole in designing, evaluating and researching how applications of AI are developed,\nimplemented and used. The courses in the first year of the programme give both introductory\nand in-depth knowledge in the central theories in the field, as well as methods for research and\ndevelopment work. \nThe first year\u00a0introduces a wide range of concepts relevant to\u00a0human-centered AI and provides\nstudents with opportunities to develop practical skills for designing experiences with AI,\nevaluating its\u00a0use and defining strategies for its implementation. Throughout the courses of the\nfirst year, students work with a variety of research methods that are useful for both\ncareer\u00a0designing, implementing and evaluating applications of AI, and for the thesis project that\nis the culmination of the programme. The second year provides students with the opportunity to",
|
| 114 |
+
"metadata": {
|
| 115 |
+
"category": "programs",
|
| 116 |
+
"doc_type": "program",
|
| 117 |
+
"filename": "human-centered-artificial-intelligence-masters-programme.pdf",
|
| 118 |
+
"page": 3,
|
| 119 |
+
"source": "./data/programs/pdf/human-centered-artificial-intelligence-masters-programme.pdf",
|
| 120 |
+
"type": "pdf"
|
| 121 |
+
},
|
| 122 |
+
"source": "human-centered-artificial-intelligence-masters-programme.pdf"
|
| 123 |
+
},
|
| 124 |
+
{
|
| 125 |
+
"content": "materials presented throughout the programme. \n\u00a0\n2. Methods I, 5 credits \nThis course provides an introduction to qualitative research methods, as well as in-depth\nknowledge and skills in qualitative data collection (e.g., focus groups, interviews,\nobservations) and analysis (e.g., thematic analysis), including analysis software. \n\u00a0\n3. Practicum, 6 credits \nThis course provides students with hands-on experience of research, connection to\nworking life and to promote employability. Students have a senior research mentor and\npartake in multiple aspects of research practice together with their mentors. Students build\ntheir own learning portfolios and career plans in connection to the practicum course. \n\u00a0\n4. Personality Psychology, 9 credits \nThis course focuses on contemporary influential personality theories and how they\ndescribe and explain personality development, stability, change, and individual differences.\nThe course explores possibilities and problems in combining different levels of analyses\nand different methods in order to investigate important questions in the personality\ndomain. The course covers methodological and research issues as well as applications of\npersonality theories. \n\u00a0\n5. Methods II, 5 credits \nThis course provides as introduction to quantitative research methods, discussing core\nconcepts such as statistical inference, measurement, data, reliability and validity. It\nprovides students with in-depth knowledge and skills in quantitative data collection and\nanalysis, including analysis software, with focus on concepts such as test construction and\ntest theory, and related analysis techniques (e.g., correlation, factor analysis). \n\u00a0\n6. Cognitive Psychology, 9 credits \nThe cognitive psychology course provides students with methodology and state-of-the art\nresearch in mental functions and processing, such as memory, learning, decision making,\nattention, and executive functioning. Students will learn how to generate relevant research",
|
| 126 |
+
"metadata": {
|
| 127 |
+
"category": "programs",
|
| 128 |
+
"doc_type": "program",
|
| 129 |
+
"filename": "masters-programme-in-psychological-science.pdf",
|
| 130 |
+
"page": 3,
|
| 131 |
+
"source": "./data/programs/pdf/masters-programme-in-psychological-science.pdf",
|
| 132 |
+
"type": "pdf"
|
| 133 |
+
},
|
| 134 |
+
"source": "masters-programme-in-psychological-science.pdf"
|
| 135 |
+
},
|
| 136 |
+
{
|
| 137 |
+
"content": "### Strong and varied research connections\n\nThe Department of Mathematical Sciences has strong traditions in a broad range of research, both in pure and applied mathematics. We are a joint department of two universities in Gothenburg: The University of Gothenburg and Chalmers University of Technology. As the largest department in mathematical sciences in Sweden, we can offer a broad range of courses, which opens up opportunities for collaborations and several specializations. Our programme strives to be at the forefront of mathematical sciences and offers five specializations:\n\n- mathematics\n- applied mathematics\n- mathematical statistics\n- financial mathematics\n- statistical learning and AI\n\nTwo of these specializations are not commonly found in similar programmes: financial mathematics and statistical learning and AI.\n\n### Diverse options for future careers\n\nSome specializations are more theoretical and research-oriented and will prepare you for further research and a career in academia. Other specializations are geared more towards applied mathematics and better prepare you for work within the private sector but could also lead to an academic career. Some specializations, such as mathematical statistics, can be more theoretical or applied depending on your interests\n\nRead more about [Specializations](https://gu.se/en/study-gothenburg/specializations-mathematical-sciences )\n\n[What is it like to study in Gothenburg? Ask our international students!](https://www.gu.se/en/study-gothenburg/contact-a-student)\n\n## Programme structure and content\n\nThere is a high degree of freedom and flexibility in our programme. There is one mandatory course for all specializations: Perspectives in Mathematics. There are two exclusive courses\u2014closed to students outside our programme\u2014that are based on solving real-world problems from industrial partners:",
|
| 138 |
+
"metadata": {
|
| 139 |
+
"category": "programs",
|
| 140 |
+
"doc_type": "program",
|
| 141 |
+
"filename": "mathematical-sciences-masters-programme-n2mat.md",
|
| 142 |
+
"source": "./data/programs/md/mathematical-sciences-masters-programme-n2mat.md",
|
| 143 |
+
"type": "markdown"
|
| 144 |
+
},
|
| 145 |
+
"source": "mathematical-sciences-masters-programme-n2mat.md"
|
| 146 |
+
},
|
| 147 |
+
{
|
| 148 |
+
"content": "- physics/statistical physics\n- robotics and adaptive systems\n- machine learning with applications\n\n### Educational methods\n\nBesides traditional lectures on simulation and theory of complex systems, the programme is largely based on numerical calculation and simulation projects and, depending on your elective courses, practical work in the robotics lab. We emphasize problem solving in the form of assignments and smaller projects, where problems are presented that require solutions to be implemented with mathematical software (typically Matlab). One of the mandatory courses (Stochastic Optimization Algorithms) also emphasizes the importance of writing and examining structured program code. In several courses you will work in pairs or small groups. A seminar course spans the entire first year, and functions partly as an introduction, but above all provides training in presentation technology by systematically giving and receiving feedback on presentations. This course also includes an ethics element.\n\n### A dynamic and engaging community\n\nThe content of the programme is closely connected to the research on machine learning, genetics and turbulence, information theory, and adaptive systems and robotics performed at Chalmers University of Technology and the University of Gothenburg. There is also a lively exchange with international research groups and regular guest lectures on current research that is often directly related to the course material.\n\n## Programme structure and content\n\nThe first year provides foundational knowledge of complex systems, and provides you the opportunity to design your education according to your own interests. The first semester contains four recommended courses:\n\n- Neural Networks\n- Stochastic Optimization Algorithms\n- Simulation of Complex Systems\n- Dynamical Systems\n\nThe second semester has one recommended course, Computational Biology, and the opportunity to choose elective courses. The following elective courses are recommended:",
|
| 149 |
+
"metadata": {
|
| 150 |
+
"category": "programs",
|
| 151 |
+
"doc_type": "program",
|
| 152 |
+
"filename": "complex-adaptive-systems-masters-programme-n2cas.md",
|
| 153 |
+
"source": "./data/programs/md/complex-adaptive-systems-masters-programme-n2cas.md",
|
| 154 |
+
"type": "markdown"
|
| 155 |
+
},
|
| 156 |
+
"source": "complex-adaptive-systems-masters-programme-n2cas.md"
|
| 157 |
+
},
|
| 158 |
+
{
|
| 159 |
+
"content": "2024-09-11\n\n\nValid from semester\n\n\nAutumn term 2025\n\n\nDecision maker\n\n\nSahlgrenska Academy\n\n\nStarts at first-cycle level and ends at second-cycle level\n\n\nNo\n\n\n## Specialisations\n\n## Purpose\n\nIncreasingly, research and development in health, healthcare, and life sciences sectors rely to a growing degree on the collection and analysis of data from various sources. This can involve clinical trials, observational studies, or basic research on, for example, biochemical mechanisms, as well as studies of public health, including health risk factors and the effects of health interventions. An important part is also data on patient characteristics, treatments and long-term life outcomes collected in health care and in Swedish and international registers, with applications in research, quality monitoring and resource allocation decisions, among others. Data can be of many , such as biochemical measurements, questionnaire responses, scores, diagnoses, survival rates, genetic factors and molecular biological data, and vary in scope and collection methods.\n\nFor this volume of data to benefit society through development and innovations in both the public and private sectors, expertise is required to collect, manage, visualize, analyse using statistical methods, and draw conclusions based on extensive datasets.\n\nThe purpose of the program is to provide students with a broad and in-depth understanding of statistical methods, including insight into the limitations of these methods and their applicability to different types of data and research questions, as well as how results can be interpreted and generalized. Upon completion of the program, students will be familiar with all stages of a project involving statistical analysis of health-related data.",
|
| 160 |
+
"metadata": {
|
| 161 |
+
"category": "programs",
|
| 162 |
+
"doc_type": "program",
|
| 163 |
+
"filename": "masters-programme-in-applied-biostatistics-syllabusm2sta.md",
|
| 164 |
+
"source": "./data/programs/md/masters-programme-in-applied-biostatistics-syllabusm2sta.md",
|
| 165 |
+
"type": "markdown"
|
| 166 |
+
},
|
| 167 |
+
"source": "masters-programme-in-applied-biostatistics-syllabusm2sta.md"
|
| 168 |
+
},
|
| 169 |
+
{
|
| 170 |
+
"content": "The program equips you to work with sustainability, and global challenges caused by, for example, climate change and a growing population.\n\n## About\n\nThe oceans remain one of our few unknowns. Marine exploration continues at an unprecedented scale, as does the ever-increasing exploitation of the oceans. More than 70% of the Earth\u2019s surface is covered by oceans. The heat capacity of the oceans is several hundred times larger than the atmospheric, ocean primary production rivals the terrestrial, and 40% of the human population lives less than 50 kilometres from a coastline.\n\nWith the ocean such an integral part\u202fof human life and society, the demand for skilled marine scientists capable of addressing increasing complex problems is growing, with more diverse, challenging, and interesting opportunities compared to just ten years ago. You will gain broad insights to the ocean as a system and graduate armed with the analytical tools and skills necessary to take on complex projects for a wide variety of employers.\n\n### A comprehensive and interdisciplinary programme\n\nThe Department of Marine Sciences harbours all disciplines of marine research: physical oceanography, marine biology, marine chemistry, marine geology, and even conservation of marine heritage. Our approach to the ocean is system oriented and interdisciplinary. We base this approach on the notion that the ocean is different from terrestrial systems in many fundamental ways.\n\nWe have highly qualified lecturers in all core disciplines, positioning themselves and the department at the forefront internationally. The lecturers are well connected nationally as well as internationally, and it is not uncommon for students to pursue part of their education in another university or country.\n\n### Rich and dynamic field work",
|
| 171 |
+
"metadata": {
|
| 172 |
+
"category": "programs",
|
| 173 |
+
"doc_type": "program",
|
| 174 |
+
"filename": "marine-science-masters-programme-n2mav.md",
|
| 175 |
+
"source": "./data/programs/md/marine-science-masters-programme-n2mav.md",
|
| 176 |
+
"type": "markdown"
|
| 177 |
+
},
|
| 178 |
+
"source": "marine-science-masters-programme-n2mav.md"
|
| 179 |
+
},
|
| 180 |
+
{
|
| 181 |
+
"content": "Programme Syllabus Reg.no. GU\n2022/2772University of Gothenburg\nFACULTY OF SCIENCE\nComplex Adaptive Systems, Master's Programme, 120\ncredits\nComplex Adaptive Systems, Master Program, 120 h\u00f6gskolepo\u00e4ng \nProgramme code: N2CAS\n \nSecond cycle / Avancerad niv\u00e5 \n \n \n1. Confirmation \nThis programme syllabus was confirmed by the Faculty of Science on 17-10-2006 (G) and was\nlast revised on 10-10-2022 (GU 2022/2772) by the Dean of the Faculty to be valid from 10-10-\n2022, Autumn semester 2023. \nResponsible Department/equivalent: Department of Physics \n \n2. Purpose \nToday we are forced to understand the dynamics of increasingly complex phenomena where\nstandard simulation methods are inadequate.\u00a0An example are fluctuations of share and option\nprices determining the stability of our economy.\u00a0Other examples are the dynamics of dust\nparticles in the exhaust of diesel engines, the dynamics of biological or artificial populations, or\neven the climate. \nAt the same time artificial intelligence and machine learning, using for example artificial neural\nnetworks, are also topics that can be described as complex systems.\u00a0\u00a0 \nThe aim of the programme is twofold: first to demonstrate and teach how to understand and\nmodel the behaviour of complex systems (occuring for instance in the context of evolution,\nchaos, and societal systems), and second to gain an understanding of and hands-on practice in\nusing\u00a0adaptive systems and machine learning.\u00a0 \nThe computer modeling and analytical skills acquired in the programme open a wide range of\npossibilities on the employment market.\u00a0The interdisciplinary nature of the programme in\nparticular has proven to be an asset on the job market.\u00a0As far as industry is concerned, our\nstudents have found employment in software development and consulting, in research and\ndevelopment, management, in the financial sector. Many jobs are related to machine learning\nand autonomous systems.\u00a0Quite a few students also continue towards a PhD in a wide spectrum",
|
| 182 |
+
"metadata": {
|
| 183 |
+
"category": "programs",
|
| 184 |
+
"doc_type": "program",
|
| 185 |
+
"filename": "complex-adaptive-systems-masters-programme.pdf",
|
| 186 |
+
"page": 0,
|
| 187 |
+
"source": "./data/programs/pdf/complex-adaptive-systems-masters-programme.pdf",
|
| 188 |
+
"type": "pdf"
|
| 189 |
+
},
|
| 190 |
+
"source": "complex-adaptive-systems-masters-programme.pdf"
|
| 191 |
+
},
|
| 192 |
+
{
|
| 193 |
+
"content": "### Alumni interviews\n\n[S\u00f6ren Stahlschmidt: Went directly into a trainee programme at SKF](https://www.gu.se/en/study-gothenburg/open-doors-to-industry-and-academia)\n\n[Nathalie Gocht: From Applied Data Science to the startup world](https://www.gu.se/en/study-gothenburg/from-applied-data-science-to-the-startup-world)\n\n[Razan Ghzouli: Pursuing a PhD degree in Software Engineering](https://www.gu.se/en/study-gothenburg/razan-is-pursuing-a-phd-degree-in-software-engineering)\n\n## Programme structure and content\n\nThis two-year programme includes the following compulsory courses that provide a core within data science:\n\n- Introduction to Data Science\n- Python for Data Scientists\n- Applied Mathematical Thinking\n- Statistical Methods for Data Science\n- Applied Machine Learning\n- Computational Techniques for Large-Scale Data\n- Research Methods for Data Science\n- Master\u2019s Thesis in Data Science\n\nApplied data science is multidisciplinary by nature, and the programme is designed to allow space for you to create your own profile by choosing optional courses. You can choose courses in areas where data science methods can be applied, or courses in technical areas that feature techniques and technologies that complement those introduced in the programme's mandatory courses. You are particularly encouraged to supplement the mandatory courses that provide a core in data science with optional second-cycle courses in the area of your bachelor\u2019s degree.\n\n## Who should apply?\n\nThe two-year master\u2019s programme in Applied Data Science is an international full-time on-campus programme open to both Swedish and international applicants. The programme is available to students from diverse backgrounds with basic programming skills.\n\nIf you have some previous programming experience and recognize that being able to work effectively with large data sets will be important in your future career, then apply to the master\u2019s programme in Applied Data Science.\n\n## Prerequisites and selection",
|
| 194 |
+
"metadata": {
|
| 195 |
+
"category": "programs",
|
| 196 |
+
"doc_type": "program",
|
| 197 |
+
"filename": "applied-data-science-masters-programme-n2ads.md",
|
| 198 |
+
"source": "./data/programs/md/applied-data-science-masters-programme-n2ads.md",
|
| 199 |
+
"type": "markdown"
|
| 200 |
+
},
|
| 201 |
+
"source": "applied-data-science-masters-programme-n2ads.md"
|
| 202 |
+
},
|
| 203 |
+
{
|
| 204 |
+
"content": "## Prerequisites and selection\n\n### Entry requirements\n\nA Bachelor's degree of 180 credits including an independent project (degree project) of at least 15 credits or equivalent.\n\n7\\\\.5 credits from courses in programming in a general-purpose programming language or equivalent, and 7.5 credits mathematics or statistics, no courses on pre-university level.\n\nApplicants must prove their knowledge of English: English 6/English B from Swedish Upper Secondary School or the equivalent level of an internationally recognized test, for example TOEFL, IELTS.\n\n### Selection\n\nThe selection is based on (i) a motivational letter, (ii) grades from previous higher education. The motivational letter should clearly explain the motivation for choosing this programme and this institution. The letter should introduce the applicant both personally and professionally, and discuss the relevance of the applicant's Bachelor's degree subject to Applied Data Science. The document must be entirely unique, i.e. it must not contain any part which is copied from any other source (with the exception of explicit quotations). Applications will be considered only if a Motivational Letter is included. Please use the form below and upload it together with your other documents (CV, transcripts, etc.) when you apply for the programme at universityadmissions.se.\n\n[Self assessment form and motivational letter](//www.gu.se/sites/default/files/2023-03/N2ADSself-assessment%20form2023-fill.pdf)\n\n## After graduation\n\nGraduates of the programme will receive the degree Master of Science in Applied Data Science.\n\nWith this programme you will obtain advanced knowledge in applied data science, and once the programme is completed you will be able to either\n\npursue a specialist career in industry or move ahead in academic\n\nresearch.\n\nYou will be prepared to work with Big Data in your\n\nfuture career. You will learn about different data science methods,\n\ntheir applicability, and advantages and disadvantages of different",
|
| 205 |
+
"metadata": {
|
| 206 |
+
"category": "programs",
|
| 207 |
+
"doc_type": "program",
|
| 208 |
+
"filename": "applied-data-science-masters-programme-n2ads.md",
|
| 209 |
+
"source": "./data/programs/md/applied-data-science-masters-programme-n2ads.md",
|
| 210 |
+
"type": "markdown"
|
| 211 |
+
},
|
| 212 |
+
"source": "applied-data-science-masters-programme-n2ads.md"
|
| 213 |
+
},
|
| 214 |
+
{
|
| 215 |
+
"content": "\u2022 Computational techniques for Large-scale Data, 7.5 credits\n\u2022 Applied Mathematical Thinking, 7.5 credits\n\u2022 Deep Machine Learning, 7.5 credits\n\u2022 Seminar course in Data Science, 7.5 credits\n\u2022 Project in Data Science, 7.5 credits\n\u2022 Computational methods for Bioinformatics, 7.5 credits\n\u2022 Design of AI-systems, 7.5 credits\n\u2022 Machine learning for natural language processing, 7.5 credits\n\u2022 Advanced topics in Machine learning, 7.5 credits\n\u2022 Advanced databases, 7.5 credits\n\u2022 Causality and causal inference, 7.5 credits\n\u2022 Research-oriented course in data science and AI, 7.5 credits\u00a0\n(N2ADS) Applied Data Science Master's Programme, 120 credits / Applied Data Science masterprogram, 120\nh\u00f6gskolepo\u00e4ng\nSecond cycle / Avancerad niv\u00e5\n4/6",
|
| 216 |
+
"metadata": {
|
| 217 |
+
"category": "programs",
|
| 218 |
+
"doc_type": "program",
|
| 219 |
+
"filename": "applied-data-science-masters-programme.pdf",
|
| 220 |
+
"page": 3,
|
| 221 |
+
"source": "./data/programs/pdf/applied-data-science-masters-programme.pdf",
|
| 222 |
+
"type": "pdf"
|
| 223 |
+
},
|
| 224 |
+
"source": "applied-data-science-masters-programme.pdf"
|
| 225 |
+
},
|
| 226 |
+
{
|
| 227 |
+
"content": "the following three specialization\u00a0courses: \n\u25cf MSA101 Computational methods for Bayesian statistics\n\u25cf MSA220 Statistical learning for big\u00a0data\n\u25cf MSF100 Statistical inference principles\nand an independent degree project within the course MSA910 Thesis in Mathematical Statistics\nfor the two-year Masters Program in Mathematical Sciences (30 credits). \n \nThe specialization Statistical learning and AI \nFor a degree in Statistical learning and AI following three compulsory specialization courses are\ntaken:\n(N2MAT) Mathematical Sciences, Master's Programme, 120 credits / Matematiska vetenskaper, masterprogram,\n120 h\u00f6gskolepo\u00e4ng\nSecond cycle / Avancerad niv\u00e5\n6/8",
|
| 228 |
+
"metadata": {
|
| 229 |
+
"category": "programs",
|
| 230 |
+
"doc_type": "program",
|
| 231 |
+
"filename": "mathematical-sciences-masters-programme.pdf",
|
| 232 |
+
"page": 5,
|
| 233 |
+
"source": "./data/programs/pdf/mathematical-sciences-masters-programme.pdf",
|
| 234 |
+
"type": "pdf"
|
| 235 |
+
},
|
| 236 |
+
"source": "mathematical-sciences-masters-programme.pdf"
|
| 237 |
+
},
|
| 238 |
+
{
|
| 239 |
+
"content": "Today\u2019s society is becoming increasingly digitalized, and vast amounts of data are being collected that require analysis \u2013 especially in the health and life science fields. How should we interpret and understand all this complex data? How can we use the data to develop pharmaceuticals, treatments, and medical devices? These are some of the challenges we face today. Biostatisticians play a crucial role here. Through their expertise in handling and analyzing data, they contribute to advancing research and creating societal benefits. There is a great demand for biostatisticians today.\n\nThe programme provides you with knowledge of key theories and models in statistics. You will study for two years. The language of instruction is English. The goal is to give you practical experience and the tools you need to work independently as a biostatistician. You will learn to handle all steps in the data analysis of health-related data. This includes the design and analysis of various types of studies, related to basic medical research, clinical research, and population studies.\n\nWe provide you with the knowledge of basic and advanced statistical methods and models, how they can be used, how to interpret the results, and what conclusions can or cannot be drawn. You will also learn to program in R, which is an important and widely used tool for data management, analysis, and visualization. Additionally, you will gain knowledge of AI and machine learning and how these can be used as methods to analyze data and create a more efficient workflow.\n\n### Who can apply\n\nWe welcome all students with background in health sciences, economics, natural sciences, and engineering, with an interest in data, statistics, and life sciences to apply for the programme. We offer 25 places each fall.\n\n### What we offer\n\n- International environment: meet teachers and students from around the world\n\n- Mix of students: study with doctors, economists, engineers, and other professionals",
|
| 240 |
+
"metadata": {
|
| 241 |
+
"category": "programs",
|
| 242 |
+
"doc_type": "program",
|
| 243 |
+
"filename": "masters-programme-in-applied-biostatistics-m2sta.md",
|
| 244 |
+
"source": "./data/programs/md/masters-programme-in-applied-biostatistics-m2sta.md",
|
| 245 |
+
"type": "markdown"
|
| 246 |
+
},
|
| 247 |
+
"source": "masters-programme-in-applied-biostatistics-m2sta.md"
|
| 248 |
+
},
|
| 249 |
+
{
|
| 250 |
+
"content": "development, management, in the financial sector. Many jobs are related to machine learning\nand autonomous systems.\u00a0Quite a few students also continue towards a PhD in a wide spectrum\nof academic fields. \n(N2CAS) Complex Adaptive Systems, Master's Programme, 120 credits / Complex Adaptive Systems, Master\nProgram, 120 h\u00f6gskolepo\u00e4ng\nSecond cycle / Avancerad niv\u00e5",
|
| 251 |
+
"metadata": {
|
| 252 |
+
"category": "programs",
|
| 253 |
+
"doc_type": "program",
|
| 254 |
+
"filename": "complex-adaptive-systems-masters-programme.pdf",
|
| 255 |
+
"page": 0,
|
| 256 |
+
"source": "./data/programs/pdf/complex-adaptive-systems-masters-programme.pdf",
|
| 257 |
+
"type": "pdf"
|
| 258 |
+
},
|
| 259 |
+
"source": "complex-adaptive-systems-masters-programme.pdf"
|
| 260 |
+
},
|
| 261 |
+
{
|
| 262 |
+
"content": "Third semester\n\n- Survival analysis, 7.5 credits\n- Machine learning and AI, 7.5 credits\n- Elective courses, 15 credits\n\nFourth semester\n\n- Master\u2019s Thesis in Applied Biostatistics, 30 credits\n\n## Objectives\n\nThe objectives of the program, in addition to the general learning outcomes specified for the master\u2019s degree in the Higher Education Ordinance (SFS 1993:100, System of Qualifications, Appendix 2), are the following local learning outcomes:\n\n_Knowledge and understanding_\n\nFor a Degree of Master, the student shall\n\n- demonstrate knowledge and understanding of basic as well as advanced methods and models in biostatistics, with in-depth knowledge of commonly used analysis methods and their applications.\n- be able to describe different types of studies, including their areas of application and limitations, as well as the data structures and analysis methods commonly used in these study types.\n- be able to explain the components of a project involving quantitative data, with a particular focus on the parts related to data management, analysis, and interpretation.\n\n_Competence and skills_\n\nFor a Degree of Master, the student shall\n\n- integrate and apply knowledge from biostatistics to scientific questions, contribute to the design of of studies, make appropriate methodological choices, and analyse, assess, and manage complex issues and situations related to health data.\n- independently and effectively manage of data by transforming, converting, and adapting data for analysis, as well as performing the chosen analyses and visualizing data using statistical programming.\n- verbally and in writing present results and conclusions based on data analysis, including a clear description, with justification, of the chosen method, and provide interpretations of results and conclusions in a suitable manner for different audiences.\n\n_Judgement and approach_\n\nFor a Degree of Master, the student shall",
|
| 263 |
+
"metadata": {
|
| 264 |
+
"category": "programs",
|
| 265 |
+
"doc_type": "program",
|
| 266 |
+
"filename": "masters-programme-in-applied-biostatistics-syllabusm2sta.md",
|
| 267 |
+
"source": "./data/programs/md/masters-programme-in-applied-biostatistics-syllabusm2sta.md",
|
| 268 |
+
"type": "markdown"
|
| 269 |
+
},
|
| 270 |
+
"source": "masters-programme-in-applied-biostatistics-syllabusm2sta.md"
|
| 271 |
+
},
|
| 272 |
+
{
|
| 273 |
+
"content": "The course also provides a broad overview of the research field of investigative journalism.\n\nThe second course of the programme, JU 2602, Data Journalism and Visualisation, 15 credits, is about using data for journalistic purposes to draw your own conclusions. The course covers various methods for collecting, cleaning, evaluating, analysing and presenting data.\n\nStudents will use current tools to manage and visualise data and carry out projects that apply the entire data journalism process. With these skills as a basis, students are trained to scrutinise and evaluate data, data processing and data presentation from source-critical and media-ethical perspectives.\n\nAs data journalism and visualisation is a growing field in the industry, there is also current research that can contextualise and deepen the understanding of this journalistic genre.\n\nThe third course, JU 2600, Investigative Journalism Across Borders, 15 credits, aims to sharpen the discussions towards international networks and transnational investigative journalism (cross-border collaborations). This type of journalistic project places advanced demands on project management, intercultural competence, clarity in research, hypothesis testing and verification of facts.\n\nThe course also includes a theoretical component in the form of a comparative perspective on the rest of the world, its media systems and journalistic cultures. This perspective develops students' ability to scrutinise investigative journalism from political and ethical perspectives and to discuss its future development.\n\nThe course includes an elaborated project plan and preparatory research for a cross-border project, which students can continue to work on during the final course of the programme.\n\nThe programme ends either with the course Master\u2019s thesis in investigative journalism, JU2603, 15 credits, or with the course Master\u2019s project in investigative journalism, JU2604, 15 credits.",
|
| 274 |
+
"metadata": {
|
| 275 |
+
"category": "programs",
|
| 276 |
+
"doc_type": "program",
|
| 277 |
+
"filename": "masters-programme-in-investigative-journalism-syllabus-s2jou.md",
|
| 278 |
+
"source": "./data/programs/md/masters-programme-in-investigative-journalism-syllabus-s2jou.md",
|
| 279 |
+
"type": "markdown"
|
| 280 |
+
},
|
| 281 |
+
"source": "masters-programme-in-investigative-journalism-syllabus-s2jou.md"
|
| 282 |
+
},
|
| 283 |
+
{
|
| 284 |
+
"content": "### A multidisciplinary area\n\nThe program offers a unique environment for future UX designers, developers, researchers, business developers, policy analysts, and compliance officers looking to specialize in Human-centered Artificial Intelligence.\n\nAs the field of HCAI is multidisciplinary, students come into contact and engage with leading researchers across several subject areas including Human-computer Interaction, Information Systems, Cognition Science, Applied IT, and Data Science.\n\nThe pedagogical approach taken encourages active participation where students are expected to engage in discussion and hands-on activities while documenting their progression through a portfolio of work that shows both their learning in the field of HCAI and the development of their own interests. These interests can then be further explored through a research-based thesis and the opportunity to undertake an internship within a research group or at a company or organization.\n\nThe program is found at the vibrant Campus Lindholmen, a technological hub with a large industry presence including such companies and organizations as Zenseact, RISE, Ericsson, and Volvo, to name a few.\n\n## Who should apply?\n\nThe HCAI program strives for a diverse student group and welcomes students with a bachelor's degree from different fields including cognitive science, information systems, and interaction design.\n\nApplications are welcome from those with degrees in other areas if all required prerequisites are met. These prerequisites include 7.5 credits of programming in a general programming language, 7.5 credits in artificial intelligence or machine learning, and 7.5 credits in human-computer or human-technology interaction.\n\n## Prerequisites and selection\n\n### Entry requirements\n\nBachelor's degree 180 credits including an independent project (degree project) of at least 15 credits or equivalent.",
|
| 285 |
+
"metadata": {
|
| 286 |
+
"category": "programs",
|
| 287 |
+
"doc_type": "program",
|
| 288 |
+
"filename": "human-centered-artificial-intelligence-masters-programme-t2hai.md",
|
| 289 |
+
"source": "./data/programs/md/human-centered-artificial-intelligence-masters-programme-t2hai.md",
|
| 290 |
+
"type": "markdown"
|
| 291 |
+
},
|
| 292 |
+
"source": "human-centered-artificial-intelligence-masters-programme-t2hai.md"
|
| 293 |
+
},
|
| 294 |
+
{
|
| 295 |
+
"content": "The first three semesters consist of courses in the main areas of psychological science.\n\n\u2022 Psychology as a Science\n\n\u2022 Personality Psychology\n\n\u2022 Cognitive Psychology\n\n\u2022 Social Psychology\n\n\u2022 Lifespan Developmental Psychology\n\n\u2022 Human Neuropsychology\n\nEach semester also includes courses on research methods (a total of six). By the end of the programme, you will have acquired an arsenal of methodological and statistical tools.\n\nThe programme includes a three-semester practicum course, in which you will work in one of the several research groups at the Department of Psychology.\n\nIn your fourth semester, you will complete your thesis, which provides you with an opportunity to begin to carve out your research specialty and gain experience in planning, executing, and reporting psychological science.\n\n## Who should apply?\n\nDo you want to actively engage with a research group and contribute to an active learning process?\n\nDo you see yourself eventually pursing a PhD in psychology or conducting research as part of your career?\n\nAre you interested in psychology research and want to develop the skills needed to contribute to the field?\n\nIf you have a bachelor\u2019s degree in Psychology, and want to deepen and broaden your knowledge and skills, apply for the master\u2019s programme in Psychological Science.\n\n## Prerequisites and selection\n\n### Entry requirements\n\nThe applicant needs to have achieved a Bachelor's degree of at least 180 credits with a major in Psychology (or equivalent), and a minimum of 15 credits in research methods. The applicant must also prove skills in the English language at the level of at least English 6 / English B or equivalent level on an internationally recognized test such as TOEFL or IELTS.\n\nPotential candidates will be asked to submit motivation letters indicating their academic and professional background/experience as well as how the programme will benefit their defined professional career goals.\n\n### Special instructions for application",
|
| 296 |
+
"metadata": {
|
| 297 |
+
"category": "programs",
|
| 298 |
+
"doc_type": "program",
|
| 299 |
+
"filename": "masters-programme-in-psychological-science-s2map.md",
|
| 300 |
+
"source": "./data/programs/md/masters-programme-in-psychological-science-s2map.md",
|
| 301 |
+
"type": "markdown"
|
| 302 |
+
},
|
| 303 |
+
"source": "masters-programme-in-psychological-science-s2map.md"
|
| 304 |
+
},
|
| 305 |
+
{
|
| 306 |
+
"content": "## Programme structure and content\n\n**The first semester** explores the historical development of the international system, with a focus on the relations among international organisations and between international organisations and various state and non-state actors. You will explore the primary policy theories in areas such as peace and conflict studies, and economic, social, and political development.\n\n**The second and third semesters** offer opportunities for pursuing your individual areas of interest through elective courses, an optional internship, or studies abroad. A research methods course in the third semester equips you with advanced knowledge of social science research methods that will assist in your thesis work. We offer students the choice of four different courses, two in quantitative and two in qualitative research methods, which cater to beginners as well as students with more advanced methods backgrounds.\n\n**The fourth semester** offers an opportunity to apply and further develop your methodological skills and area expertise from previous semesters in your final master\u2019s thesis.\n\n## Who should apply?\n\n- Do you want to gain a deeper understanding of the international system and processes of change?\n- Are you intrigued by who makes policies, the ideas and interests involved behind them, and who is affected by them?\n- Do you want the skills to find, evaluate, integrate, and generate information and knowledge on complex issues of relevance to the international policy community?\n- Do you want to study in an international environment with other students from all over the world?\n\n\nThen apply for the Master\u2019s Programme in International Administration and Global Governance.\n\n## Prerequisites and selection\n\n### Entry requirements",
|
| 307 |
+
"metadata": {
|
| 308 |
+
"category": "programs",
|
| 309 |
+
"doc_type": "program",
|
| 310 |
+
"filename": "masters-programme-in-international-administration-and-global-governance-s2iag.md",
|
| 311 |
+
"source": "./data/programs/md/masters-programme-in-international-administration-and-global-governance-s2iag.md",
|
| 312 |
+
"type": "markdown"
|
| 313 |
+
},
|
| 314 |
+
"source": "masters-programme-in-international-administration-and-global-governance-s2iag.md"
|
| 315 |
+
},
|
| 316 |
+
{
|
| 317 |
+
"content": "The third semester includes mandatory courses in survival analysis and machine learning and AI, as well as elective courses. The survival analysis course provides an in-depth study of specialized methods for handling and analysing data containing information about time-to-event. The course on machine learning and AI builds on and applies the fundamental principles of statistical learning covered in the second semester, offering a broad overview of current methods for analysis. The elective courses allow for individual specialization, where students can broaden or deepen their knowledge based on their interests, prior knowledge, and the current course offerings. They can choose from courses in areas such as health economics, clinical trials, or additional statistical methods and their applications in life sciences. The institution will offer at least 15 credits of elective courses, but students also have the option to select advanced-level courses outside the program, provided they meet the prerequisites for those courses.\n\nIn the program, students will sit in on statistical consultations given as part of the statistical advisory services provided by the Department of Medicine, which will enhance their understanding of the practice of biostatistics in scientific projects.\n\nThe sequence of the courses may be subject to change. The program is offered full-time and includes the following courses:\n\nProgram structure\n\nFirst semester\n\n- Introduction to biostatistics, 9 credits\n- R programming for applied biostatistics, 6 credits\n- Study and experimental design, 7.5 credits\n- Regression analysis, 7.5 credits\n\nSecond semester\n\n- Causal inference, 7.5 credits\n- Health data and questionnaires, 7.5 credits\n- Statistical learning, 7.5 credits\n- Advanced statistical methods, 7.5 credits\n\nThird semester\n\n- Survival analysis, 7.5 credits\n- Machine learning and AI, 7.5 credits\n- Elective courses, 15 credits\n\nFourth semester\n\n- Master\u2019s Thesis in Applied Biostatistics, 30 credits",
|
| 318 |
+
"metadata": {
|
| 319 |
+
"category": "programs",
|
| 320 |
+
"doc_type": "program",
|
| 321 |
+
"filename": "masters-programme-in-applied-biostatistics-syllabusm2sta.md",
|
| 322 |
+
"source": "./data/programs/md/masters-programme-in-applied-biostatistics-syllabusm2sta.md",
|
| 323 |
+
"type": "markdown"
|
| 324 |
+
},
|
| 325 |
+
"source": "masters-programme-in-applied-biostatistics-syllabusm2sta.md"
|
| 326 |
+
},
|
| 327 |
+
{
|
| 328 |
+
"content": "The second semester has one recommended course, Computational Biology, and the opportunity to choose elective courses. The following elective courses are recommended:\n\n- Information Theory of Complex Systems\n- Autonomous robots\n- Intelligent agents\n- Stochastic processes in physics, chemistry and biology\n- Advanced machine learning with neural networks\n\nDuring the third semester, you can opt to begin a full-year master\u2019s thesis, or you can choose additional elective courses, including the recommended Humanoid Robotics and Game Theory and Rationality.\n\nThe final semester is dedicated to your individual master\u2019s thesis, which can be completed in collaboration with a company or within academia.\n\n## Who should apply?\n\nAre you interested in programming, artificial intelligence, and complexity in society and the natural world?\n\nDo you want the skills to contribute to the future of autonomous systems, robotics, and other quickly developing technologies?\n\nDo you want to gain practical experience in machine learning, game theory, and other methods commonly applied to complex systems?\n\nThen apply for the master\u2019s programme in Complex Adaptive Systems.\n\n## Prerequisites and selection\n\n### Entry requirements\n\nA Bachelor's degree or the equivalence to 180 Swedish credit points (p) or 180 ECTS credits at an accredited university. The programme is open to international and domestic students with a degree in the Natural, Engineering, or Mathematical Sciences. At least 30 credits of mathematics (including linear algebra and analysis) and programming. Applicants must prove their knowledge of English: English 6/English B from Swedish Upper Secondary School or the equivalent level of an internationally recognized test, for example TOEFL, IELTS.\n\n### Selection\n\nSelection is based upon the number of credits from previous university studies, maximum 165 credits.\n\n## After graduation",
|
| 329 |
+
"metadata": {
|
| 330 |
+
"category": "programs",
|
| 331 |
+
"doc_type": "program",
|
| 332 |
+
"filename": "complex-adaptive-systems-masters-programme-n2cas.md",
|
| 333 |
+
"source": "./data/programs/md/complex-adaptive-systems-masters-programme-n2cas.md",
|
| 334 |
+
"type": "markdown"
|
| 335 |
+
},
|
| 336 |
+
"source": "complex-adaptive-systems-masters-programme-n2cas.md"
|
| 337 |
+
},
|
| 338 |
+
{
|
| 339 |
+
"content": "During the third year the student can choose optional courses within or outside the main field of\nstudy. \nProgression in the programme is based on the results in previous courses and projects. To\ngraduate from the programme in the main field of study students must successfully complete all\ncompulsory programme courses. \nThe following compulsory courses are included in the programme: \n\u2022 Discrete Mathematics, 7.5 credits\n\u2022 Fundamentals of Programming, 7.5 credits\n\u2022 Object-Oriented Programming, 7.5 credits\n\u2022 Project: Agile Software Project Management, 7.5 credits\n\u2022 Data Management, 7.5 credits\n\u2022 Requirements Engineering, 7.5 credits\n\u2022 Data Structures and Algorithms, 7.5 credits\n\u2022 Project: Systems Development, 7.5 credits\n\u2022 Fundamentals of Software Architecture, 7.5 credits\n\u2022 Distributed Systems, 7.5 credits\n\u2022 Human-Computer Interaction, 7.5 credits\n\u2022 Project: Web Engineering, 7.5 credits\n\u2022 Development of Embedded and Real Time Systems, 7.5 credits\n\u2022 Software Quality and Testing, 7.5 credits\n\u2022 Project: Data-Driven Software Engineering for Cyber Physical Systems, 7.5 credits\n\u2022 Advanced Programming, 7.5 credits\n\u2022 Management and Leadership, 7.5 credits\n\u2022 Research Methods in Software Engineering, 7.5 credits\n\u2022 Bachelor Thesis in Software Engineering and Management, 15 credits\n\u00a0 \nOptional courses \nWithin the programme, students can study optional courses within or outside the main field of\nstudy to an extent of 30 credits. The curriculum includes the following optional courses within\nthe main field of study Software Engineering: \n\u2022 Software Innovation, 15 credits\n\u2022 Change Management in Software Development Organizations, 7.5 credits\n\u2022 AI Engineering, 7.5 credits\n\u2022 Software Engineering for Data-Intensive AI Applications, 15 credits\n\u00a0 \n\u00a0 \n \n7. Guaranteed admission \nStudents who follow the study programme at the prescribed pace have guaranteed admission to\ncompulsory and optional courses provided that specific entry requirements are fulfilled and the",
|
| 340 |
+
"metadata": {
|
| 341 |
+
"category": "programs",
|
| 342 |
+
"doc_type": "program",
|
| 343 |
+
"filename": "software-engineering-and-management-bachelors-programme.pdf",
|
| 344 |
+
"page": 4,
|
| 345 |
+
"source": "./data/programs/pdf/software-engineering-and-management-bachelors-programme.pdf",
|
| 346 |
+
"type": "pdf"
|
| 347 |
+
},
|
| 348 |
+
"source": "software-engineering-and-management-bachelors-programme.pdf"
|
| 349 |
+
},
|
| 350 |
+
{
|
| 351 |
+
"content": "and at least three of the following specialization\u00a0courses: \n\u25cf MMA110 Integration theory\n\u25cf MMA630 Computational methods for stochastic differential equations\n\u25cf MMA711 Financial derivatives and partial differential equations\n\u25cf MSA101 Computational methods for Bayesian statistics\n\u25cf MSA220 Statistical learning for big\u00a0data\n\u25cf MSA350 Stochastic analysis\n\u25cf MSA400 Financial risk\n\u25cf MSA410 Financial time series\n\u00a0 \nand at least two of the following\u00a0courses: \n\u25cf GM1002 Financial institutions and markets\n\u25cf GM0704 Advanced macroeconomic theory\n\u25cf GM1015 Advanced corporate finance\n\u25cf GM1014 Applied portfolio management\n\u00a0 \nand an independent degree project within one of the courses: \n\u25cf MMA930 Thesis in Mathematics for the two-year Masters Program in Mathematical\nSciences, specialization Financial\u00a0mathematics (30 credits), or\n\u25cf MSA930 Thesis in Mathematical Statistics for the two-year Masters Program in\nMathematical Sciences, specialization Financial\u00a0mathematics (30 credits), depending on\nwhether the student\u00a0intend to graduate in mathematics or mathematical statistics.\n\u00a0 \nFor\u00a0a degree in mathematics at least one of the following courses are taken: \n\u25cf MMA110 Integration Theory\n\u25cf MMA630 Computational methods for stochastic differential equations\n\u25cf MMA711 Financial derivatives and partial differential equations\n\u00a0 \nThe specialization Mathematical statistics \nFor a degree\u00a0in Mathematical statistics, courses in mathematical statistics at advanced level of at\nleast 30 credits has to be included. The mathematics course MMA110 Integration theory may be\nincluded in these 30 credits. The courses can be partially selected freely, but one must read the\nmandatory specialization course MSA150 Foundations of probability theory and at least one of\nthe following three specialization\u00a0courses: \n\u25cf MSA101 Computational methods for Bayesian statistics\n\u25cf MSA220 Statistical learning for big\u00a0data\n\u25cf MSF100 Statistical inference principles",
|
| 352 |
+
"metadata": {
|
| 353 |
+
"category": "programs",
|
| 354 |
+
"doc_type": "program",
|
| 355 |
+
"filename": "mathematical-sciences-masters-programme.pdf",
|
| 356 |
+
"page": 5,
|
| 357 |
+
"source": "./data/programs/pdf/mathematical-sciences-masters-programme.pdf",
|
| 358 |
+
"type": "pdf"
|
| 359 |
+
},
|
| 360 |
+
"source": "mathematical-sciences-masters-programme.pdf"
|
| 361 |
+
},
|
| 362 |
+
{
|
| 363 |
+
"content": "assess and deal with complex phenomena, issues and situations even with limited\ninformation\n\u2022 demonstrate the ability to identify and formulate issues critically, autonomously and\ncreatively as well as to plan and, using appropriate methods, undertake advanced tasks\nwithin predetermined time frames and so contribute to the formation of knowledge as well\nas the ability to evaluate this work\n\u2022 demonstrate the ability in speech and writing both nationally and internationally to clearly\nreport and discuss his or her conclusions and the knowledge and arguments on which they\nare based in dialogue with different audiences, and\n\u2022 demonstrate the skills required for participation in research and development work or\nautonomous employment in some other qualified capacity.\n\u00a0 \nJudgement and approach \nFor a Degree of Master (120 credits) the student shall \n\u2022 demonstrate the ability to make assessments in the main field of study informed by relevant\ndisciplinary, social and ethical issues and also to demonstrate awareness of ethical aspects\nof research and development work\n\u2022 demonstrate insight into the possibilities and limitations of research, its role in society and\nthe responsibility of the individual for how it is used, and\n\u2022 demonstrate the ability to identify the personal need for further knowledge and take\nresponsibility for his or her ongoing learning.\n\u00a0 \n \nLocal outcomes \n \nKnowledge and understanding \nFor a Degree of Master of Science (120 credits) with a major in Data Science the student shall \n\u2022 describe and compare different techniques for the analysis and management of data.\n \nCompetence and skills \nFor a Degree of Master of Science (120 credits) with a major in Data Science the student shall be\nable to \n\u2022 use tools and technologies for the analysis and management of data,\n\u2022 apply Data Science methods to solving problems in a variety of application areas, and\n\u2022 independently, as well as in cooperation with others, investigate and draw relevant",
|
| 364 |
+
"metadata": {
|
| 365 |
+
"category": "programs",
|
| 366 |
+
"doc_type": "program",
|
| 367 |
+
"filename": "applied-data-science-masters-programme.pdf",
|
| 368 |
+
"page": 2,
|
| 369 |
+
"source": "./data/programs/pdf/applied-data-science-masters-programme.pdf",
|
| 370 |
+
"type": "pdf"
|
| 371 |
+
},
|
| 372 |
+
"source": "applied-data-science-masters-programme.pdf"
|
| 373 |
+
},
|
| 374 |
+
{
|
| 375 |
+
"content": "[More information about tuition fees](https://www.gu.se/en/study-in-gothenburg/apply/tuition-fees)\n\nCancelled\n\n\n## Summary\n\nThe programme is not accepting applications for Autumn 2025.\n\nBig Data is taking centre stage in all areas\u2014business and industry, public policy, the life sciences, natural sciences, humanities, and social sciences. People with knowledge of how to process and analyse large amounts of data are becoming increasingly sought after. This full-time on-campus programme consists of courses in applied data science and related subjects.\n\n## About\n\nData science is concerned with extracting meaning from large volumes of data. It is a field that has grown rapidly in recent years as a result of the increasing availability of large data sets and the opportunities and challenges that they present. Central topics within data science include data mining, machine learning, databases, and the application of data science methods in natural sciences, life sciences, business, humanities, and social sciences, as well as in industry and society.\n\n[Watch our film about the programme](https://www.youtube.com/watch?v=7KVxug8RomY)\n\n### Training in the management and analysis of large-scale data\n\nData science is having a big impact on industry. For some companies, being able to handle and analyse massive data sets is central to their business model. Even for other companies, being able to extract information from data (for example, data about customers) can offer crucial competitive advantages. People with knowledge and skills in data science are therefore in high demand, in Gothenburg, in Sweden, and internationally. Similarly, within scientific research, data-intensive scientific discovery is increasingly important in many areas, and researchers need to be able to handle and analyse massive data sets.\n\n### Welcoming students with backgrounds in many different areas",
|
| 376 |
+
"metadata": {
|
| 377 |
+
"category": "programs",
|
| 378 |
+
"doc_type": "program",
|
| 379 |
+
"filename": "applied-data-science-masters-programme-n2ads.md",
|
| 380 |
+
"source": "./data/programs/md/applied-data-science-masters-programme-n2ads.md",
|
| 381 |
+
"type": "markdown"
|
| 382 |
+
},
|
| 383 |
+
"source": "applied-data-science-masters-programme-n2ads.md"
|
| 384 |
+
},
|
| 385 |
+
{
|
| 386 |
+
"content": "### Professionally oriented\n\nOur programme focuses on the problems of an advanced practitioner and provides you with a solid basis in corporate finance and investment management. You will gain analytical knowledge and an operational understanding of financial concepts, develop skills to apply financial theory to practical problems, and gather working knowledge of empirical tools. Prominent representatives of the business community give seminars and classes, preparing you to enter the job market. Our Finance Laboratory modernizes your education by:\n\n- providing access to real-time data from most global exchanges;\n- providing a continuous flow of updated models and research material from several international investment banks, covering most major companies and fixed income securities;\n- enabling you to monitor realistic positions of securities in terms of valuation and risk;\n- and developing your programming skills to meet the needs of an increasingly technological industry.\n\n### Flexible\n\nYou can choose from various elective courses and tailor your education to your particular interests and goals. Courses like Applied Portfolio Management, Quantitative Finance, and Credit Risk Modelling prepare you for careers in asset management, risk management, security analysis, and sales. On the other hand, courses like Corporate Valuation, Financial Accounting, and Industrial Economics prepare you for careers in commercial banking, management consulting, or finance functions in corporations. You may also broaden your perspective via a wide selection of non-financial elective courses.\n\n### International",
|
| 387 |
+
"metadata": {
|
| 388 |
+
"category": "programs",
|
| 389 |
+
"doc_type": "program",
|
| 390 |
+
"filename": "master-of-science-in-finance-s2fin.md",
|
| 391 |
+
"source": "./data/programs/md/master-of-science-in-finance-s2fin.md",
|
| 392 |
+
"type": "markdown"
|
| 393 |
+
},
|
| 394 |
+
"source": "master-of-science-in-finance-s2fin.md"
|
| 395 |
+
},
|
| 396 |
+
{
|
| 397 |
+
"content": "of research and development work\n\u2022 demonstrate insight into the possibilities and limitations of research, its role in society and\nthe responsibility of the individual for how it is used, and\n\u2022 demonstrate the ability to identify the personal need for further knowledge and take\nresponsibility for his or her ongoing learning.\n\u00a0 \n \nLocal outcomes \nThe programme aims at: \n1.\u00a0providing general knowledge of the signi?cance of, the problems posed by, and the methods\nemployed to understanding complex systems observed in the Natural and Engineering\nSciences.\u00a0The knowledge builds on that associated typically with the Bachelor\u2019s level, but it goes\nbeyond that in that it should enable the students to develop/apply their own ideas, often in a\nresearch context. \n2.\u00a0enabling students to specialise in one of the following three areas in Complex\nSystems:\u00a0Adaptive Systems (Robotics & Control), Information and Evolution, and Physics of\nComplex Systems.\u00a0These areas are closely connected to research performed at G\u00f6teborg and\nChalmers Universities. \n3. providing the students with the necessary analytical, programming and modeling skills to\nwork successfully under supervision in one of the above areas, or to apply their problem-solving\nskills in a suitable industry project in collaboration with their academic teachers, and last but\nnot least to use their skills effectively in new or initially unfamiliar, interdisciplinary\nenvironments. \n4.\u00a0providing the students with criteria and methods to critically re?ect their results and put them\ninto context. \n5. enabling students to communicate their results, to describe the hypotheses and assumptions\nthese rest on to specialist and to non-specialst audiences. \n6. enabling the students to continue to study or work independently, autonomously, and self\ndirected if necessary, but enabling them to also successfully work within an interdisciplinary\nresearch team. \n \n6. Content and structure",
|
| 398 |
+
"metadata": {
|
| 399 |
+
"category": "programs",
|
| 400 |
+
"doc_type": "program",
|
| 401 |
+
"filename": "complex-adaptive-systems-masters-programme.pdf",
|
| 402 |
+
"page": 2,
|
| 403 |
+
"source": "./data/programs/pdf/complex-adaptive-systems-masters-programme.pdf",
|
| 404 |
+
"type": "pdf"
|
| 405 |
+
},
|
| 406 |
+
"source": "complex-adaptive-systems-masters-programme.pdf"
|
| 407 |
+
},
|
| 408 |
+
{
|
| 409 |
+
"content": "**Equipping you for the future**\n\nOur programme prepares you for a future career as a potential manager in the modern organization \u2013 for which innovating is not an option but a necessity. The courses, projects, and thesis work focus on providing you with the right theories, methods, and tools to analyze both theoretical and practical problems, and to design effective solutions for these problems. All organizations must find the balance between efficiency and innovation, and between short-term profitability and long-term development. As a student of the programme, you will develop the skills and insight to overcome these challenges and understand this balance.\n\n**Engaging education and close interaction with industry**\n\nWe provide a highly engaging educational setting in our programme, which includes a range of teaching methods and a mix of individual and group work, along with a pronounced focus on personal and professional development of the student. In several of our courses, we address not only academic but also practical management problems, for example through many types of real business cases. The programme also includes close interaction with the innovation ecosystem in a variety of industries, ranging from guest lectures to group projects, where you will work with and solve practical problems for firms.\n\n**International environment**\n\nThe programme\u2019s international atmosphere allows you to experience other cultures, improve your communication skills, and build a global network of friends. This programme also gives you a unique opportunity to apply for a scholarship which enables you to conduct parts of your master\u2019s thesis abroad. As a student of the master\u2019s programme in Innovation and Industrial Management, you will have several opportunities to go abroad for parts of your studies through exchange agreements and through a double degree agreement, which will be further explained in the Exchange opportunities information.\n\n**How to apply?**",
|
| 410 |
+
"metadata": {
|
| 411 |
+
"category": "programs",
|
| 412 |
+
"doc_type": "program",
|
| 413 |
+
"filename": "master-of-science-in-innovation-and-industrial-management-s2iim-0.md",
|
| 414 |
+
"source": "./data/programs/md/master-of-science-in-innovation-and-industrial-management-s2iim-0.md",
|
| 415 |
+
"type": "markdown"
|
| 416 |
+
},
|
| 417 |
+
"source": "master-of-science-in-innovation-and-industrial-management-s2iim-0.md"
|
| 418 |
+
},
|
| 419 |
+
{
|
| 420 |
+
"content": "- Varieties of Democracy and Democratization\n\n- The Performance of Democracies\n\n\n### Specialize in your choice of research methods\n\nWe offer highly qualified studies in research methods, including the opportunity to specialize through a selection of four courses:\n\n- Applied Statistical Analysis\n\n- Applied Qualitative Research Methods\n\n- Applied Qualitative Research Methods, problems and design\n\n- Introduction to Applied Research Design and Quantitative Research Methods for Social Scientists\n\n\nTaking one methods course is mandatory, but you can choose to take two. This opportunity provides additional preparation for the job market, where exceptional skills in research methods are as relevant for careers within public policy as the monitoring of political power.\n\n## Programme structure and content\n\n**The first semester** provides advanced knowledge of main research areas within contemporary political science and gives you the opportunity to choose between four research methods courses.\n\n**The second semester** has in-depth research-oriented courses you can choose from, in areas such as quality of government and corruption, electoral studies and public opinion, social dilemmas and environmental politics, and democracy and democratization.\n\n**The third semester** offers a number of different alternatives. You may do an internship for either a half or a full semester, take in-depth courses in political science or additional research methods, or you can choose to study abroad.\n\n**The final semester** concerns your master\u2019s thesis project. You will independently develop and apply the theoretical and methodological knowledge and skills gained throughout the\u00a0programme. Researchers with an international reputation in their field and with solid experience of guiding research projects are available as advisors.\n\n## Who should apply?",
|
| 421 |
+
"metadata": {
|
| 422 |
+
"category": "programs",
|
| 423 |
+
"doc_type": "program",
|
| 424 |
+
"filename": "masters-programme-in-political-science-s2psc.md",
|
| 425 |
+
"source": "./data/programs/md/masters-programme-in-political-science-s2psc.md",
|
| 426 |
+
"type": "markdown"
|
| 427 |
+
},
|
| 428 |
+
"source": "masters-programme-in-political-science-s2psc.md"
|
| 429 |
+
},
|
| 430 |
+
{
|
| 431 |
+
"content": "9. Methods IV, 5 credits \nThis course provides students with in-depth knowledge and skills in quantitative data\nanalysis, including analysis software, with focus on analysis techniques for testing\nhypotheses regarding relationships between variables (e.g., linear and logistic regression,\npath analysis). \n\u00a0\n10. Lifespan-developmental Psychology, 9 credits \nThis course integrates the full lifespan from infancy through old age. It takes a\nmultidisciplinary and dynamic perspective addressing personal relationships, cognitive\ndevelopment, social, emotional and physical changes and their interactions in relation to\nthe socio-cultural and institutional context of lifespan development. The course\nintegrates current methodology and research questions from both ends of the lifespan\nand links these to more applied contexts. \n\u00a0\n11. Methods V, 5 credits \nThis course provides students with in-depth knowledge and skills in quantitative data\nanalysis, including analysis software, with focus on concepts such as latent variables,\nlongitudinal design and analysis, and analysis techniques such as structural equation\nmodelling. \n\u00a0\n12. Human neuropsychology, 9 credits \nThis course provides a macro-perspective of biological underpinnings of human behavior\nand psychological processes. Students will receive an introduction to brain anatomy and\nneuroimaging and electrophysiological methods. This course highlights the neuronal\nperspective on state-of-the art topics in cognition, lifespan developmental, social and\npersonality psychology and at the same time integrates the behavioral and social\nperspectives discussed in the different prior courses of this programme. \n\u00a0\n13. Methods VI, 5 credits \nThis course provides students with in-depth knowledge and skills in qualitative data\nanalysis, including analysis software, with focus on analysis techniques (e.g., discourse\nanalysis, narrative analysis, IPA). This course will also address mixed methods,",
|
| 432 |
+
"metadata": {
|
| 433 |
+
"category": "programs",
|
| 434 |
+
"doc_type": "program",
|
| 435 |
+
"filename": "masters-programme-in-psychological-science.pdf",
|
| 436 |
+
"page": 4,
|
| 437 |
+
"source": "./data/programs/pdf/masters-programme-in-psychological-science.pdf",
|
| 438 |
+
"type": "pdf"
|
| 439 |
+
},
|
| 440 |
+
"source": "masters-programme-in-psychological-science.pdf"
|
| 441 |
+
},
|
| 442 |
+
{
|
| 443 |
+
"content": "\u25cf Models of Computation (LOG260)\n\u25cf Advanced Set Theory (LOG270)\n\u25cf History of Logic (LOG280)\n\u25cf Logic, Games and Automata (LOG290)\n\u25cf Category Theory (LOG350)\nOther courses \u2013\u00a0 for example in computer science, linguistics, mathematics, language technology\nor theoretical philosophy, that by the student's individual mentor are judged to fit with the\nstudent's earlier studies and choice of specialisation \u2013\u00a0 can also be chosen as elective courses. \nAt least one of the elective courses should prepare the student for the degree project and may\nwell be one of the specialisation courses below. \nSpecialisation courses \nPossible choices of content in the specialisation courses LOG230, LOG240, LOG320, LOG330\ninclude: \n\u25cf Formal theories of truth\n\u25cf Computability and complexity theory\n\u25cf Game theory and logic\n\u25cf Philosophy of mathematics\n\u25cf Knowledge representation and logic for the web\n\u25cf Models of arithmetic\n\u25cf Advanced modal logic\nOther specialisations, decided in consultation with the student's mentor, are also possible. \n \n7. Guaranteed admission \nA student admitted to the programme, and who follows the programme at the prescribed pace\nof study, is subject to limited guaranteed admission. Guaranteed admission applies to all\nobligatory courses. During the second semester the student is guaranteed admission to two\nelective courses (but not necessarily the student's first choices), and equivalently for elective\ncourses during the third semester. \n \n8. Other information \nThe language of instruction is English. \nCourse evaluations involving students are done for every course, and are used in continuous\ndevelopment of the programme. Each semester there is a follow-up in cooperation with the\nprogramme coordinator and student representatives. Overall quality assurance and development\nof courses and the programme as a whole is discussed by all involved teachers at an annual\nprogramme conference. \nThe study programme will be evaluated in accordance with the Policy for Quality Assurance and",
|
| 444 |
+
"metadata": {
|
| 445 |
+
"category": "programs",
|
| 446 |
+
"doc_type": "program",
|
| 447 |
+
"filename": "logic-masters-programme.pdf",
|
| 448 |
+
"page": 4,
|
| 449 |
+
"source": "./data/programs/pdf/logic-masters-programme.pdf",
|
| 450 |
+
"type": "pdf"
|
| 451 |
+
},
|
| 452 |
+
"source": "logic-masters-programme.pdf"
|
| 453 |
+
},
|
| 454 |
+
{
|
| 455 |
+
"content": "research.\n\nYou will be prepared to work with Big Data in your\n\nfuture career. You will learn about different data science methods,\n\ntheir applicability, and advantages and disadvantages of different\n\ntechniques. You will have the knowledge and skills necessary to respond\n\nto the challenges and opportunities that emerge as massive data sets\n\nbecome increasingly available.\n\n## Facilities\n\nThe master's programme is given by the Department of Computer Science and Engineering, which is shared between University of Gothenburg and Chalmers University of Technology. The department's main campus is Johanneberg.\n\n[More information about facilities](https://www.gu.se/en/study-gothenburg/campus-johanneberg)\n\n[Self Assessment form and motivational letter External link](https://www.gu.se/sites/default/files/2020-10/N2ADS%20self-assessment%20form_fillable.pdf \"External link\")\n\n[\\\\\n\\\\\nStudent interview: From Psychology to Applied Data Science \\\\\n\\\\\n\\\\\nThe master's programme in Applied Data Science started in 2017 and Fionn Delahunty from Ireland is in the first batch of\u2026](/en/study-gothenburg/from-psychology-to-applied-data-science)\n\n## Study at The University of Gothenburg\n\n[\\\\\n\\\\\nHow to apply \\\\\n\\\\\n\\\\\nTo be admitted to the University, you need to do an online application. The application procedure is straightforward, but it\u2026](/en/study-in-gothenburg/apply)",
|
| 456 |
+
"metadata": {
|
| 457 |
+
"category": "programs",
|
| 458 |
+
"doc_type": "program",
|
| 459 |
+
"filename": "applied-data-science-masters-programme-n2ads.md",
|
| 460 |
+
"source": "./data/programs/md/applied-data-science-masters-programme-n2ads.md",
|
| 461 |
+
"type": "markdown"
|
| 462 |
+
},
|
| 463 |
+
"source": "applied-data-science-masters-programme-n2ads.md"
|
| 464 |
+
},
|
| 465 |
+
{
|
| 466 |
+
"content": "was revised on 23-05-2018 (reg. no. G 2018/252). See below Confirmation. \n(N2ADS) Applied Data Science Master's Programme, 120 credits / Applied Data Science masterprogram, 120\nh\u00f6gskolepo\u00e4ng\nSecond cycle / Avancerad niv\u00e5\n6/6",
|
| 467 |
+
"metadata": {
|
| 468 |
+
"category": "programs",
|
| 469 |
+
"doc_type": "program",
|
| 470 |
+
"filename": "applied-data-science-masters-programme.pdf",
|
| 471 |
+
"page": 5,
|
| 472 |
+
"source": "./data/programs/pdf/applied-data-science-masters-programme.pdf",
|
| 473 |
+
"type": "pdf"
|
| 474 |
+
},
|
| 475 |
+
"source": "applied-data-science-masters-programme.pdf"
|
| 476 |
+
},
|
| 477 |
+
{
|
| 478 |
+
"content": "to the research front in the areas included in the programme, and to work closely with industry,\nthe public sector and civil society. \nThe programme's pedagogy is based on creating a student-centered learning environment that\nencourages participation. The education programme strives for a mixed student group and\ntherefore welcomes students with a bachelor's degree from a number of different fields, including\n(T2HAI) Human-centered Artificial Intelligence Master's Programme, 120 credits / Human-centered Artificial\nIntelligence masterprogram, 120 h\u00f6gskolepo\u00e4ng\nSecond cycle / Avancerad niv\u00e5",
|
| 479 |
+
"metadata": {
|
| 480 |
+
"category": "programs",
|
| 481 |
+
"doc_type": "program",
|
| 482 |
+
"filename": "human-centered-artificial-intelligence-masters-programme.pdf",
|
| 483 |
+
"page": 0,
|
| 484 |
+
"source": "./data/programs/pdf/human-centered-artificial-intelligence-masters-programme.pdf",
|
| 485 |
+
"type": "pdf"
|
| 486 |
+
},
|
| 487 |
+
"source": "human-centered-artificial-intelligence-masters-programme.pdf"
|
| 488 |
+
}
|
| 489 |
+
],
|
| 490 |
+
"document_types": {
|
| 491 |
+
"course": 0,
|
| 492 |
+
"program": 41
|
| 493 |
+
}
|
| 494 |
+
},
|
| 495 |
+
"response": {
|
| 496 |
+
"answer": "The Applied Data Science Master's Programme at the University of Gothenburg is designed to provide students with advanced knowledge and practical skills in the field of data science. The program focuses on extracting meaning from large volumes of data, which has become increasingly important across various sectors, including business, healthcare, and scientific research.\n\nKey aspects of the program include:\n\n- **Core Courses**: The program includes compulsory courses such as Introduction to Data Science, Python for Data Scientists, Statistical Methods for Data Science, Applied Machine Learning, and Research Methods for Data Science. Students also complete a Master's Thesis in Data Science.\n\n- **Credit Structure**: The program consists of a total of 120 credits, with 52.5 credits allocated to compulsory courses in the main field of Data Science, and an independent degree project of either 30 or 60 credits.\n\n- **Learning Environment**: The education is conducted through lectures, seminars, teacher-led exercises, and projects, allowing students to apply and deepen their knowledge in practical settings.\n\n- **Skills Development**: Students will learn to apply data science methods to solve problems in various application areas, and they will develop skills to independently investigate and draw relevant conclusions based on data science methods.\n\n- **Interdisciplinary Approach**: The program is designed to be accessible to students from diverse academic backgrounds, emphasizing the importance of working effectively with large data sets in future careers.\n\nOverall, the Applied Data Science program aims to equip students with the necessary tools and knowledge to thrive in a data-driven world, preparing them for careers in industry or further academic research.\n\nSources:\n\u2022 applied-data-science-masters-programme-n2ads.md\n\u2022 applied-data-science-masters-programme.pdf\n<details><summary>**See 19 more sources...**</summary>\n\n\u2022 complex-adaptive-systems-masters-programme-n2cas.md\n\u2022 complex-adaptive-systems-masters-programme.pdf\n\u2022 human-centered-artificial-intelligence-masters-programme-t2hai.md\n\u2022 human-centered-artificial-intelligence-masters-programme.pdf\n\u2022 logic-masters-programme.pdf\n\u2022 marine-science-masters-programme-n2mav.md\n\u2022 master-of-science-in-finance-s2fin.md\n\u2022 master-of-science-in-innovation-and-industrial-management-s2iim-0.md\n\u2022 masters-programme-in-applied-biostatistics-m2sta.md\n\u2022 masters-programme-in-applied-biostatistics-syllabusm2sta.md\n\u2022 masters-programme-in-international-administration-and-global-governance-s2iag.md\n\u2022 masters-programme-in-investigative-journalism-syllabus-s2jou.md\n\u2022 masters-programme-in-political-science-s2psc.md\n\u2022 masters-programme-in-psychological-science-s2map.md\n\u2022 masters-programme-in-psychological-science.pdf\n\u2022 mathematical-sciences-masters-programme-n2mat.md\n\u2022 mathematical-sciences-masters-programme.pdf\n\u2022 physics-masters-programme.pdf\n\u2022 software-engineering-and-management-bachelors-programme.pdf\n</details>"
|
| 497 |
+
},
|
| 498 |
+
"performance": {
|
| 499 |
+
"processing_time": 13.003866195678711,
|
| 500 |
+
"tokens_used": null
|
| 501 |
+
},
|
| 502 |
+
"chat_context": {
|
| 503 |
+
"chat_history": [
|
| 504 |
+
{
|
| 505 |
+
"role": "human",
|
| 506 |
+
"content": "What is the Applied Data Science program about?"
|
| 507 |
+
},
|
| 508 |
+
{
|
| 509 |
+
"role": "ai",
|
| 510 |
+
"content": "The Applied Data Science Master's Programme at the University of Gothenburg is designed to provide students with advanced knowledge and practical skills in the field of data science. The program focuses on extracting meaning from large volumes of data, which has become increasingly important across various sectors, including business, healthcare, and scientific research.\n\nKey aspects of the program include:\n\n- **Core Courses**: The program includes compulsory courses such as Introduction to Data Science, Python for Data Scientists, Statistical Methods for Data Science, Applied Machine Learning, and Research Methods for Data Science. Students also complete a Master's Thesis in Data Science.\n\n- **Credit Structure**: The program consists of a total of 120 credits, with 52.5 credits allocated to compulsory courses in the main field of Data Science, and an independent degree project of either 30 or 60 credits.\n\n- **Learning Environment**: The education is conducted through lectures, seminars, teacher-led exercises, and projects, allowing students to apply and deepen their knowledge in practical settings.\n\n- **Skills Development**: Students will learn to apply data science methods to solve problems in various application areas, and they will develop skills to independently investigate and draw relevant conclusions based on data science methods.\n\n- **Interdisciplinary Approach**: The program is designed to be accessible to students from diverse academic backgrounds, emphasizing the importance of working effectively with large data sets in future careers.\n\nOverall, the Applied Data Science program aims to equip students with the necessary tools and knowledge to thrive in a data-driven world, preparing them for careers in industry or further academic research."
|
| 511 |
+
}
|
| 512 |
+
],
|
| 513 |
+
"memory_window_size": 3
|
| 514 |
+
},
|
| 515 |
+
"system_info": {
|
| 516 |
+
"model_version": "gpt-4o-mini",
|
| 517 |
+
"embedding_version": "text-embedding-3-small",
|
| 518 |
+
"search_config": {
|
| 519 |
+
"search_type": "mmr",
|
| 520 |
+
"k_value": null,
|
| 521 |
+
"metadata_filter": null
|
| 522 |
+
}
|
| 523 |
+
}
|
| 524 |
+
}
|
| 525 |
+
]
|
data/courses/md/academic-english-for-africanists-af1212.md
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:4df6a1468bca554f148ca02ce18a3874edb4148e1300ff75bc768ba5f43add08
|
| 3 |
+
size 6011
|
data/courses/md/academic-skills-presentations-publications-applications-lir212.md
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:ed8624a94dca4ad10a5410102a85e28c85f2e0d8895f4b9238ceabfbbb27c690
|
| 3 |
+
size 4219
|
data/courses/md/advanced-climate-data-analysis-gvn370.md
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:5a6c2aaaab73bd36591796a050f070a9f26dca88156e1305558a86d4c6fb3547
|
| 3 |
+
size 5640
|
data/courses/md/advanced-computer-graphics-dit227.md
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:825e28dddb76d09dd5a9cdad51dd5ef6acf745e0c4c8ecf604fa3b2dbbd4557b
|
| 3 |
+
size 3788
|
data/courses/md/advanced-course-on-spanish-grammar-sp2209.md
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:42f170827b8483b7e5704e066e35d87fafdf54c6f672aacb021bc786d9557491
|
| 3 |
+
size 5099
|
data/courses/md/advanced-databases-dit930.md
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:967776a910a79f1925c8a9ae4144ed3c9420b189c94a1f3e376d0520d4da43fb
|
| 3 |
+
size 4031
|
data/courses/md/advanced-differential-calculus-mma211.md
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:241c49a00faf127ce43edce1b53306215199d65de01e5e730ac15816ca6d06a7
|
| 3 |
+
size 4167
|
data/courses/md/advanced-digital-tools-for-heritage-conservation-kud113.md
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:362399d28c4636514dc0f31d49837877ba9a1fdcd2d9d7deffbb57a769a54483
|
| 3 |
+
size 4186
|
data/courses/md/advanced-functional-programming-dit260.md
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:70432712f73ad1c675ce09c1edcdd6e6e40ecf8f2957fe6e1b07cc59508e9f0b
|
| 3 |
+
size 3934
|
data/courses/md/advanced-grammatical-analysis-the-generative-perspective-sv2128.md
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:dd6a969a1e93f62a9bf36f69c7c28ea2cb706cee9bb67404c341bec4b69f2267
|
| 3 |
+
size 5396
|
data/courses/md/advanced-materials-imaging-and-microanalysis-fym340.md
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:5af8c22a79f66464b9d1c85100d4235b1fc38e45b8f8859286f68e53c04e77cc
|
| 3 |
+
size 4185
|
data/courses/md/advanced-medicinal-chemistry-kem760.md
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:d389f386d9d3bbd0a78d74b212bf5af83660001ede61729c30a21ba903bd1e23
|
| 3 |
+
size 5325
|
data/courses/md/advanced-non-fictional-chinese-i-ki2101.md
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:a34239c58a8178e125b8755e3f9c29b3d6e33a232b02b884f3a6b886fba31d0b
|
| 3 |
+
size 5206
|
data/courses/md/advanced-non-fictional-chinese-ii-ki2102.md
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:08d69e4a0557a676b8fd637e8293d4f381bfc870f7e3f4606c7282e21f6b3582
|
| 3 |
+
size 7498
|
data/courses/md/advanced-organic-chemistry-kem815.md
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:a0fdab75adf3dabd1b6a13f9e6ffbd04b41af7f2e8b8ab9515cc216a7a47079e
|
| 3 |
+
size 5307
|
data/courses/md/advanced-organic-synthesis-kem750.md
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:ff7e1d0b532dc3e5e12a68fd2a23fbc77eed298afd4de8e86ae8bb8e5005f6fd
|
| 3 |
+
size 5042
|
data/courses/md/advanced-petrology-gvg410.md
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:1a7d73fffa97fdf53106310d46b19d5f5c754fc46a1f07b39778d1c2d36d5a0e
|
| 3 |
+
size 6221
|
data/courses/md/advanced-phylogenetics-bio404.md
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:5fb645c1057aee7388da4146976bf301d195f5912482079fa8d9c264197cc8b0
|
| 3 |
+
size 6215
|
data/courses/md/advanced-requirements-engineering-dit285.md
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:412be6d2b247aa3b3a409ac527da0d8bca0c0fc3e979a23f91b4214003648bcc
|
| 3 |
+
size 6516
|
data/courses/md/advanced-structural-geology-gvg465.md
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:274a1998e52926a48ae2911458740ea4836b46f986d790a8850c2513aa8d7863
|
| 3 |
+
size 6462
|
data/courses/md/advanced-topics-in-probability-msf600.md
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:8384a6a5973af073812cdc3234a7dfbeada1f3186126088a2da964f926857bc6
|
| 3 |
+
size 5014
|
data/courses/md/advanced-topics-in-probability-syllabus-msf600.md
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:21f7f27ce6a5a0d9a3ee1e6908b66f24984c93c7f34e72599293d613bdd3b63d
|
| 3 |
+
size 5260
|
data/courses/md/aerosols-kem720.md
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:f645a65d3054ded3ac6d7b93c062331db7d6cd9a780fad244f2b54af87dbb6ef
|
| 3 |
+
size 5819
|
data/courses/md/african-language-structures-and-typology-af1211.md
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:7a00da37ea48956dd813b992110721e9e18203ceef0e16e4b6a1f39b645682a4
|
| 3 |
+
size 5842
|
data/courses/md/african-languages-comparative-linguistics-and-typology-af2215.md
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:2f8a933bca2316d1fd4234ac0156e3fc533bb4625345dd3be6b96650a6b668db
|
| 3 |
+
size 6727
|
data/courses/md/african-languages-data-and-method-af2213.md
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:2f47fd10ae4d0feed18a6dbf3b4e64f223debc6eeffa1b715cc7efe949b38e18
|
| 3 |
+
size 5448
|
data/courses/md/african-languages-independent-project-af2204.md
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:6daaf206986e00f93399e001b25c31d7f387d8839b4a27ec6a2f20d2145b3658
|
| 3 |
+
size 4773
|
data/courses/md/african-languages-independent-project-at-bachelor-level-af1320.md
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:65cdbe1210dd4ef32fb6dfda1bbb4569af175ae586fac524bfd5ebb74f0072c8
|
| 3 |
+
size 5548
|
data/courses/md/african-languages-linguistic-structures-af2211.md
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:748d5a1c8e2f2a1d0fad68d24592b6c833bd6d1e4acc6590905e3e3ef2f55c78
|
| 3 |
+
size 5898
|
data/courses/md/african-languages-masters-essay-independent-project-af2210.md
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:7c259a2dec12ad55cdbce7231365f39626a8692084169cd44d5a969149a8c5cb
|
| 3 |
+
size 5028
|
data/courses/md/african-languages-theory-af2212.md
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:26b6b1e4c29bfdddaf4785cd2b980f70f97b159e0a0b1588c3826876f5c612f8
|
| 3 |
+
size 5227
|
data/courses/md/african-languages-xhosa-and-zulu-introductory-course-af1121.md
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:4630436ddba761ad029a8eb08f086d016f77d3cc8742c3f9d97e4a1d7be2ed4c
|
| 3 |
+
size 6415
|
data/courses/md/agile-software-project-management-dit257.md
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:e9da229d520feb512601edb60c1b487bf987440cd5322198fbbc3c51ec5f69e5
|
| 3 |
+
size 4907
|
data/courses/md/algebraic-number-theory-mma350.md
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:a552956e90a5ee3ddcb446a9b9201315fafabfcb8c5d9a755e7f4ceb7467a490
|
| 3 |
+
size 4725
|
data/courses/md/algebraic-structures-mmg500.md
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:e2e03eb99d0bfaadb969bfeabbf6a809e3eafc7e5d2e5eed4745443e940776db
|
| 3 |
+
size 4360
|
data/courses/md/algorithms-advanced-course-dit251.md
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:eec93baf7388c2ac977e1973e382784a86089dffbfe8161b438b2a44a22de3e7
|
| 3 |
+
size 4488
|
data/courses/md/algorithms-dit093.md
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:99bc3de2c7232cf852f3b39c4b1e609c16234cb2f9511713cc56cb2230fb3f3d
|
| 3 |
+
size 6038
|
data/courses/md/algorithms-for-machine-learning-and-inference-dit382.md
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:8c446a999cb762d751496162bd8142cf00014ebd23a96a19d391456daca2cb54
|
| 3 |
+
size 6299
|
data/courses/md/an-introduction-to-game-research-dit248.md
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:6a0c9afeb9b59d6918d7703b359a5bb00dafaac67220207c09bbe3ef415307d4
|
| 3 |
+
size 5257
|
data/courses/md/analytic-function-theory-mmg700.md
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:48512025fe2fdb0cbd411efde0583fdfe304c6e83742f93274510f94670789fe
|
| 3 |
+
size 4139
|
data/courses/md/analytic-number-theory-mma340.md
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:ea19e9cbac576425ff213856f35edb22845e4fc7fa5abda63d7a0c51f2b9364c
|
| 3 |
+
size 5118
|
data/courses/md/analytical-chemistry-introductory-course-kem070.md
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:cca11e989ad51c5458798ae00b8e92f1485bfb4dc8c1bb9e5a79ce1f40e2f2ec
|
| 3 |
+
size 5168
|
data/courses/md/ancient-latin-poetry-lat204.md
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:8346ed3d9735ab67f424d9ac841169d2a1891c0f93b2778cb7998fed243d2877
|
| 3 |
+
size 3446
|
data/courses/md/animal-ecophysiology-from-a-climate-perspective-bio560.md
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:8256a7f08a1157f14570867724d9fbacd07134a968d5668fe2cc1cc0e0cb63a3
|
| 3 |
+
size 7486
|
data/courses/md/apocryphal-gospels-rt2522.md
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:1ca9b1e76677028ddcd3efbd3d3b5787b1a00e2c8323666b2cb89e199226b111
|
| 3 |
+
size 5329
|
data/courses/md/applied-analytical-chemistry-in-marine-sciences-mar455.md
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:984d405dcac9dd8c4b4792801379495bf8dcae5a282f3e195b58aaa7ca41dad2
|
| 3 |
+
size 5504
|