Git Product home page Git Product logo

contentteam's Introduction

Backend of the Course Scheduler

Current Status

There is a script that can scrape the CSE department of UCSD for courses, their names, number of unites, descriptions, and requirements. get_all_link will create link for each course page depend on input Quarter and CourseID. parsePrereq will take that link and creat list of prerequirest for that course, and list_to_bool will convert that list to boolean expression. prereq_proc will process such expression and output all possible combination of courses needed to take. builddb will build course database and build/2 will build requirement database based course database and input Quarter.

$ swipl -s builddb.pl

This creates a "database" file, db.pl, used by the backend.

####backend predicates:
===for front end use===
#####getPrereq:
getprereq_fact/3: take Course ID, quarter, and third arg will be requirement fact
getprereq_list/3: same as getprereq_fact, it third arg will be all combination of course needed to take
build/2: take Quarter and file name, then create requirment database

for detial explanation and usage, check each inside the file.

======old predicates=====
courses/1 and course_ids/1. courses/1 can be used to get a list of all courses. The result is a list with one element per course. Each element is a term course/5.
requirement_to_list/3: takes Dept and course ID (in atom) and able to get all possible combination of prerequisites of that course (an atom list).
requirement_to_string/3: same as above, output combination in string format.

####Handcodeddb are coded with following data format, with arguments: #####major/2

  1. Department name code
  2. Department full name

#####course/5

  1. Course ID, an atom
  2. Course Title, an SWI7-style string
  3. Units, a term (see below)
  4. Text description, an SWI7-style string
  5. Prerequisites, an atom (for now)

#####requirement/3

  1. Department/major name code (atom)
  2. Course ID (atom)
  3. boolean expression of prerequisites, Course ID are in form of id('Dept','#').

Units are represented as one of three terms:

  • exactly(Units): a course is worth Units units (an integer)
  • from_to(From, To): a course is worth anything from From to To units
  • one_of(List): a course is worth one of the integer values in List

The course_ids/1 can be used to get a list of all course IDs.

  1. Course ID, an atom
    ['CSE 3', 'CSE 12', ....]. 

The user should decide how to represent these for a human reader.

contentteam's People

Contributors

eccentricbarad avatar yuxiangdi avatar borisvassilev avatar justinxliu avatar gwong89 avatar anniepoo avatar

Stargazers

Douglas R. Miles avatar

Watchers

 avatar Douglas R. Miles avatar  avatar James Cloos avatar  avatar  avatar Siddhant Arya avatar Jiabin avatar Brian Soe avatar Yik Lun, "Peter", Chan avatar  avatar

Forkers

borisvassilev

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.