Skip to content

About

Course Dependency Visualization Tool

Resources

Stars

0 stars

Watchers

1 watching

Forks

Repository files navigation

Coursesearch

An interactive map of courses, prerequisites, study programs and grades for all of Tel Aviv University.

Open the site →

Features

  • Prerequisite graph. Courses are grouped by study year. Edges show required courses, alternatives ("one of") and co-requisites. Click a course to highlight its whole prerequisite chain and the courses it unlocks.
  • Study programs. Choose a degree, then pick any first- or second-degree program in the official catalog, from every faculty, including joint programs, each research or coursework track and programs closed to new students. Its courses are laid out by year and semester, straight from the official catalog (ידיעון): credit requirements, official notes and rules for each part, the degree's credit quota, and links to the catalog and regulations. Click a year or semester band to see its rules.
  • Grades. Each course card shows the average final grade (מועד קובע) over the years for which TAU Factor has grades, with the distribution and a per-semester breakdown.
  • My degree. Pick a faculty and a program (and the catalog year you started in) to get your degree as a checklist, organized like the official catalog: years, their required and elective parts, and each part's courses.
    • Mark courses as passed (a whole mandatory semester at once), add your grade, or plan a course for a semester. Requirements without a course list, such as "שאר רוח", take credits entered by hand.
    • Progress is shown for the whole degree, each year and each part, in credit points (a course listed in several parts counts toward one), with your credit-weighted average.
    • Each course shows what it still needs; the semesters view lays out your plan term by term (spread over extra years if you need them) and warns about missing prerequisites, unplanned co-requisites and courses not offered that semester. Planned courses count as done for later semesters.
    • AND/OR prerequisite logic is taken into account. Prerequisites from other faculties can be marked as passed in the course card. Everything is saved in the browser.
  • Map. The same program, or any academic unit's courses, as a prerequisite graph; passed and planned courses are marked on it. A program's map shows its required courses, plus electives on demand. Arrow keys move between courses.
  • Details. Each course card lists lecturers, exam type, credit hours and the semesters it's offered, with links to the syllabus and to the official prerequisites page.
  • Search by name or course number, forgiving of spelling (תוכנית/תכנית), word order, abbreviations (מדמ"ח, חדו"א), English names, typos and a keyboard left on the wrong language; shareable links (#course=03661102), dark mode and a mobile layout.

Data

scripts/update_data.py builds the data for the whole university using only the Python standard library. It draws on two sources:

  • Arazim Project dumps: semester schedules and prerequisites, the all-time course index, study plans (for programs the catalog has no structure for, and credit points for courses outside the catalog programs) and TAU Factor grade distributions (format).
  • TAU program catalog: program structure, credit requirements, official notes and course credit points. The data comes from the GraphQL API behind the catalog pages.

The output is split so the site loads only what it shows: data/index.json (every course's name, unit, prerequisites, semesters, credits and average grade, and the list of programs), data/courses/{unit}.json (lecturers, exams, grade distributions and syllabus links, by the course number's first four digits) and data/programs/{id}.json (one program each).

python3 scripts/update_data.py   # fetch the latest data and rebuild data/ (about 20 minutes)
python3 -m http.server           # then open http://localhost:8000

A GitHub Actions workflow refreshes the data every week and deploys the site to GitHub Pages. While the catalog is down, the update keeps the published programs; if it fails partway, or many programs would disappear, the update stops and the current data stays.

Grade statistics use each semester's all-groups final-grade distribution, weighted by the number of students; where TAU Factor gives no mean for a semester, it is estimated from the distribution. Non-numeric grades are excluded. Always confirm requirements on the university website.

Google sign-in (optional)

Progress is always saved in the browser. To also let students sign in with Google and sync their progress across devices, set up a Firebase project. The free tier is enough.

  1. Create a project at console.firebase.google.com and add a Web app.
  2. Authentication → Sign-in method: enable Google. Under Settings → Authorized domains, add tom-bleher.github.io.
  3. Firestore Database: create a database, then deploy the access rules with npx firebase-tools deploy --only firestore:rules --project <project-id>.
  4. Paste the web app's config object into assets/firebase-config.js (window.FIREBASE_CONFIG = {...}). The web config is public by design; access is enforced by the rules.

Each user gets one document, users/{uid}, holding only their passed courses, grades, planned courses, credits entered by hand, chosen program, the catalog year they started in and a timestamp. Users can delete it from the account menu. After changing firestore.rules, deploy them again (step 3).

Tests

pip install pytest playwright && playwright install chromium-headless-shell
python3 -m pytest tests

Contact

Questions and suggestions are welcome as GitHub issues, or contact:

Acknowledgements

Course, study-plan and grade data: Arazim Project and TAU Factor.

License

MIT. See LICENSE.

About

Course Dependency Visualization Tool

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages