From 928c01e0bbb259ac9c7173feb85ba7a960d49006 Mon Sep 17 00:00:00 2001 From: awpala Date: Tue, 10 Dec 2024 01:16:12 +0000 Subject: [PATCH] feat: add courses for Fall 2024 and Spring 2025, update existing --- .storybook/main.ts | 6 +- __seed__/data/courses.js | 81 ++++++++++++++++++++ firebase/utilityFunctions.ts | 9 +++ globals/staticDataModels.ts | 118 ++++++++++++++++++++++++++---- globals/types.ts | 27 +++++-- src/stories/ClassCard.stories.tsx | 2 +- 6 files changed, 219 insertions(+), 24 deletions(-) diff --git a/.storybook/main.ts b/.storybook/main.ts index e73cdd68..f69baddc 100644 --- a/.storybook/main.ts +++ b/.storybook/main.ts @@ -6,7 +6,7 @@ const config: StorybookConfig = { '@storybook/addon-links', '@storybook/addon-essentials', '@storybook/addon-interactions', - '@chromatic-com/storybook' + '@chromatic-com/storybook', ], framework: { @@ -17,7 +17,7 @@ const config: StorybookConfig = { docs: {}, typescript: { - reactDocgen: 'react-docgen-typescript' - } + reactDocgen: 'react-docgen-typescript', + }, }; export default config; diff --git a/__seed__/data/courses.js b/__seed__/data/courses.js index 8ecb72e3..b71038e3 100755 --- a/__seed__/data/courses.js +++ b/__seed__/data/courses.js @@ -120,6 +120,15 @@ module.exports = [ 2022: { 1: 2, 3: 1 }, }, }, + { + courseId: 'CS-6261', + numReviews: 0, + avgWorkload: null, + avgDifficulty: null, + avgOverall: null, + avgStaffSupport: null, + reviewsCountsByYearSem: {}, + }, { courseId: 'CS-6262', numReviews: 126, @@ -289,6 +298,24 @@ module.exports = [ 2022: { 1: 7 }, }, }, + { + courseId: 'CS-6422', + numReviews: 0, + avgWorkload: null, + avgDifficulty: null, + avgOverall: null, + avgStaffSupport: null, + reviewsCountsByYearSem: {}, + }, + { + courseId: 'CS-6435', + numReviews: 0, + avgWorkload: null, + avgDifficulty: null, + avgOverall: null, + avgStaffSupport: null, + reviewsCountsByYearSem: {}, + }, { courseId: 'CS-6440', numReviews: 83, @@ -377,6 +404,15 @@ module.exports = [ 2022: { 1: 3 }, }, }, + { + courseId: 'CS-6491', + numReviews: 0, + avgWorkload: null, + avgDifficulty: null, + avgOverall: null, + avgStaffSupport: null, + reviewsCountsByYearSem: {}, + }, { courseId: 'CS-6515', numReviews: 270, @@ -505,6 +541,15 @@ module.exports = [ avgStaffSupport: null, reviewsCountsByYearSem: { 2021: { 1: 11, 2: 6, 3: 5 }, 2022: { 1: 2 } }, }, + { + courseId: 'CS-7400', + numReviews: 0, + avgWorkload: null, + avgDifficulty: null, + avgOverall: null, + avgStaffSupport: null, + reviewsCountsByYearSem: {}, + }, { courseId: 'CS-7450', numReviews: 0, @@ -766,6 +811,24 @@ module.exports = [ avgStaffSupport: null, reviewsCountsByYearSem: {}, }, + { + courseId: 'CS-8803-O23', + numReviews: 0, + avgWorkload: null, + avgDifficulty: null, + avgOverall: null, + avgStaffSupport: null, + reviewsCountsByYearSem: {}, + }, + { + courseId: 'CS-8803-O24', + numReviews: 0, + avgWorkload: null, + avgDifficulty: null, + avgOverall: null, + avgStaffSupport: null, + reviewsCountsByYearSem: {}, + }, { courseId: 'CS-8803-OC1', numReviews: 7, @@ -880,6 +943,15 @@ module.exports = [ avgStaffSupport: null, reviewsCountsByYearSem: { 2020: { 3: 1 }, 2021: { 1: 2, 3: 1 } }, }, + { + courseId: 'CSE-8803', + numReviews: 0, + avgWorkload: null, + avgDifficulty: null, + avgOverall: null, + avgStaffSupport: null, + reviewsCountsByYearSem: {}, + }, { courseId: 'ECE-6150', numReviews: 0, @@ -1371,6 +1443,15 @@ module.exports = [ 2021: { 1: 3, 3: 2 }, }, }, + { + courseId: 'PUBP-8823', + numReviews: 0, + avgWorkload: null, + avgDifficulty: null, + avgOverall: null, + avgStaffSupport: null, + reviewsCountsByYearSem: {}, + }, /* IGNORE -- ambiguous departmentId */ // { // courseId: 'VIP-6600', diff --git a/firebase/utilityFunctions.ts b/firebase/utilityFunctions.ts index 243c1244..b34ad9bd 100755 --- a/firebase/utilityFunctions.ts +++ b/firebase/utilityFunctions.ts @@ -173,6 +173,7 @@ export const mapCourseToLegacyNumReviews: TMapCourseToLegacyNumReviews = { 'CS-6238': 29, 'CS-6250': 326, 'CS-6260': 39, + 'CS-6261': 0, 'CS-6262': 126, 'CS-6263': 74, 'CS-6264': 4, @@ -184,12 +185,15 @@ export const mapCourseToLegacyNumReviews: TMapCourseToLegacyNumReviews = { 'CS-6310': 156, 'CS-6340': 136, 'CS-6400': 230, + 'CS-6422': 0, + 'CS-6435': 0, 'CS-6440': 83, 'CS-6457': 13, 'CS-6460': 89, 'CS-6465': 1, 'CS-6475': 153, 'CS-6476': 162, + 'CS-6491': 0, 'CS-6515': 270, 'CS-6601': 236, 'CS-6603': 49, @@ -201,6 +205,7 @@ export const mapCourseToLegacyNumReviews: TMapCourseToLegacyNumReviews = { 'CS-6795': 2, 'CS-7210': 31, 'CS-7280': 24, + 'CS-7400': 0, 'CS-7450': 0, 'CS-7470': 2, 'CS-7632': 16, @@ -223,6 +228,8 @@ export const mapCourseToLegacyNumReviews: TMapCourseToLegacyNumReviews = { 'CS-8803-O17': 0, 'CS-8803-O21': 0, 'CS-8803-O22': 0, + 'CS-8803-O23': 0, + 'CS-8803-O24': 0, 'CS-8803-OC1': 7, 'CS-8813': 0, 'CSE-6040': 110, @@ -232,6 +239,7 @@ export const mapCourseToLegacyNumReviews: TMapCourseToLegacyNumReviews = { 'CSE-6242': 260, 'CSE-6250': 61, 'CSE-6742': 4, + 'CSE-8803': 0, 'ECE-6150': 0, 'ECE-6266': 0, 'ECE-6320': 0, @@ -277,4 +285,5 @@ export const mapCourseToLegacyNumReviews: TMapCourseToLegacyNumReviews = { 'PUBP-6501': 8, 'PUBP-6502': 3, 'PUBP-6725': 17, + 'PUBP-8823': 0, }; diff --git a/globals/staticDataModels.ts b/globals/staticDataModels.ts index 3b7e18c9..dfbead1d 100644 --- a/globals/staticDataModels.ts +++ b/globals/staticDataModels.ts @@ -188,7 +188,7 @@ export const coursesDataStatic: TPayloadCoursesDataStatic = { departmentId: 'CS', courseNumber: '6150', url: 'https://omscs.gatech.edu/cs-6150-computing-good', - aliases: [], + aliases: ['CFG', 'C4G', 'CG'], isDeprecated: false, isFoundational: false, }, @@ -198,7 +198,7 @@ export const coursesDataStatic: TPayloadCoursesDataStatic = { departmentId: 'CS', courseNumber: '6200', url: 'https://omscs.gatech.edu/cs-6200-introduction-operating-systems', - aliases: ['GIOS', 'IOS'], + aliases: ['GIOS', 'IOS', 'OS'], isDeprecated: false, isFoundational: true, }, @@ -252,13 +252,23 @@ export const coursesDataStatic: TPayloadCoursesDataStatic = { isDeprecated: false, isFoundational: true, }, + 'CS-6261': { + courseId: 'CS-6261', + name: 'Security Incident Response', + departmentId: 'CS', + courseNumber: '6261', + url: 'https://omscs.gatech.edu/cs-6261-security-incident-response', + aliases: ['SIR'], + isDeprecated: false, + isFoundational: false, + }, 'CS-6262': { courseId: 'CS-6262', name: 'Network Security', departmentId: 'CS', courseNumber: '6262', url: 'https://omscs.gatech.edu/cs-6262-network-security', - aliases: ['NS'], + aliases: ['NS', 'NetSec'], isDeprecated: false, isFoundational: true, }, @@ -267,7 +277,7 @@ export const coursesDataStatic: TPayloadCoursesDataStatic = { name: 'Intro to Cyber-Physical Systems Security', departmentId: 'CS', courseNumber: '6263', - url: 'https://omscs.gatech.edu/cs-8803-special-topics-cyber-physical-systems', + url: 'https://omscs.gatech.edu/cs-6263-intro-cyber-physical-systems-security', aliases: ['CPSS'], isDeprecated: false, isFoundational: true, @@ -362,6 +372,26 @@ export const coursesDataStatic: TPayloadCoursesDataStatic = { isDeprecated: false, isFoundational: true, }, + 'CS-6422': { + courseId: 'CS-6422', + name: 'Database System Implementation', + departmentId: 'CS', + courseNumber: '6422', + url: 'https://omscs.gatech.edu/cs-6422-database-system-implementation', + aliases: ['DBS', 'DBSI', 'DBI', 'DSI'], + isDeprecated: false, + isFoundational: true, + }, + 'CS-6435': { + courseId: 'CS-6435', + name: 'Digital Health Equity', + departmentId: 'CS', + courseNumber: '6435', + url: 'https://omscs.gatech.edu/cs-6435-digital-health-equity', + aliases: ['DHE'], + isDeprecated: false, + isFoundational: true, + }, 'CS-6440': { courseId: 'CS-6440', name: 'Introduction to Health Informatics', @@ -388,7 +418,7 @@ export const coursesDataStatic: TPayloadCoursesDataStatic = { departmentId: 'CS', courseNumber: '6460', url: 'https://omscs.gatech.edu/cs-6460-educational-technology', - aliases: ['EdTech'], + aliases: ['EdTech', 'ET'], isDeprecated: false, isFoundational: true, }, @@ -422,13 +452,23 @@ export const coursesDataStatic: TPayloadCoursesDataStatic = { isDeprecated: false, isFoundational: true, }, + 'CS-6491': { + courseId: 'CS-6491', + name: 'Foundations of Computer Graphics', + departmentId: 'CS', + courseNumber: '6491', + url: 'https://omscs.gatech.edu/cs-6491-foundations-computer-graphics', + aliases: ['FCG', 'CG'], + isDeprecated: false, + isFoundational: true, + }, 'CS-6515': { courseId: 'CS-6515', name: 'Introduction to Graduate Algorithms', departmentId: 'CS', courseNumber: '6515', url: 'https://omscs.gatech.edu/cs-6515-intro-graduate-algorithms', - aliases: ['GA'], + aliases: ['GA', 'IGA'], isDeprecated: false, isFoundational: true, }, @@ -488,7 +528,7 @@ export const coursesDataStatic: TPayloadCoursesDataStatic = { departmentId: 'CS', courseNumber: '6747', url: 'https://omscs.gatech.edu/cs-6747-advanced-malware-analysis', - aliases: ['AMA', 'ATMA'], + aliases: ['AMA', 'ATMA', 'AMRE'], isDeprecated: false, isFoundational: false, }, @@ -528,7 +568,17 @@ export const coursesDataStatic: TPayloadCoursesDataStatic = { departmentId: 'CS', courseNumber: '7280', url: 'https://omscs.gatech.edu/cs-7280-network-science', - aliases: ['NS'], + aliases: ['NS', 'NetSci'], + isDeprecated: false, + isFoundational: true, + }, + 'CS-7400': { + courseId: 'CS-7400', + name: 'Quantum Computing', + departmentId: 'CS', + courseNumber: '7400', + url: 'https://omscs.gatech.edu/cs-7400-quantum-computing', + aliases: ['QC'], isDeprecated: false, isFoundational: true, }, @@ -574,10 +624,10 @@ export const coursesDataStatic: TPayloadCoursesDataStatic = { }, 'CS-7638': { courseId: 'CS-7638', - name: 'Artificial Intelligence Techniques for Robotics', + name: 'Robotics: AI Techniques', departmentId: 'CS', courseNumber: '7638', - url: 'https://omscs.gatech.edu/cs-7638-artificial-intelligence-robotics', + url: 'https://omscs.gatech.edu/cs-7638-robotics-ai-techniques', aliases: ['AI4R', 'RAIT'], isDeprecated: false, isFoundational: true, @@ -699,7 +749,7 @@ export const coursesDataStatic: TPayloadCoursesDataStatic = { courseNumber: '8803-O13', url: 'https://omscs.gatech.edu/cs-8803-o13-quantum-computing', aliases: ['QC'], - isDeprecated: false, + isDeprecated: true, isFoundational: true, }, 'CS-8803-O15': { @@ -708,7 +758,7 @@ export const coursesDataStatic: TPayloadCoursesDataStatic = { departmentId: 'CS', courseNumber: '8803-O15', url: 'https://omscs.gatech.edu/cs-8803-o15-introduction-computer-law', - aliases: ['ICL', 'CL'], + aliases: ['ICL', 'CL', 'Law'], isDeprecated: false, isFoundational: false, }, @@ -719,7 +769,7 @@ export const coursesDataStatic: TPayloadCoursesDataStatic = { courseNumber: '8803-O16', url: 'https://omscs.gatech.edu/cs-8803-o16-digital-health-equity', aliases: ['DHE'], - isDeprecated: false, + isDeprecated: true, isFoundational: false, }, 'CS-8803-O17': { @@ -749,6 +799,26 @@ export const coursesDataStatic: TPayloadCoursesDataStatic = { courseNumber: '8803-O22', url: 'https://omscs.gatech.edu/cs-8803-o22-security-incident-response', aliases: ['SIR'], + isDeprecated: true, + isFoundational: false, + }, + 'CS-8803-O23': { + courseId: 'CS-8803-O23', + name: 'Modern Internet Research Methods', + departmentId: 'CS', + courseNumber: '8803-O23', + url: 'https://omscs.gatech.edu/cs-8803-o23-modern-internet-research-methods', + aliases: ['MIRM'], + isDeprecated: false, + isFoundational: false, + }, + 'CS-8803-O24': { + courseId: 'CS-8803-O24', + name: 'Introduction to Research', + departmentId: 'CS', + courseNumber: '8803-O24', + url: 'https://omscs.gatech.edu/cs-8803-o24-intro-research', + aliases: ['IR', 'I2R'], isDeprecated: false, isFoundational: false, }, @@ -759,7 +829,7 @@ export const coursesDataStatic: TPayloadCoursesDataStatic = { courseNumber: '8803-OC1', url: null, aliases: [], - isDeprecated: false, + isDeprecated: true, isFoundational: false, }, 'CS-8813': { @@ -842,6 +912,16 @@ export const coursesDataStatic: TPayloadCoursesDataStatic = { isDeprecated: false, isFoundational: false, }, + 'CSE-8803': { + courseId: 'CSE-8803', + name: 'Applied Natural Language Processing', + departmentId: 'CSE', + courseNumber: '8803', + url: null, + aliases: ['ANLP'], + isDeprecated: false, + isFoundational: false, + }, 'ECE-6150': { courseId: 'ECE-6150', name: 'Computational Aspects of Cyber Physical Systems', @@ -1292,6 +1372,16 @@ export const coursesDataStatic: TPayloadCoursesDataStatic = { isDeprecated: false, isFoundational: false, }, + 'PUBP-8823': { + courseId: 'PUBP-8823', + name: 'Geopolitics of Cybersecurity', + departmentId: 'PUBP', + courseNumber: '8823', + url: null, + aliases: ['GC'], + isDeprecated: false, + isFoundational: false, + }, /* IGNORE -- ambiguous departmentId */ // 'VIP-6600': { // courseId: 'VIP-6600', diff --git a/globals/types.ts b/globals/types.ts index 7b58daba..ed87bc1e 100755 --- a/globals/types.ts +++ b/globals/types.ts @@ -356,6 +356,7 @@ export type TCourseId = | 'CS-6238' | 'CS-6250' | 'CS-6260' + | 'CS-6261' | 'CS-6262' | 'CS-6263' | 'CS-6264' @@ -367,12 +368,15 @@ export type TCourseId = | 'CS-6310' | 'CS-6340' | 'CS-6400' + | 'CS-6422' + | 'CS-6435' | 'CS-6440' | 'CS-6457' | 'CS-6460' | 'CS-6465' | 'CS-6475' | 'CS-6476' + | 'CS-6491' | 'CS-6515' | 'CS-6601' | 'CS-6603' @@ -384,6 +388,7 @@ export type TCourseId = | 'CS-6795' | 'CS-7210' | 'CS-7280' + | 'CS-7400' | 'CS-7450' | 'CS-7470' | 'CS-7632' @@ -406,6 +411,8 @@ export type TCourseId = | 'CS-8803-O17' | 'CS-8803-O21' | 'CS-8803-O22' + | 'CS-8803-O23' + | 'CS-8803-O24' | 'CS-8803-OC1' | 'CS-8813' | 'CSE-6040' @@ -415,6 +422,7 @@ export type TCourseId = | 'CSE-6242' | 'CSE-6250' | 'CSE-6742' + | 'CSE-8803' | 'ECE-6150' | 'ECE-6266' | 'ECE-6320' @@ -459,7 +467,8 @@ export type TCourseId = | 'PUBP-6266' | 'PUBP-6501' | 'PUBP-6502' - | 'PUBP-6725'; + | 'PUBP-6725' + | 'PUBP-8823'; // | 'VIP-6600' // IGNORE -- ambiguous departmentId /* @@ -481,6 +490,7 @@ export type TCourseName = | 'Secure Computer Systems' | 'Computer Networks' | 'Applied Cryptography' + | 'Security Incident Response' | 'Network Security' | 'Intro to Cyber-Physical Systems Security' | 'Information Security Lab: System and Network Defenses' @@ -492,12 +502,15 @@ export type TCourseName = | 'Software Architecture and Design' | 'Advanced Topics in Software Analysis and Testing' | 'Database Systems Concepts and Design' + | 'Database System Implementation' + | 'Digital Health Equity' | 'Introduction to Health Informatics' | 'Video Game Design and Programming' | 'Educational Technology: Conceptual Foundations' | 'Computational Journalism' | 'Computational Photography' | 'Introduction to Computer Vision' + | 'Foundations of Computer Graphics' | 'Introduction to Graduate Algorithms' | 'Artificial Intelligence' | 'AI, Ethics, and Society' @@ -509,11 +522,12 @@ export type TCourseName = | 'Introduction to Cognitive Science' | 'Distributed Computing' | 'Network Science: Methods and Applications' + | 'Quantum Computing' | 'Information Visualization' | 'Mobile and Ubiquitous Computing' | 'Game Artificial Intelligence' | 'Knowledge-Based Artificial Intelligence: Cognitive Systems' - | 'Artificial Intelligence Techniques for Robotics' + | 'Robotics: AI Techniques' | 'Cyber Physical Design and Analysis' | 'Machine Learning' | 'Reinforcement Learning and Decision Making' @@ -525,12 +539,11 @@ export type TCourseName = | 'Biomedical Analytics' | 'Compilers: Theory and Practice' | 'Systems Issues in Cloud Computing' - | 'Quantum Computing' | 'Introduction to Computing Law' - | 'Digital Health Equity' | 'Global Entrepreneurship' | 'GPU Hardware and Software' - | 'Security Incident Response' + | 'Modern Internet Research Methods' + | 'Introduction to Research' | 'Security Operations and Incidence Response' | 'Malware Analysis and Defense' | 'Computing for Data Analysis: Methods and Tools' @@ -540,6 +553,7 @@ export type TCourseName = | 'Data and Visual Analytics' | 'Big Data Analytics for Healthcare' | 'Modeling, Simulation, and Military Gaming' + | 'Applied Natural Language Processing' | 'Computational Aspects of Cyber Physical Systems' | 'Energy Systems Practicum' | 'Power Systems Control and Operation' @@ -584,5 +598,6 @@ export type TCourseName = | 'Policy Practicum' | 'Information Policy and Management' | 'Information and Communications Technology Policy' - | 'Information Security Policies and Strategies'; + | 'Information Security Policies and Strategies' + | 'Geopolitics of Cybersecurity'; // | 'Vertically Integrated Projects' // IGNORE -- ambiguous departmentId diff --git a/src/stories/ClassCard.stories.tsx b/src/stories/ClassCard.stories.tsx index be6ba840..9b90e4b2 100755 --- a/src/stories/ClassCard.stories.tsx +++ b/src/stories/ClassCard.stories.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { Meta, StoryFn } from '@storybook/react'; +import { Meta, StoryFn } from '@storybook/react'; import ClassCard from '@components/ClassCard'; import { Grid } from '@mui/material';