Coder Social home page Coder Social logo

jpinkney / major-finder Goto Github PK

View Code? Open in Web Editor NEW

This project forked from patrickleweryharris/major-finder

0.0 1.0 0.0 390 KB

A tool for finding your major at UofT

Home Page: https://plh.io/major-finder

License: MIT License

JavaScript 97.80% HTML 2.20%

major-finder's Introduction

Major Finder

License

A tool for finding your major at UofT

Takes your first year courses and tells you what Specialist, Major or Minor program(s) you are eligible for

Currently drawing data from the 2016-2017 Arts and Science Calendar

License Information

Major Finder is open source and released under the MIT License

To Do List

  • Filtering (i.e. if a user did not take any math courses there is no point searching through programs that require math)
  • Better feedback for user
  • Add UTM/UTSC version
  • Input validation ("Error, not a valid course code")
  • Links to the calendar page of posts a user is eligible for (Patrick currently working on)
    • Can be done by adding links to majors.json and adapting the output in javascript to display the postName as a link

Data Structure

The application relies on a compiled list of St.George Campus Arts and Science subject POSTs and their requirements. This list is in the following format:

[
  {
    "name":"Computer Science Major / Specialist / Minor",
    "requirements:":[
      "CSC148",
      "CSC165",
      "MAT135",
      "MAT136"
    ]
  },
  {
    "name":"Computer Science Major / Specialist / Minor",
    "requirements:":[
      "CSC148",
      "CSC165",
      "MAT137"
    ]
  }
]

This data structure visualized (from json 2 html):

visualized

Some programs can have different courses that allow entry (i.e. MAT135/136 vs. MAT137), so the same POST may result from different first year courses. The list of programs and requirements reflects this

Programs not included in the application (for now) due to complicated requirements:

  • Any program without specific first year requirements
  • Geoscience Major/Minor
  • Earth and Environmental Systems Major
  • Ethics, Society and Law Major (Based on breadth reqs.)
  • International Relations Specialist (Only some variants of the reqs.)
  • Forest Conservation Science Specialist/Major/Minor
  • Forest Conservation Specialist/Major/Minor
  • Environmental Geography Specialist/Major ("Pick any two courses")
  • Human Geography Specialist/Major/Minor ("Pick any two courses")
  • Physical and Environmental Geography Specialist/Major/Minor
  • Geographic Information Systems Minor
  • Urban Studies Specialist/Major/Minor (Pick selections of different courses)
  • Near and Middle Eastern Civilizations Specialist/Major/Minor (Many many different combos)
  • Peace, Conflict and Justice Specialist/Major (Type 3 with many many requirements)
  • Physiology Major/Minor ("Pick any of the following")

Program Design

  • Takes sanitized input of first year courses from a user, and organizes them into an array

    • For example, a user may enter: MAT137Y, CSC148H, csc165h, ita100
    • The application will interpret this as:
      ["MAT137", "CSC148", "CSC165", "ITA100"]
      
  • Passing this data into our algorithm, we compare the user's input with data from the list of programs

  • If a programs "requirements" are entirely contained in the input, that program's "name" is added to the list of programs returned to the user when the program terminates

  • Repeat the previous step until the list of programs has been exhausted

  • Display the list of programs that the user qualifies for

  • For our example above, this list would be:

    Computer Science Specialist/Major/Minor
    
    Italian Specialist/Major/Minor
    
    European Studies Major (Italian)
    
    Statistics Specialist/Major/Minor
    
    Applied Statistics Specialist
    

major-finder's People

Contributors

jpinkney avatar patrickleweryharris avatar

Watchers

 avatar

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.