Course Warlock: A UIUC GPA Visualization and Course Selection Tool
Navigating the vast landscape of courses at the University of Illinois at Urbana-Champaign (UIUC) can be a daunting task. Students often seek tools to streamline the process of selecting courses and understanding their potential academic outcomes. Course Warlock emerges as a solution, aiming to be a comprehensive tool for streamlining the process of selecting and obtaining information about courses.
Project Overview: Frontend and Backend
The Course Warlock project is strategically divided into two main components: the frontend and the backend. This separation of concerns allows for focused development and easier maintenance.
Frontend: SvelteKit and TypeScript
The frontend is built using SvelteKit, a modern UI framework known for its speed and flexibility. Leveraging TypeScript enhances development speed and efficiency by providing static typing and improved code maintainability.
Backend: FastAPI and Polars
The backend is developed using FastAPI, a Python web framework praised for its high performance and ease of use. To efficiently store and manipulate course GPA data, datasets are stored in a Polars DataFrame in memory. Polars is a high-speed DataFrame library akin to Pandas, enabling fast data processing.
Data Management and Updates
The cornerstone of Course Warlock is its ability to provide up-to-date GPA data. A maintenance script automates the process of updating the dataset every semester. This script downloads the latest data, converts it to a feather format for efficient storage, and moves it to the appropriate location. The backend also fetches the list of valid years, subjects, terms, parts of term, and colleges from the university. These are used both in the frontend and backend. The backend also checks the latest commit hash of the GPA dataset.
Read also: Comprehensive Guide to Data Visualization
Development Environment and Testing
To ensure consistency across different development environments and minimize compatibility issues, Docker is used. Docker standardizes the development environment to prevent inconsistencies between operating systems and minimize "it works on my machine" errors. However, you may want to develop the frontend outside of the container for better reload times. If things get finicky and your changes aren't being reflected, you can docker compose down -v (which removes volumes) then docker compose up --build.
Unit tests are implemented using pytest to ensure the functionality and reliability of critical components. Testing is with pytest.
Search Functionality
Course Warlock offers both simple and advanced search capabilities.
Simple and Smart Search
The tool provides a simple and straightforward search interface for users who want to quickly find courses based on basic criteria.
Advanced and Detailed Search
For users with more specific requirements, Course Warlock offers an advanced search functionality, allowing for detailed and explicit search queries. Queries are interpreted as a comma-separated list of arguments with colon-separated key-value pairs (e.g., is:online, sem:spring, subj:chem). Search parameters include CRNs, years, semesters (Fall, Spring, Summer, or Winter), and keywords.
Read also: Insights into Machine Learning Visualization
The system also employs fuzzy matching, allowing for typos and near-matches when searching for subjects and GenEds. If a keyword is a single word, the keyword type is set to matching exactly. If multiple words, it is set to matching the exact phrase.
Deciphering the CIS API
A significant accomplishment of the project is deciphering how to fully utilize the CIS API. The CIS API is poorly documented, and functionality like being able to search for courses with open sections is completely undocumented. The schedule/courses endpoint utilized extensively for the search engine's functionality isn't documented under the CIS Data Explorer API, but rather the out-of-date and non-functional CIS REST API documentation. A great deal of time was spent figuring out how to use the API and tinkering until things worked.
RateMyProfessor Integration
Originally, the project aimed to utilize an NPM module in the backend using a clever JS-Python bridge. However, the overhead required made it unbearably slow. As a result, the NPM module was completely rewritten in Python to serve the purposes of the project. It is sourced separately at lumirth/rmpy.
The rmpy module is centrally used for its ability to fetch all the professors of a university. The professors of UIUC are then placed into an in-memory cache, allowing for them to be quickly retrieved without relying on the speed of the RateMyProfessors API.
Addressing User Expectations
To enhance user experience, a set of manual associations is made to better match a user's expectations. For example, a user might expect 'comp sci' to reliably match 'computer science'.
Read also: Comprehensive Data Visualization Internship Guide
Wade Fagen-Ulmschneider's Vision
Wade Fagen-Ulmschneider, a faculty member in the Siebel School of Computing and Data Science at UIUC, embodies the spirit of innovation and education that drives projects like Course Warlock. His passion lies at the intersection of systems, data, and creating tools to nerd out with both systems and data - particularly through interactive tools and data visualizations. He believes that education should be available and accessible.
Computer Engineering at UIUC
Computer Engineering is a blooming discipline focused on the development of vital computing technologies that range from chips to computers to networks to programming tools and key algorithms. Fundamentally, Computer Engineering addresses the problem of building scalable, trustworthy computing systems and applications, and the faculty's interests span a broad spectrum of issues pertinent to this theme. Computer engineering has taken the lead in revolutionizing many science and engineering disciplines with parallel computing, from chips to clouds to planet-scale critical infrastructures, and has defined new standards of security, privacy, and dependability for systems ranging from small circuits to the electric power grids of many nations.
The computer engineering core curriculum focuses on fundamental computer engineering knowledge: circuits, systems, electromagnetics, computer systems, electronics for information processing and communication, and computer science.
Graduation Requirements include:
- Minimum Technical GPA: 2.0 TGPA is required for ECE courses (except ECE 316). See Technical GPA to clarify requirements.
- Minimum Overall GPA: 2.0
- Minimum hours required for graduation: 128 hours
- General education: Students must complete the Campus General Education requirements including the campus general education language requirement. ECE 445 or combination of ECE 496 & ECE 499 satisfies a design elective and the Campus General Education Advanced Composition requirement.
CyberGIS and Geospatial Data Science Program
The University of Illinois at Urbana-Champaign also offers a CyberGIS and Geospatial Data Science program. All courses in the CyberGIS and Geospatial Data Science certificate and M.S. program are 100% online so you may complete the courses from wherever you are! A majority of the courses are scheduled as 8-week courses, to provide students with a focused experience, flexibility in scheduling, and an ability to complete the program quickly. Courses are offered during both the first and second eight week’s of the Fall and Spring term as well as over the Summer. The second 8-week courses typically build on the topics covered over the first 8-week.
Most of the courses are scheduled as asynchronous sessions online so you have the flexibility to work around your schedule. Even though the content is delivered asynchronously some instructors schedule synchronous components (e.g. labs, one-on-one) to meet with students one-on-one or in groups so that students have the opportunity to interact with their peers in the courses as well as with Illinois faculty.
Students in the CyberGIS and Geospatial Data Science M.S. learn the conceptual and technical fundamentals of geographic information science and gain both information science techniques and critical spatial-thinking skill. They learn the principles underlying cyberGIS and geospatial data science and how to use Python on high-performance and parallel computing architecture.
The Capstone Research Project (GGIS 598-4 or 8 credit hours) is this program’s version of a master’s thesis. During this course, students will design and create their “capstone research project” which will utilize all of the skills, knowledge, and expertise gained though taking courses in the CyberGIS and Geospatial Data Science Program.
Students completing the CyberGIS and Geospatial Data Science Online Graduate Certificate Program must complete a minimum of 12 credit hours offered online by the Department of Geography and Geographic Information Sciences. This will be typically three courses.
Admission requirements include a GPA of 3.0/4.0 or higher for the last 60 semester hours of their Bachelor of Science program.
tags: #UIUC #GPA #visualization #tool

