GithubHelp home page GithubHelp logo

madgrades / api.madgrades.com Goto Github PK

View Code? Open in Web Editor NEW
13.0 3.0 0.0 240 KB

A REST interface for UW Madison course data.

Home Page: https://api.madgrades.com

License: MIT License

Ruby 83.28% HTML 15.23% Shell 0.52% JavaScript 0.14% SCSS 0.45% Dockerfile 0.38%
uw-madison course-data grades gpa

api.madgrades.com's Introduction

madgrades-extractor

This project reads UW Madison grade distribution and course report PDF files (published by the UW Madison Office of the Registrar) and converts them into CSV or SQL dump files.

You will find published, update-to-date datasets at Kaggle.

https://i.imgur.com/9ZrwRMt.png

Conversion

The conversion process for a single term is as follows:

  1. Open DIR report for the term.

    a. Extract table from PDF (using tabula)

    b. Read each row, adding new section per row.

    c. Collate section info as necessary (i.e. 2 instructors for 1 single section)

    d. Collate courses which appear to be cross-listed (based on similarity between sections offered)

  2. Open grades report for the term.

    a. Extract table from PDF

    b. Read each row, add add each section grade data to course data added by the DIR report process

Typically all terms are extracted so this process repeats for each term.

Command Line Usage

Build it yourself with mvn clean install or grab a release from the releases page.

Usage: <main class> [options]
  Options:
    -d, -download
      Download the PDF reports instead of extracting data
      Default: false
    -e, -exclude
      Comma-separated list of term codes to exclude (ex. -e 1082)
    -f, -format
      The output format
      Default: CSV
      Possible Values: [CSV, MYSQL]
    -l, -list
      Output list of terms to extract
      Default: false
    -out, -o
      Output directory path for exported files (ex. -o ../data)
      Default: ./
    -t, -terms
      Comma-separated list of term codes to run (ex. -t 1082,1072)

Examples:

  • java -jar madgrades-final-1.0-SNAPSHOT.jar: will fetch every term and output files to the current directory
  • java -jar madgrades-final-1.0-SNAPSHOT.jar -t 1082: will fetch just term 1082
  • java -jar madgrades-final-1.0-SNAPSHOT.jar -o ../ -t 1082,1072: will fetch terms 1072 and 1082, output to ../

Relational Diagram

The CSV or SQL dumps are in the format of a collection of relational entities modeled something like this:

diagram

api.madgrades.com's People

Contributors

dependabot[bot] avatar thekeenant avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

api.madgrades.com's Issues

Docker-ify

Bundle this app into a Dockerfile, maybe include elastic search and other dependencies for simplicity?

Correction to teaching

Instructor 5444001 did not teach in course ce2189ea-6319-33c5-a127-388c6ccb0031 for term code 1204.

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.