A course-planning, course-map rendering and GPA-calculation web service, designed for the SFU (Simon Fraser University) student.

Overview

SFU Course Planner

What is the overall goal of the project (i.e. what does it do, or what problem is it solving)?

  • As the title suggests, this project is a course-planning, course-map rendering and GPA-calculation web service, designed for the SFU student.

Which languages did you use, and what parts of the system are implemented in each?

  • Javascript with React for the frontend
  • Python with Django for the backend
    • Serves requests to add, upload and delete courses from SQLite database
    • Responds to GPA calculation requests by using C Foreign Function Interface(CFFI) to turn compiled C function into a module, using it to calculate the result and sending the result back to the user
  • C, which also sits at the backend
    • For faster GPA calculation, as mentioned. This feature may look redundant considering the cost of CFFI itself, but will be more useful as more features will be added (calculate grades according to outline, calculate percentage of courses completed in the whole curriculum, compare grades with historical grade distributions, etc.)

What methods did you use to communicate between languages?

  • As mentioned in the previous section:
    • Javascript & Python: Via a REST API
    • Python & C: Via CFFI

Exactly what steps should be taken to get the project working, after getting your code? [This should start with vagrant up or docker-compose up and can include one or two commands to start components after that.]

  • docker-compose up, then localhost:3000 in browser
  • Note:
    • Project takes several minutes to build (for me, locally, at least)
    • Because of race conditions of different containers, please allow time for You can now view frontend in the browser. to appear in the console, before going to the page

What features should we be looking for when marking your project?

The purpose of this is not to make you write an essay, just to guide the marking so we don't miss anything important. (There will be many projects, and the TAs are human.)

  • A user can add, delete and update courses, separated into completed and uncompleted courses. For completed ones, the user can specify the grade obtained for GPA calculation.
  • While adding a course: After the course number is specified (e.g., CMPT 383), the website provides hints (instantly fetched from SFU Open API) of the course name and the prerequisites so that the user does not have to look them up manually.
  • Refreshing the page would generate a course map of all added courses with their prerequisites connected by arrows.
  • The user can use the mouse to drag courses around for better visualization, or drag arrows from a course to another.
  • Inputting all SFU CMPT courses would give a (very cool) directed graph containing all possible trajectories from start/admission to finish/graduation.
  • The user can click the GPA calculation button and view the calculated GPA of finished courses. This way, the user can try out different grade combinations.
Owner
Ash Peng
Ash Peng
Contains the assignments from the course Building a Modern Computer from First Principles: From Nand to Tetris.

Contains the assignments from the course Building a Modern Computer from First Principles: From Nand to Tetris.

Matheus Rodrigues 1 Jan 20, 2022
This is a tool to make easier brawl stars modding using csv manipulation

Brawler Maker : Modding Tool for Brawl Stars This is a tool to make easier brawl stars modding using csv manipulation if you want to support me, just

6 Nov 16, 2022
My Sublime Text theme

rsms sublime text theme Install: cd path/to/your/sublime/packages git clone https://github.com/rsms/sublime-theme.git rsms-theme You'll also need the

Rasmus 166 Jan 04, 2023
Hasköy is an open-source variable sans-serif typeface family

Hasköy Hasköy is an open-source variable sans-serif typeface family. Designed with powerful opentype features and each weight includes latin-extended

67 Jan 04, 2023
Openapi-core is a Python library that adds client-side and server-side support for the OpenAPI Specification v3.

Openapi-core is a Python library that adds client-side and server-side support for the OpenAPI Specification v3.

A 186 Dec 30, 2022
sphinx builder that outputs markdown files.

sphinx-markdown-builder sphinx builder that outputs markdown files Please ★ this repo if you found it useful ★ ★ ★ If you want frontmatter support ple

Clay Risser 144 Jan 06, 2023
Resource hub for Obsidian resources.

Obsidian Community Vault Welcome! This is an experimental vault that is maintained by the Obsidian community. For best results we recommend downloadin

Obsidian Community 320 Jan 02, 2023
Cleaner script to normalize knock's output EPUBs

clean-epub The excellent knock application by Benton Edmondson outputs EPUBs that seem to be DRM-free. However, if you run the application twice on th

2 Dec 16, 2022
Uses diff command to compare expected output with student's submission output

AUTOGRADER for GRADESCOPE using diff with partial grading Description: Uses diff command to compare expected output with student's submission output U

2 Jan 11, 2022
Collections of Beautiful Latex Snippets

HandyLatex Collections of Beautiful Latex Snippets Table 👉 Succinct table with bold separation line and gray text %################## Dependencies ##

Xintao 15 Apr 11, 2022
Fast syllable estimation library based on pattern matching.

Syllables: A fast syllable estimator for Python Syllables is a fast, simple syllable estimator for Python. It's intended for use in places where speed

ProseGrinder 26 Dec 14, 2022
EasyModerationKit is an open-source framework designed to moderate and filter inappropriate content.

EasyModerationKit is a public transparency statement. It declares any repositories and legalities used in the EasyModeration system. It allows for implementing EasyModeration into an advanced charact

Aarav 1 Jan 16, 2022
A tool that allows for versioning sites built with mkdocs

mkdocs-versioning mkdocs-versioning is a plugin for mkdocs, a tool designed to create static websites usually for generating project documentation. mk

Zayd Patel 38 Feb 26, 2022
The purpose of this project is to share knowledge on how awesome Streamlit is and can be

Awesome Streamlit The fastest way to build Awesome Tools and Apps! Powered by Python! The purpose of this project is to share knowledge on how Awesome

Marc Skov Madsen 1.5k Jan 07, 2023
An awesome Data Science repository to learn and apply for real world problems.

AWESOME DATA SCIENCE An open source Data Science repository to learn and apply towards solving real world problems. This is a shortcut path to start s

Academic.io 20.3k Jan 09, 2023
Main repository for the Sphinx documentation builder

Sphinx Sphinx is a tool that makes it easy to create intelligent and beautiful documentation for Python projects (or other documents consisting of mul

5.1k Jan 04, 2023
A plugin to introduce a generic API for Decompiler support in GEF

decomp2gef A plugin to introduce a generic API for Decompiler support in GEF. Like GEF, the plugin is battery-included and requires no external depend

Zion 379 Jan 08, 2023
Gaphor is the simple modeling tool

Gaphor Gaphor is a UML and SysML modeling application written in Python. It is designed to be easy to use, while still being powerful. Gaphor implemen

Gaphor 1.3k Jan 03, 2023
FireEye Related Projects

FireEye FireEye Related Projects Tor-IP-Collector Simple python script that will collect a list of TOR IPs from the SecOps Institute Github and inject

Taran Ulrich 2 Nov 12, 2022
A Collection of Cheatsheets, Books, Questions, and Portfolio For DS/ML Interview Prep

Here are the sections: Data Science Cheatsheets Data Science EBooks Data Science Question Bank Data Science Case Studies Data Science Portfolio Data J

James Le 2.5k Jan 02, 2023