The SAGA prototype shall utilize

3.0 Specific Requirements (George)
The SAGA prototype must implement the functional, performance, and non-functional
requirements. Requirements shall provide the blueprint for creating the SAGA prototype for
specifics it requires. Each requirement listed describes a key implementation of the SAGA
prototype.
3.1 Functional Requirements
The functional requirements describe the functionality present in the SAGA prototype.
The product must satisfy these requirements to achieve the goals and objectives of the project.
3.1.1 Database Requirements (Daniel)
SAGA data is persistent and accessible by all parts of the SAGA application as needed.
The below data models shall be present:
1.
2.
3.
4.
5.
Courses
Course prerequisite structure
Course offerings in a semester
Student course enrollments by semester
Student and Faculty course requests by semester
3.1.1.1 Structure Requirements – Courses (Daniel)
A course is a unique offering provided by a college or department as part of an outlined
curriculum. Courses are the primary resource scheduled by SAGA as student demand for
courses is the driver of all other resources and schedules.
The database shall make available the following attributes for a course:
1.
2.
3.
4.
5.
6.
7.
8.
9.
Course Department
Course Number
Course Name
Minimum Teaching Requirements (e.g. Instructor or above, Doctorate or above)
Required Resources (e.g. Requires laboratory resources, media resources)
Optional Course Qualifiers (e.g. Writing Intensive, Technical)
Number of credit-hours
Graded or pass/fail
Distance offering possible (e.g. a given course may be possible to offer in a distance format; this
does not guarantee that a given course is offered in that format each semester)
The database shall make it impossible for a unique course as identified by department and
course number to be present multiple times. Example: CS 150 is present one time, CS 170 is
present one time, etc.
3.1.1.2 Structure Requirements – Pre-requisite (Daniel)
A given course may have a one or more prerequisites If exists, the information that shall be
available is:
1.
2.
3.
4.
5.
6.
Prerequisite course (or courses) – minimum grade earned
Minimum number of required credit-hours accrued – not enforced – except CS 367/8
Minimum student year (e.g. junior year required) – not enforced – except CS 367/8
Minimum grade earned (e.g. must have grade of C or better)
Co-requisites (e.g. can take A if already taken or simultaneously taking course B)
Academic year of prerequisite (e.g. applies to 2011-2012 year)
A given single prerequisite can have one or more of the above attributes. Example: Course
A can have prerequisites of both B and C. Course D can have prerequisites of either E or F.
Course G can have prerequisites of H or one of either I or J. Each of these criteria shall be
supported.
The database shall make circular prerequisites impossible (e.g. it shall be impossible to
specify that course A is a prerequisite of course B *and* that course B is a prerequisite of course
A).
SAGA makes use of prerequisites in developing course predictions. Regardless of student
desire, a student cannot enroll in a course without satisfying the prerequisites. SAGA will use
this information to prevent students from requesting ineligible coursers and to remove ineligible
students from consideration in the prediction process
3.1.1.3 Course Offering Requirements (Daniel)
A given course is deemed an offering when it is scheduled to be offered in a term. An
offering can be registered for by students, but these are not the same thing (see 3.1.1.4 – Student
Course Enrollments by Semester).
The database shall support the below attributes of an offering:
1. Unique section number
2.
3.
4.
5.
6.
7.
8.
9.
Course
Day of week class meets (e.g. M/W/F, T/Th)
Length of class period (e.g. 50 minutes, 75 minutes)
Start time of class
Instructor
Semester (e.g. Fall 2011)
Distance learning offering (e.g. Is this offering via Distance Learning or Teletechnet)
Assigned Room (as building and room number)
3.1.1.4 Student Course Enrollments by Semester (Daniel)
A course enrollment is when a student registers for a course offering (a given course in a
given semester; see 3.1.1.3). An enrollment has the below supported attributes:
1.
2.
3.
4.
5.
Course offering by course section number
Student
Semester (e.g. Fall 2011)
Date Registered
Final Grade
A student shall not be able to enroll in the same course (either the same or different offering) in
the same semester.
3.1.1.5 Student and Faculty Course Requests by Semester (Daniel)
Student and faculty course requests indicate interest in either enrolling or instructing a
specific course in a given term. Course requests are not compulsory for a course enrollment or
instructor assignment, but do form the basis for the SAGA prediction process. The below
attributes of a course request shall be supported:
1. Course (e.g. CS 410)
2. Student or Faculty
3. Semester (e.g. Fall 2011)
4. Date Requested
5. Person Requesting (e.g. by the student for him/herself; by an adviser on behalf of the
student)
The database shall only allow a student or faculty to request a course one time for a given term.
3.1.1.4 Database User Functionality (GT/Daniel)
The database must store information for verifying users and providing access control
information. The following functional requirements shall be provided:
1. Must store the fake UINs and passwords of all users created for the demonstration of the
prototype
2. Passwords must be stored as salted hash values in accordance with security best practices.
3. Must give the appropriate tools and rights to the user logging in.
4. Must allow an administrator to assess and repair aspects of the system.
3.1.1.5 Student Database Tables (Ronald)
The student entity of the database keeps records of all student related tables, and must provide
the following functional requirements:
1. The database must be able to store all relevant student attributes by containing the following
tables:
a. Student Information
i. Student ID
ii. First name
iii. Last name
iv. Graduation Status
b. List of completed courses
i. Student ID
ii. Course ID
iii. Grade received
c. Course requests
i. Student ID
ii. Course ID
iii. Course Semester
2. Entries in each table must be sort-able by any data field (name, ID, etc.)
3. Student ID must act as a key value for students and their information. Student tables may not
contain a given student ID more than once.
4. Attributes may not contain null values.
3.1.1.6 Faculty Database Tables (Ronald)
The faculty entity of the database keeps records of all faculty related tables, and must provide the
following functional requirements:
1. The database must be able to store all relevant faculty attributes by containing the following
tables:
a. Faculty Information
i. Faculty ID
ii. First name
iii. Last name
b. Faculty Training (ensures teacher is qualified to teach a given course)
i. Faculty ID
ii. Qualification
c. Constraints (time periods unavailable to teach course(s))
i. Faculty ID
ii. Time period
d. Faculty requests
i. Faculty ID
ii. Preference Type (“desire”, “avoid”, or “willing” to teach)
iii. Course ID
2. The information in #1 must be sort-able by any data field (name, ID, etc.)
3. Faculty ID must act as a key value for faculty entities. Faculty tables may not contain a given
faculty ID more than once.
4. Faculty attributes may not contain null values.
3.1.2 GUI Requirements (Aaron)
The GUI requirements shall be described and implemented into the SAGA prototype.
Each GUI must satisfy the requirements associated for each page listed.
Figure 1. GUI sitemap
Figure 1 illustrates the flow of the GUI and the different views that a particular user is able to
navigate to depending on the level of access.
3.1.2.1 Department Schedule Specialist GUI (Aaron)
A specific graphic user interface for the department schedule specialist shall be incorporated in
the prototype. This interface must allow for view and manipulation of the course database.
Additionally the interface must provide a view of output from the predictive engine.
3.1.2.1.1 Home view (Aaron)
Upon login and authentication (3.1.3.4), after the user is verified as being the DSS, the user shall
be taken to an initial view which can navigate to all other views of the GUI. The following
functional requirements shall be provided
1. The ability to view of the department’s course schedule as it currently exists in the
database (section 3.1.1)
2. A way for the user to navigate to the Report View (3.1.3.1.2).
3. A way for the user to navigate to the Master Wish List.
4. A way for the user to navigate to the Course List.
5. A way for the user to activate the course addition dialog.
6. A way for the user to navigate to the Faculty Master Wish List.
3.1.2.1.2 Report View (Aaron)
This view shall display the set of reports generated by the predictive engine. The following
functional requirements shall be provided:
1. List view of the attrition and student interest report that is attached to both the predictive
algorithm and the database. (3.1.1)
2. Report shall append dynamically every time the database is modified.
3. Graphical indication of the importance status of each course in the report. (e.g. If the
course is highlighted in red, there is definite discrepancy between course current capacity
and predicted student interest)
3.1.2.1.3 Master Student Wish List (GT)
After a user has logged in and has been verified as a Department Scheduler, the user will be
provided a button to select the Master Student Wish-List view. This page shall provide the
following functional requirements:
1. Must provide list of all desired courses.
2. Must provide number of students who requested each course.
3. Must allow user to order list, in ascending or descending order, by the modified UINs of
students indicating interest in that course.
4. Must allow user to order list in ascending or descending order by course number.
3.1.2.1.4 Master Faculty Wish List (GT)
After a user has logged in and has been verified as a Department Scheduler, the user will be
provided a button to select the Master Faculty Wish-List view. This page shall provide the
following functional requirements:
1. Must list all faculty members.
2. Must list desired courses.
3. Must list available times for each faculty to teach that course.
4. Must be able to sort desired courses, in ascending or descending order, by modified
faculty UIN.
5. Must be able to sort desired courses, in ascending or descending order, by course number.
3.1.2.1.5 Add Course Dialog Window (Aaron)
The user shall be able to select an option which allows for adding new courses to the database.
The following functional requirements shall be provided:
1. Ability to access this window from the department schedule specialist interface
section.
2. This window must allow for entry/collection of all course entity attributes (unless
a null value is legal).
3. Ability to activate this population.
3.1.2.1.6 Predicted Interest View (Matt)
This process will produce a report of predicted interest in course for the semester
1. Shall base its report off data collected from the master student wish-list as well as data from the
roll-forward. (Requirement 3.1.2.1).
2. Shall examine each course being offered and record the number of students who wish to take that
particular course.
3. Shall display this information on screen for the scheduler to view.
4. Uses requirement 3.1.3.1.2 to display the report on screen.
3.1.2.2 Student GUI (George)
A specific graphic user interface for the students shall be incorporated in the prototype.
This interface must allow for the student to choose courses to take and enter in courses they wish
were available. The list of courses includes all Computer Science courses illustrated in the CS
Course Info Table in the Appendix.
3.1.2.2.1 Student Wish-List view
After a user has logged in and has been verified as a student, the user will be provided the
Student Wish-List view. This page shall provide the following functional requirements:
1.
2.
3.
4.
5.
6.
7.
8.
A list of courses for the department that is available to select.
Ability to select courses they wish/intend to take the following semester
Ability to enter in a course they wish were available to take that is not in provided list.
The course entered in will be checked for key words to log student interest.
Limits selection to a maximum of five courses.
Requires a minimum selection of one course.
A way to submit courses selected and courses entered to the database.
Submission of data updates the database table for Master Student Wish-List (3.1.2.1)
3.1.2.3 Faculty GUI (George)
A specific graphic user interface for the faculty shall be incorporated in the prototype.
This interface must allow for the faculty to submit a wish-list for courses they want to teach and
their teaching schedule.
3.1.2.3.1 Faculty Wish-List view
After successful authentication and access level approval as a valid faculty member, the user
will be provided with the Faculty Wish-List view. This page shall provide the following
functional requirements:
1. Ability to select number of courses they want to teach.
2. Ability to select number of courses they are willing to teach additionally to what they
want.
3. Ability to select courses they are willing to teach in the specified semester from master
list of courses in database.
4. Ability to select day of the week they are willing to teach.
5. Ability to select time of day they are willing to teach.
6. Ability to submit selections to the database.
3.1.2.4 Login GUI (Jeremy)
The GUI login function allows for authentication and access control. The GUI Web-based
login shall allow authentication to specific features of the product based on user access.
1. The protocol of the login must be in the most current C#/ASP.NET Model View
Controller (MVC).
2. Access shall be based upon a secure access control list (ACL) with the following allowed
users:
USER:
Admin
Student
Faculty
Scheduler
Registrar
ACCESS LEVEL:
Level 1
Level 5
Level 4
Level 2
Level 3
1. The login GUI page must be implemented with HTTPS
3.1.3 Prediction Engine Requirements (Michael)
The prediction engine is responsible for computing the expected interest in each course in
a department. Interest is expressed in terms of number of seats that will be filled. For the
prototype the prediction engine will be limited to course interest predictions for the CS
department for the next semester.
3.1.3.1 Prediction Engine Data Requirements (Michael)
In order to facilitate the functionality of the prediction engine, the prediction engine shall be
provided the following data from the SAGA database:
1. Course information
a. Course number
b. Department
c. Previous semesters a course was offered
d. Prerequisites
e. Credit hours
2. Student information
a. Name
b. UID
c. Previously taken courses
d. Wish-list courses (see section 3.1.2.1)
3. Faculty information
a. Name
b. UID
c. Wish-list courses (see section 3.1.2.2)
d. Degree level
e. Qualified courses
3.1.3.2 Data Source Interface (Michael)
The prediction engine shall provide an external interface to the SAGA database to
facilitate communication between the two sub-systems. This interface will allow easy swapping
of data sources when moving between test and production environments. The Interface shall
provide:
1. A connection to a data source (e.g. the SAGA database in the demonstration version of the
prototype)
2. An internal representation of all relevant data within the data source as specified in section 3.1.4.1
3. Getter and setter methods for all internal data
4. A method to update the data source with the predicted course interest
3.1.3.3 Predictor Interface (Michael)
As multiple prediction methods may exist, the prediction engine shall provide an internal
interface for managing those methods, each method being known as a predictor. Each predictor
must provide this interface. The predictor interface shall provide:
1. A run method which returns a data structure containing courses with predicted interest
2. A method to update the courses for which the prediction shall be run
3. A method to update the range of semesters for which the prediction shall be run
a. A semester range of ‘1’ indicates a prediction for only the next semester, a
semester range of ‘2’ indicates a prediction for the next two semesters, etc.
b. The semester range shall be not more than 12 (allowing predictions for 4 years,
with three semesters per year, fall, spring, and summer).
c. For the prototype, the semester range must be 1
4. A method to add students to the predictor
5. A method to add faculty to the predictor
6. A method to add courses to the predictor
3.1.3.4 Prediction Methods (Michael)
Multiple prediction methods will exist for the prototype, allowing for evaluation of
distinct predictive capabilities. The prototype shall provide two forms of predictive analysis:
1. Resource Utilization Optimization Algorithm
2. Historical Trending Analysis Algorithm
3.1.3.4.1 Resource Utilization Optimization Algorithm (Ian)
Utilizing the data sources referenced in section 3.1.4.1, the final product version of this
algorithm will provide optimized suggestions for the efficient utilization and allocation of
institutional resources (teachers, courses, classrooms/seats, and time/availabilities). The
resultant solution (or solutions, as there may be many practical potential arrangements) of this
algorithm will be evaluated in terms of all student and faculty preferences.
From a low level perspective, this algorithm must determine course suggestions tailored
to individual student needs and preferences. From an elevated perspective, assessment of the
results of the algorithm will provide an overall evaluation on what courses should be offered for
a term, attempting to please as many individuals within the system while keeping available
resources and preferences in mind.
This algorithm must be extensible enough to account for a variety of components
identified as being necessary for the final product. These components include:
1. Room based allocation (with maximum available seating, as well as student and
teacher preferences)
2. Time based allocation (when are teachers, students, rooms available and/or
preferred?)
3. Teacher based allocation (matching teachers with rooms and courses based on
their teaching experience and preferences)
4. Independent student course load evaluation (individual students may only desire
to take a certain number of courses within a term, and also have a hard upper limit
imposed on them by the university. We must not suggest more than they can or
want to take; doing so would allocate resources that could be spent/utilized
elsewhere.)
This is an NP-hard problem. The permutations inherent in this problem space quickly
render brute force methods impractical for even a small set of overall constraints. There are a
variety of potential approaches to work around this. Implementation suggestions include the use
of genetic algorithms, simulated annealing, and/or meta-heuristics.
Room, teacher, and time based allocation will not be included in the prototype.
Internally, the prototype optimization analysis will be limited to evaluating suggestions for
student course loads for a semester given their preferences (from the wish lists) and the
constraint of each active student taking the minimum number of courses required to qualify as a
full time student during the term. In the context of the prototype, the only constrained “resource”
will be the number of course suggestion “slots” available to each active student. Also taking into
account the student’s course history, the algorithm must fill these slots with optimal suggestions
tailored to the individual. Results must be biased towards first suggesting core courses over
electives.
Due to considerable reductions in scope, compared to the offerings intended with the
final product, the overall value in the use of the prototype’s optimization analysis (note: not the
final product) is recognized as severely limited. The prototype optimization algorithm is being
offered as proof of concept, and establishes a foundation for the future inclusion of the core
powerful speculative components identified above. Upon inclusion of these components, direct
competition for resources will be at play within the system and much more advanced and useful
analysis can be done.
The final version of this algorithm will ultimately offer an extreme level of granularity to
the scheduling process due to its evaluation of all these factors present within the system. The
final product will allow for in depth evaluation of which courses should be taught by which
teachers at which times in which classrooms with which students to best meet the overall needs
and desires within the system. The prototype, however (again due to reductions in scope), will
not expose this level of granularity. The prototype must assess its resultant suggestions and
present a high level overview of its best scoring evaluation through the interface described in
section 3.1.4.3.
3.1.3.4.2 Historical Trending Analysis Algorithm (Byron)
The Historical Trending Analysis will evaluate data that shows how the student population
has behaved in the past when registering for courses and moving through the required course
progression. The Historical Trending method will implement the Prediction Manager Interface
(see section 3.1.4.3) by providing:
1. A method that determines the wish list attrition rate (i.e. the number of students
requesting a course versus the number that actually enrolled).
2. A method that determines the historical attrition rate (i.e. the number of students that
enrolled in one course and continued to the next course in the progression).
3. Apply the attrition rates to the number of requests for the course and return the result as
the suggested course capacity.
3.1.3.5 Prediction Engine Module (Michael)
The prediction engine module is the public face of the prediction engine to the rest of the
system. The module will take the form of a Dynamic Link Library (DLL) which is instantiated
by a calling object. The prediction module shall provide:
1. A public method for selecting the predictor
2. Creation of the data source interface
3. Creation of the predictor interface
a. Add the courses for which the prediction shall be made to the predictor
b. Add students to the predictor
c. Add faculty to the predictor
4. A public run method which runs the prediction and updates the data source with the
results of the prediction
5. A public method to inform the caller that the last call to run is complete and the data
source has been updated
3.2 Performance Requirements
The SAGA prototype will rely on a set of tools to provide useful reports to the
Department Scheduler.
3.2.1 Database
The Database must maintain the data that is submitted. The database must accurately
depict the current state of university and simulated data.
3.2.2 Reports
The reports generated must accurately capture and arrange the data from the algorithms.
The reports shall be parsed to the specific GUI webpage that it belongs to.
3.2.3 GUI
The GUI’s must allow the user to view and interact with the SAGA webpage. The user
must be able to select and submit the data necessary for SAGA. The GUI’s must also allow the
Department Scheduler to view and manipulate data in the database and build the schedule.
3.2.4 Prediction Engine
The prediction engine shall meet the following performance requirements:
1. If the Predicted_Course_Interest table has not been constructed, build the table, with predictions,
within a maximum of one minute
2. If the Predicted_Course_Interest table has been constructed, respond to any requests to modify
the table within 10 second
3.3 Assumptions and Constraints
Condition
Prediction only occurs one
semester out
Type
Assumption
Prediction applies to only CS
department courses at ODU
Assumption
The prediction engine must
have course information from
the SAGA database
The prediction engine must
have historical course
offerings by semester and year
(in the form of a roll-forward)
Dependency
The prediction engine must
have course prerequisites
Dependency
The prediction engine must
have Student wish-list data
Dependency
The prediction engine must
have faculty wish-list data
Dependency
The prediction engine must
have student course history
Dependency
Dependency
Effect on Requirements
The prediction engine will
only be tested to verify
correctness for one semester
The prediction engine will
only make predictions for
those courses
Without this information the
prediction engine will not be
able to make predictions
Without this information not
all prediction methods will
function. The historical
trending analysis method
depends on this data
Without this information the
prediction engine will not be
able to make predictions
Without this information the
prediction engine will not be
able to make predictions
Without this information the
prediction engine will not be
able to make predictions
Without this information not
all prediction methods will
function. The historical
trending analysis method
depends on this data
3.4 Non-functional Requirements (George, Aaron, GT)
Non-functional requirements identify supporting functions for the SAGA prototype. The
SAGA prototype shall maintain specific non-functional requirements pertaining to security,
maintainability, and reliability.
3.4.1 Security
The security requirements for the SAGA prototype will follow best practice security
standards.
3.4.2 Maintainability
The SAGA prototype shall be maintained through administrator access which shall allow
the administrator to update databases and software updates. Because SAGA is a software
solution it shall require minimum software maintenance and no hardware maintenence.
3.4.3 Reliability
The SAGA prototype shall utilize:
1. A Genetic Algorithm within the Resource Utilization Optimization Algorithm, a wellknown sophisticated method of prediction. The Genetic Algorithm is used by
corporations to minimize inefficiencies and maximize productivity.
2. The reliability of the Historical Trending Analysis Algorithm is based on the utilization
of historical data. The data used relies on collected data of a 10 year span which is a solid
foundation.
3. The input for the GUI will be constrained to disallow garbage values.
NOTE – Will be placed in Section 2
Test Harness Requirements Philosophy (Jeremy)
The purpose of the SAGA test harness is to demonstrate prototype functions and features
by allowing data input which will facilitate the testing of functionality and capability. Traditional
test harness frameworks typically provide a specialized “mode” wherein a user or administrator
can manually modify data to create specific scenarios which demonstrate functionality. The
SAGA test harness utilizes a slightly different methodology, and will test functionality primarily
via the currently built-in functions of the prototype. Test cases will be shown by logging in as the
back-end account most suitable for the desired test, and modifying data via the in place
components. There will be a few specific test harness functionalities implemented for certain
features of the prototype, and they will be appropriately documented. However, for the general
use of this prototype, unless otherwise specified, the test harness framework will consist of
utilizing the already in-place functions.
Appendix
CS Course Info
Course Number
CS 101
CS 102
CS 106
CS 107
CS 108
CS 110
CS 120G
CS 121G
CS 126G
CS 149
CS 150
CS 170
CS 250
CS 252
CS 270
CS 295
CS 300T
CS 312
CS 330
CS 333
CS 334
CS 350
CS 355
CS 361
CS 367
CS 368
CS 381
CS 390
CS 395
CS 410
CS 411W
CS 417
CS 418
CS 450
CS 451
CS 454
CS 455
CS 456
CS 457
CS 458
CS 460
CS 471
CS 472
CS 475
CS 476
CS 480
CS 486
CS 487
CS 488
CS 495
CS 497
Course Name
Computers: An Introduction
Introduction to Networks and the Internet
Intermediate Wordprocessing
Intermediate Spreadsheets
Intermediate Presentation S/W
Introduction to Computer Science
Introduction to Information Literacy and Research
Introduction to Information Literacy and Research for Scientists
Honors, Introduction to Information Literacy and Research
Elements of Computer Science.
Problem Solving and Programming I
Computer Organization and Architecture I
Problem Solving and Programming II
Introduction to Unix for Programmers
Introduction to Computer Architecture II
Topics in Computer Science.
Computers in Society
Internet Concepts
Object Oriented Programming and Design
Programming and Problem Solving in C++
Computer Architecture Fundamentals
Introduction to Software Engineering
Principles of Programming Languages
Advanced Data Structures and Algorithms
Cooperative Education
Computer Science Internship
Introduction to Discrete Structures
Introduction to Theoretical Computer Science
Topics in Programming Languages
Professional Workforce Development I
Professional Workforce Development II
Computational Methods and Software
Web Programming
Database Concepts
Software Engineering Survey
Network Management
Introduction to Networks and Communications
Database Administration I
Database Administration II
Unix System Administration
Computer Graphics
Operating Systems
Network and Systems Security
Introduction to Computer Simulation
Systems Programming
Introduction to Artificial Intelligence
Introduction to Parallel Computing
Applied Parallel Computing
Principles of Compiler Construction
Topics in Computer Science
Independent Study in Computer Science
Include in DB
y
n
y
n
n
y
y
y
y
n
y
y
y
y
y
n
y
y
y
y
y
y
y
y
n
n
y
y
n
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
Incorporate Historical Data
n
n
n
n
n
n
n
n
n
n
y
y
y
y
y
n
n
y
y
n
n
y
y
y
n
n
n
n
n
y
y
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
Incorporate Prerequisites
n
n
n
n
n
n
n
n
n
n
y
y
y
y
y
n
n
y
y
n
n
y
y
y
n
n
n
n
n
y
y
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n