Commit 14a68768 authored by Daniel W Bond's avatar Daniel W Bond
Browse files

finished the readme documentation! ... except of course the database setup

parent 9286755c
# Advisor
SRCT Advisor is a dynamic web application that lets users create, compare, and
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.)
## On Contributing
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
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
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**. *dbond2@gmu.edu*
Please visit the [SRCT Wiki](http://wiki.srct.gmu.edu/) for more information
Please visit the [SRCT Wiki](http://wiki.srct.gmu.edu/) for more information
on this and other SRCT projects, along with other helpful links and tutorials.
## Setup
......@@ -32,10 +32,10 @@ To get started, you'll need the following installed:
* [Pip](http://www.pip-installer.org/en/latest/installing.html)
* [virtualenv](http://www.virtualenv.org/en/latest/index.html#installation)
Type the following commands in your terminal (if you're on Windows,
[Cygwin](http://www.cygwin.com/) is recommended, or you can install a
[virtual machine](https://www.virtualbox.org/wiki/Downloads) and install a
distribution of [Linux](http://www.ubuntu.com/download/desktop) to it (select
Type the following commands in your terminal (if you're on Windows,
[Cygwin](http://www.cygwin.com/) is recommended, or you can install a
[virtual machine](https://www.virtualbox.org/wiki/Downloads) and install a
distribution of [Linux](http://www.ubuntu.com/download/desktop) to it (select
the 32 bit version).
(also, ssh keys...)
......@@ -53,82 +53,116 @@ create the database
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
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
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.
## How Advisor Works
### Models
*Courses*
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
#### Courses
*CourseCollections*
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.
*Programs*
#### CourseCollections
*Students*
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.
*Trajectories*
#### Programs
A Program is list of CourseCollections, representing a major, minor, or general
education requirements. All majors take a gened course.
#### Students
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
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.
### Templates
#### index
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
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.
#### create
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
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.
#### student
This template acts as a dashboard for each student, showing their saved
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
Later along, it will have some social features, like following public
trajectories or seeing what classes their "friends" are taking.
#### trajectory / course
These templates just display a trajectory or a course on their own for
These templates just display a trajectory or a course on their own for
inspection. Trajectories can be made public and shared.
#### compare
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
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.
#### analysis
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
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,
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.
#### login
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
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.
## To-do
......@@ -137,23 +171,23 @@ might talk about some of the features and such.
#### Matters of Functionality
* how do you make coreqs work? right now it assumes that a coreq has to come
first, but that's obviously not how they work
* there are going to be some issues if you can name a trajectory, but each
semester is actually a trajectory...
* Display when the student is going to graduate, and accept the semester number
for trajectories
* 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
#### Forms and Views
* some sort of javascript on the comparison page
* Forms on the index and create pages need to submit information
* 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
* does the create page need to reload in between submissions? ajax or a new
page? **different page for now, that might actually be "better"**
* 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
......@@ -181,8 +215,5 @@ on social and messaging sites.
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.
* Make sure that the loginrequired works as initially intended, that you only
need to sign in in order to save or compare trajectories... this way prospective
students can put their potential trajectories together
## About GMU SRCT
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment