SRCT Advisor is a dynamic web application that lets users create, compare, and share course trajectories towards graduation. (Not intended as a replacement for formal academic advising.)
Advisor is still in its very early states and needs all the help it can get. Even if you don't feel like you can be helpful the more technical aspects, we definitely need designers, technical writers, and testers.
There are many things that can be done with this project (see the "To Do" section), but sometimes it's the small things that count, so don't be afraid of contributing just a small spelling mistake.
If you need help at all please contact and SRCT member. We want people to contribute, so if you are struggling, or just want to learn we are more than willing to help.
The project lead for this project is Daniel Bond. [email protected]
Please visit the SRCT Wiki for more information on this and other SRCT projects, along with other helpful links and tutorials.
To get started, you'll need the following installed:
If you are running Linux, there are several packages you need to install to use python-ldap. On Ubuntu, these are libldap2-dev ldap-utils and libsasl2-dev.
Type the following commands in your terminal (if you're on Windows, Cygwin is recommended, or you can install a virtual machine and install a distribution of Linux to it (select the 32 bit version).
(also, ssh keys...)
bash
git clone http://git.gmu.edu/srct/advisor.git
cd advisor
mkdir ~/.virtualenvs
virtualenv ~/.virtualenvs/advisor
source ~/.virtualenvs/advisor/bin/activate
pip install -r requirements.txt
create the database
python manage.py schemamigration trajectories --initial
python manage.py syncdb
(the username and password are just for your
machine-- you can set it as merely "me" and "password" if you like)
python manage.py runserver
Next, open your web broswer of choice, and go to http//:127.0.0.1:8000/. You won't see too much. You'll need to add the courses and programs to the database.
I've written some documentation in the docs folder about using the admin
interface and creating some models. Use the same username and password you set
up when you did the syncdb
command.
This app is the base for the whole project, such as things that apply to everything go here, including the index page, the login page, etc. It also manages the other apps, e.g. all of the collected urls are managed here.
This is where students create and manage their trajectories, as well as view courses and programs.
Here students can compare their trajectories, or look at analyses of their and everyone's trajectory and program information.
Model fields are pretty well commented up, but here's a high-level view on how everything comes together.
Each Course has basic information (name, department, credits), but more importantly has prerequisites and corequisites. Prereqs and Coreqs can accept null values or lists of other courses. This is how we know whether a student may take a class.
A CourseCollection is a section of required courses in a program. Usually, programs require that a student must take some of these courses and some of those. CourseCollections are a list of all possible courses and the number of which are required, from all to just one.
A Program is list of CourseCollections, representing a major, minor, or general education requirements. All majors take a gened course.
Students have the standard user fields, their well as all of their planned trajectories, and a big ol' list of all of the courses they have completed.
Trajectories represent a student's paths to graduation, represented structurally as a tree. A student's existing courses (or if null, their anticipated first semester of classes) represents the root of the tree, and a student's potential paths towards graduation with different majors representing different branches out. Each subsequent trajectory represents a subsequent semester. This makes it simple to represent students' changes to their trajectories and their different pathways out to different major options. Each takes a trajectory "previousCourses", which represents the node's immediate predecessor.
Already completed courses are kept in a bulk list with each student, and potential courses are adjusted accordingly.
What users save and see as "trajectories" on their home page are each discrete path to each end node on the branches, e.g. Art History Path I, Art History Path II. Modification is therefore as simple as addition of a few new pointers. Each trajectory is also associated with a specific list of programs.
Trajectories also track their distance from the root, providing the user with the number of semesters until graduation.
This is where students can create a new trajectory. If students haven't yet already selected the classes they've taken, they can select those classes here.
Based on the information passed in from the 'index' page, this page shows which classes a student is allowed to take the subsequent semester, depending on the prereqs and coreqs. It will use ajax to allow the student to select their classes and have their next allowed classes returned until they have completed their program.
This template acts as a dashboard for each student, showing their saved trajectories, allows them to adjust the classes they've taken, etc.
Later along, it will have some social features, like following public trajectories or seeing what classes their "friends" are taking.
These templates just display a trajectory or a course on their own for inspection. Trajectories can be made public and shared.
This page allows students to compare side-by-side up to three trajectories, of their own or others that are public. Analytics are preformed over the selected trajectories and displayed, showing, for instance, which has the most courses, which has the most courses 300+, and more.
This template (to be created in further on) shows which classes are the most popular, how long on average each completed trajectory takes, popular classes for certain parts of a major, and more.
I'd like the site to also have a separate app for taking the classes that a student wants to take for a given semester, and when that semester rolls by, it'd perform something along the lines of gmu.schedulizer.com for them, along with the aforementioned social aspects.
I'd like this page to have a bit more information, since this is the page
that students will eventually be directed to if they haven't logged in. It
might talk about some of the features and such.
- Moving things around so that they are where they are supposed to be
- coreqs are listed with each model already, but there must be javascript on the page preventing students from selecting a course without selecting another in order for that to mean anything
- Add support for APs, and fix the "login required" stuff
- Javascript to count the number of credits selected
- JavaScript on the comparison page so that selected trajectories are loaded immediately
- Analytic functions for comparing trajectories and some corresponding d3 visualization
- Forms on the index and create pages need to submit actually information
- Forms on index and create pages also need to expand to an additional fields; also needs to take into consideration the max available, show alerts
- Create page requires AJAX, allowing for continual reloading until program(s) are completed, then redirect to a student's main page.
- LDAP auth/login
- comparison page needs some lovely analytics on the compared trajectories for the user
- polishing, like privacy policy
- scraping the site to populate the database
- moving over to mysql
- scraping of catalog.gmu.edu for the database (this also means that with a single command everyone can be working on the same database :3)
- autocomplete js for the course name field (after a user puts in the department abbreviation and the course name (note unlike bookshare this information needn't be editable)
- map "Second Semester Junior" and the like to numbers for the graduation feature
- Show a checklist on the side, knocking off CourseCollections
- Making trajectories "public" within the system, so that they can be shared with other students.
- Making trajectories "public" outside of the system, so that they can be shared on social and messaging sites.
- Support departments to create sample trajectories for their students.
- Identifying if courses are available in the semester desired, and if so, getting professor information, CRNs, and what have you.
- An integrated "schedulizer"-type app for the classes that you've selected you want for that semester.
Student-Run Computing and Technology (SRCT), pronounced "circuit") is a student organization at George Mason University which enhances student computing at Mason, SRCT establishes and maintains systems which provide specific services for Mason's community.