---
title: "Home"
filters:
- panel-accordion
---
Welcome to the Information Systems Education (ISE) lab handbook!
This handbook documents how we teach, research, collaborate, and support students and colleagues in a transparent, reproducible way.
It is a public resource written for students, teaching staff, and collaborators who interact with the lab.
**Start here — by role**
::: {.panel-accordion}
### Students {icon="mortarboard-fill"}
- Courses:
```{python}
#| label: course-table
#| echo: false
from pathlib import Path
import re
try:
import yaml # PyYAML
except ImportError as e:
raise RuntimeError("Missing dependency: PyYAML. Install with `pip install pyyaml`.") from e
from IPython.display import Markdown, display
COURSE_DIR = Path("teaching/courses")
def read_front_matter(qmd_path: Path) -> dict:
text = qmd_path.read_text(encoding="utf-8")
m = re.match(r"^\s*---\s*\n(.*?)\n---\s*\n", text, flags=re.DOTALL)
if not m:
return {}
return yaml.safe_load(m.group(1)) or {}
def semester_label(semester: str) -> str:
if not semester or "-" not in semester:
return semester or ""
year, term = semester.split("-", 1)
return f"{term} {year}"
def normalize_degree_program(value) -> list[str]:
if value is None:
return []
if isinstance(value, str):
return [value.strip()] if value.strip() else []
if isinstance(value, list):
return [str(v).strip() for v in value if str(v).strip()]
return [str(value).strip()] if str(value).strip() else []
rows = []
for qmd in sorted(COURSE_DIR.glob("*.qmd")):
meta = read_front_matter(qmd)
if not meta:
continue
if str(meta.get("status", "")).strip().lower() != "upcoming":
continue
lecture = (meta.get("title") or "").strip()
upcoming = semester_label((meta.get("semester") or "").strip())
degree_list = normalize_degree_program(meta.get("degree_program"))
if degree_list:
for degree in degree_list:
rows.append({
"Degree Program": degree,
"Lecture": lecture,
"Upcoming Semester": upcoming,
})
else:
rows.append({
"Degree Program": "",
"Lecture": lecture,
"Upcoming Semester": upcoming,
})
headers = ["Degree Program", "Lecture", "Upcoming Semester"]
if not rows:
display(Markdown("_No upcoming courses found._"))
else:
rows.sort(key=lambda r: (r["Degree Program"], r["Upcoming Semester"], r["Lecture"]))
widths = {h: max(len(h), *(len(str(r.get(h, ""))) for r in rows)) for h in headers}
def fmt_row(d):
return "| " + " | ".join(str(d.get(h, "")).ljust(widths[h]) for h in headers) + " |"
md_lines = []
md_lines.append("| " + " | ".join(h.ljust(widths[h]) for h in headers) + " |")
md_lines.append("| " + " | ".join("-" * widths[h] for h in headers) + " |")
for r in rows:
md_lines.append(fmt_row(r))
display(Markdown("\n".join(md_lines)))
```
- [Theses](https://fs-ise.github.io/theses/){target=_blank}
- [FAQ](teaching/faq.html)
### Admin {icon="person-gear"}
- [Repositories](management/repositories.html)
:::
<!--
### Students
- Courses (pages with materials, dates, exams, reviews, ...)
- Theses
- Improvement
- Contact (recomendation letters, mentoring/counselling, Calendly, Q&A, feedback form)
- Teaching statement
### Joining the team
### Teaching assistants {icon="person-video"}
- SOP
- Pedagogy
- Admin (vacation, contracts, onboarding, job letters)
### Admin
- Courses (announced, rooms, dates)
- Exams (supervising, corrections)
- Hiring
- Security (Gefahren, ...)
- Budget, Inventory
### Crowdworkers & Citizen Scientists {icon="people"}
- Guidelines
- Resources...
- Tasks overview (e.g., simple: search IS journals for literature reviews -report them here, review our teaching materials, test search-query/bib-dedupe..., advanced: contribute to search-query, colrev, bib-dedupe)
-->
<br>
<style>
/* base box style */
.area-box {
padding: 1rem 1.1rem;
border-radius: 12px;
border: 1px solid rgba(0,0,0,.08);
background: rgba(0,0,0,.02); /* fallback */
box-shadow: 0 1px 2px rgba(0,0,0,.04);
}
/* make the heading and link spacing look nice */
.area-box h3 {
margin-top: 0;
}
.area-box a {
text-decoration: none;
font-weight: 600;
}
/* slight color variants */
.area-box.teaching { background: rgba( 66, 153, 225, .10); border-color: rgba( 66, 153, 225, .25); }
.area-box.research { background: rgba( 72, 187, 120, .10); border-color: rgba( 72, 187, 120, .25); }
.area-box.management { background: rgba(237, 137, 54, .10); border-color: rgba(237, 137, 54, .25); }
.area-box.academy { background: rgba(159, 122, 234, .10); border-color: rgba(159, 122, 234, .25); }
.area-box.team { background: rgba( 45, 55, 72, .06); border-color: rgba( 45, 55, 72, .18); }
</style>
## Areas
The handbook is organized around five core areas that reflect how the lab operates over time.
::: {.grid}
<!-- Principles, systems, and procedures for designing, delivering, and evaluating courses — from lectures and theses to assessments, student support, and institutional reporting.
Support for scholarly work — from project planning and collaboration to methods, data, writing, and publication workflows.
Operating procedures that keep the lab running — communication, infrastructure, teaching admin, research support, risk, procurement, and HR.
Training and development activities that build individual and shared capabilities over time.
Roles, responsibilities, and who to contact for specific topics within the lab.
-->
::: {.g-col-6 .area-box .teaching}
### {{< iconify hugeicons:teaching style="color: black;" >}} Teaching
Principles, systems, and procedures … [Go to Teaching →](teaching/index.qmd)
:::
::: {.g-col-6 .area-box .research}
### {{< iconify hugeicons:market-analysis style="color: black;" >}} Research
Support for scholarly work … [Go to Research →](research/index.qmd)
:::
::: {.g-col-6 .area-box .management}
### {{< iconify hugeicons:installing-updates-01 style="color: black;" >}} Management
Operating procedures … [Go to Management →](management/index.qmd)
:::
::: {.g-col-6 .area-box .academy}
### {{< iconify hugeicons:elearning-exchange style="color: black;" >}} Academy
Training and development … [Go to Academy →](academy/index.qmd)
:::
::: {.g-col-6 .area-box .team}
### {{< iconify hugeicons:user-group-02 style="color: black;" >}} Team
Roles, responsibilities … [Go to Team →](team/index.qmd)
:::
:::
## Contribute
To propose changes or contribute, see [how to contribute to the handbook](/management/handbook.html).