# CourseScheduler

**Kareem Abu-Zahra**

December 10, 2010

Attach:abuzahra_course_scheduler.pdf

## Overview

Not everyone follows the suggested course grid provided by the Computer Science department. Transfer students, students who have changed majors, and free-willed spirits will often need to come up with their own plan to graduate in the fewest semesters possible. Based on a current transcript, this program will plot an efficient path to graduation.

## Screenshot

## Concepts Demonstrated

*A* search*is used to find course schedules for each semester to allow the student to graduate as quickly as possible.

## Innovation

- Using Berkeley's framework as a generic problem-solver.
- Applying AI techniques to a specific, real-world problem. Both an undergraduate advisor and the Registrar's office expressed interest in this project.

## Technology Used Block Diagram

## Evaluation of Results

The program does compute an efficient path to graduation (if possible, more below). Based on my undergraduate transcript, I ran through scenarios of having no classes on my transcript to only a few left. Based on the number of credits left to graduate, I was able to verify that the program found the quickest path to graduation.

## Additional Remarks

I could add in more optimizations if time permitted, but currently the program can get bogged down fairly quickly. I was forced to play with a branching factor parameter to speed things up. Theoretically, I could find thousands of course combinations for a given semester. In 4 semesters at 1,000 combinations each, there are 1 trillion states. To have the program complete in a reasonable amount of time, I limited this to 15 branches at each step. For a student halfway through the program, the algorithm will find a path in 4 semesters about 80-90% of the time. We will have bad luck ~5% of the time and no path can be found, but the rest of the time a path can be found in 5 semesters.