{"id":26558174,"url":"https://github.com/simpson-computer-technologies-research/uwaterloo.courses","last_synced_at":"2025-03-22T12:33:17.574Z","repository":{"id":182276116,"uuid":"668241255","full_name":"Simpson-Computer-Technologies-Research/uwaterloo.courses","owner":"Simpson-Computer-Technologies-Research","description":"A fast, easy-to-use course catalog for the University of Waterloo","archived":false,"fork":false,"pushed_at":"2023-07-19T10:53:32.000Z","size":0,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2023-07-19T11:40:36.175Z","etag":null,"topics":["api","go","redis","svelte","tailwind"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Simpson-Computer-Technologies-Research.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-07-19T10:53:21.000Z","updated_at":"2023-07-19T11:40:37.941Z","dependencies_parsed_at":"2023-07-19T11:51:29.568Z","dependency_job_id":null,"html_url":"https://github.com/Simpson-Computer-Technologies-Research/uwaterloo.courses","commit_stats":null,"previous_names":["simpson-computer-technologies-research/uwaterloo.courses"],"tags_count":1,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Simpson-Computer-Technologies-Research%2Fuwaterloo.courses","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Simpson-Computer-Technologies-Research%2Fuwaterloo.courses/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Simpson-Computer-Technologies-Research%2Fuwaterloo.courses/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Simpson-Computer-Technologies-Research%2Fuwaterloo.courses/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Simpson-Computer-Technologies-Research","download_url":"https://codeload.github.com/Simpson-Computer-Technologies-Research/uwaterloo.courses/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244959409,"owners_count":20538625,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","go","redis","svelte","tailwind"],"created_at":"2025-03-22T12:31:14.180Z","updated_at":"2025-03-22T12:33:17.536Z","avatar_url":"https://github.com/Simpson-Computer-Technologies-Research.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# uwaterloo.courses ![Stars](https://img.shields.io/github/stars/realTristan/uwaterloo.courses?color=brightgreen) ![Watchers](https://img.shields.io/github/watchers/realTristan/uwaterloo.courses?label=Watchers)\n![image](https://user-images.githubusercontent.com/75189508/231576310-b455740c-7b00-4c89-8c33-9465a994ff97.png)\n\n# Challenge\nMy challenge for this project was to use solely native go modules. Because of my already existing experience in writing go programs, I needed a challenge.\nI decided to use native go modules as well for webscraping because of the massive speed improvements.\n\n### Challenge Exceptions\n```\nhermes =\u003e An extremely fast full-text search algorithm (developed by me, and it uses native go modules)\n```\n```\nmux =\u003e Used for fast and easy api routing\n```\n```\nfasthttp =\u003e Used for fast http requests\n```\n\n# Hermes\nHermes is an extremely fast full-text search algorithm and caching system written in Go. It's designed for API implementations which can be used by wrappers in other languages.\nHermes has two notable algorithms. The first being the with-cache algorithm. When using the with-cache algorithm, you can set, get, store, etc. keys and values into the cache. The second\nbeing a no-cache algorithm that reads data from a map, or json file, and uses and array to store the data. Both of these algorithms provide full-text search query times from 10µs to 300µs.\n\n# API\n## Usage\n### Get Courses (Example: Computer Science)\n```\n$ curl -X GET http://localhost:8000/courses?q=computer+science\n```\n```json\n\"Example Response\": {\n    [\n        \"title\": \"CS 476\",\n        \"name\": \"Numeric Computation for Financial Modeling\",\n        \"desc\": \"The interaction of financial models, numerical methods, and computing environments. Basic  computational aspects of option pricing and hedging. Numerical methods for stochastic differential equations, strong and weak convergence. Generating correlated random numbers. Time-stepping methods. Finite difference methods for the Black-Scholes equation. Discretization, stability, convergence. Methods for portfolio optimization, effect of data errors on portfolio weights. \",\n        \"note\": \"Lab is not scheduled and students are expected to find time in open hours to complete their work. Students who receive a good grade in CS 335 may contact the instructor of CS 476 to seek admission without the formal prerequisites. Offered: W]\",\n        \"pre_reqs\": \"(AMATH 242/CS 371 or CS 370) and STAT 231/241\",\n        \"anti_reqs\": \"None\",\n        \"co_reqs\": \"None\",\n        \"unit\":\"0.50\"\n    ]\n}\n```\n\n### Get Subjects\n```\n$ curl -X GET http://localhost:8000/subjects\n```\n```json\n\"Example Response\": {\n    \"subjects\": [\n        \"CS\", \"PHYS\", \"CHEM\", \"ART\", \"HLTH\"\n    ]\n}\n```\n\n### Get Subjects and Names\n```\n$ curl -X GET http://localhost:8000/subjects/names\n```\n```json\n\"Example Response\": {\n    \"actuarialscience\":                       \"ACTSC\",\n\t\"architecturalengineering\":               \"AE\",\n\t\"accountingfinancialmanagement\":          \"AFM\",\n\t\"appliedmathematics\":                     \"AMATH\",\n\t\"anthropology\":                           \"ANTH\",\n\t\"appliedlanguagestudies\":                 \"APPLS\",\n\t\"arabic\":                                 \"ARABIC\",\n\t\"artsandbusiness\":                        \"ARBUS\",\n\t\"headbodyarchitecture\":                   \"ARCH\",\n\t\"arts\":                                   \"ARTS\"\n}\n\n```\n\n# Inspiration\nThis project was inspired by Eric Zhang's (@ekzhang) Harvard course catalog. I want to point out that I did not take any code from his project.\n\n# License\nMIT License\n\nCopyright (c) 2022 Tristan Simpson\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimpson-computer-technologies-research%2Fuwaterloo.courses","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsimpson-computer-technologies-research%2Fuwaterloo.courses","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimpson-computer-technologies-research%2Fuwaterloo.courses/lists"}