A CLI program that helps you find classes and plan pre-requisites. Written in C++ and Python.

CourseHelper

A CLI program created to help you prepare for course registration.

Note: At the moment, this project is built specifically for other UCLA students, although feel free to clone this repository and modify the code to work for other universities!

Dependencies

  • A compiler capable of building C++17 code (g++ preferred, otherwise you'll have to edit Makefile)
  • Python 3
  • Selenium: Provides a Python library to retrieve information from websites
  • WebDriver Manager: Helps you manage browser drivers for simulated interactions with Google Chrome

Building

Make sure you have the above dependencies, and then just run:

git clone https://github.com/kylechui/CourseHelper.git
cd CourseHelper && make

Commands

  • help: Shows this list of all commands
  • exit: Exits the program
  • list: Shows list of courses that have already been taken
  • take [course]: Adds course to the list of taken courses
  • info [course]: [WIP] Shows information about a given course
  • prereq [course]: [WIP] Lists all prereqs needed to take a given course
  • available [department]: Shows list of courses that are currently available
  • update [department]: Updates course information for a given department

Note: The above commands are all quite particular about capitalization and spelling (hopefully patch coming soon), so make sure to spell things correctly!

Examples

take Computer Science 35L
info Mathematics 170E
prereq Computer Science 180
available Mathematics
update Computer Science

TODO: Add more examples of other commands as they're being implemented

Limitations

Don't take this project as gospel---always double check with UCLA's websites to make sure your four-year plan is up-to-date and viable. If you are experiencing any bugs/instability, feel free to open an issue or PR.

As of right now, the pre-requisite relationships between courses has to be parsed manually and inputted into a local text file (while the course IDs and descriptions are web scraped). I would have liked to web scrape for the course relationships, but I'm not good enough at RegExp to filter the natural language of each course description down to just the required classes (trust me, I tried). If you've found an alternate website that lists these relationships in a simpler manner, feel free to open an issue!

TODO/Short Term Ideas

  • Make all queries case-insensitive
  • Add user information file that contains list of completed courses
    • Update the user command to allow you to "logout" and "login" as other users user and user [username]. Store data in username.txt
    • Allow each user to define their own set of aliases and blacklisted classes
  • Implement interactive command that allows the user to add/remove courses from their own list
  • Web scraping to automatically generate the input text files
  • Read the course data from the input files in Courses/ and store them in Course class objects
  • Implement command that gives the user a list of all classes that can be taken
  • Implement command that gives the user information about a certain class:
    • Course ID/name/description
    • List of pre-requisite courses necessary to take that class
    • Whether or not the user has taken the class, whether or not the user can take that class, which courses are still needed to take it

Long Term Goals

  • Visualizer for the course graph
  • Turn this into a web app
  • Automagically get the course requisite graph into a local database via RegExp parsing or a friendlier website
Owner
Kyle Chui
Open source all the things!
Kyle Chui
Similar Resources

Windows Package Manager CLI (aka winget)

Windows Package Manager CLI (aka winget)

Welcome to the Windows Package Manager Client (aka winget.exe) repository This repository contains the source code for the Windows Package Manager Cli

Oct 1, 2022

CLI to play a word-guessing game like Wordle

CLI to play a word-guessing game like Wordle

Lexeme What is this? Python program to play a word-guessing game like Wordle, but… More addictive because you can play it over and over and over, not

Feb 7, 2022

This is a simple CLI interface helper library for C.

LIBCCLI This is a very simple shell like interface for CLI activities. More will be added to this, but for now, this is the basic idea:

Sep 24, 2022

File's sizes as a markdown table (CLI)

File's sizes as a markdown table (CLI)

Feb 6, 2022

A CLI based solver for the popular word guessing game WORDLE

A CLI based solver for the popular word guessing game WORDLE

Project WAR WAR stands for Wordle Answer and Resolver About Wordle is a web-based word game developed by Welsh-born software engineer Josh Wardle, for

Feb 19, 2022

CLI for single-cell analyses

CLI for single-cell analyses This repository provides a no-frills command-line interface for single-cell RNA-seq data analysis from a Matrix Market fi

Jan 28, 2022

A simple header-only C++ argument parser library. Supposed to be flexible and powerful, and attempts to be compatible with the functionality of the Python standard argparse library (though not necessarily the API).

args Note that this library is essentially in maintenance mode. I haven't had the time to work on it or give it the love that it deserves. I'm not add

Sep 22, 2022

A simple header-only C++ argument parser library. Supposed to be flexible and powerful, and attempts to be compatible with the functionality of the Python standard argparse library (though not necessarily the API).

args Note that this library is essentially in maintenance mode. I haven't had the time to work on it or give it the love that it deserves. I'm not add

Aug 31, 2021

C++ functions matching the interface and behavior of python string methods with std::string

Pystring is a collection of C++ functions which match the interface and behavior of python's string class methods using std::string. Implemented in C+

Sep 28, 2022
Related tags
Windows command line program for Spleeter, written in pure C, no need of Python.
Windows command line program for Spleeter, written in pure C, no need of Python.

SpleeterMsvcExe is a Windows command line program for Spleeter, which can be used directly. It is written in pure C language, using ffmpeg to read and write audio files, and using Tensorflow C API to make use of Spleeter models. No need to install Python environment, and it does not contain anything related to Python.

Sep 23, 2022
The KISS file manager: CLI-based, ultra-lightweight, lightning fast, and written in C
 The KISS file manager: CLI-based, ultra-lightweight, lightning fast, and written in C

CliFM is a CLI-based, shell-like (non-curses) and KISS terminal file manager written in C: simple, fast, and lightweight as hell

Oct 1, 2022
Screens options data to find the best options to sell for theta-gangers

Robinhood-options-screener Screens options data to find the best options to sell for theta-gangers, works for cash-secured-puts and covered-calls. Get

Sep 6, 2022
C++ lib and CLI for playing media files on a Chromecast

castr - a CLI and C++ library to cast media files to Chromecast devices using the built in Default Media Receiver

Aug 29, 2022
Creating CLI's just got a whole lot better
 Creating CLI's just got a whole lot better

Staq Creating CLI's just got a whole lot better. Don't worry about CLI colouring, networking, Size of Executables, Speed ever again Have any doubts? R

Jun 1, 2021
CLI Application that provides the Freedesktop Secret Service using Pass as its backend!

pass-secrets CLI Application that provides the Freedesktop Secret Service using Pass as its backend! Status Currently working to store secrets with pr

Sep 13, 2022
Fegeya Freud, CLI FPaper renderer, based on Totem (`less`-like tool without `--help`)
Fegeya Freud, CLI FPaper renderer, based on Totem (`less`-like tool without `--help`)

Fegeya Freud, CLI FPaper renderer, based on Totem (`less`-like tool without `--help`)

Jun 11, 2021
Um CLI para encontrar os seus alias
Um CLI para encontrar os seus alias

Manager-Alias Que tal gerenciar todos os seus alias de um único local? Pesquisar e encontrar o que você precisa sem ter que ficar lendo diversos arqui

Oct 26, 2021
Port of ani-cli with more features 😉

Port of ani-cli with more features ??

Jun 25, 2022
A CLI for extracting libraries from Apple's dyld shared cache file

dyld-shared-cache-extractor As of macOS Big Sur, instead of shipping the system libraries with macOS, Apple ships a generated cache of all built in dy

Sep 19, 2022