From 171a78f05ecb71c8091d1c48e21eb20e25c5913d Mon Sep 17 00:00:00 2001 From: "nmp79@cornell.edu" Date: Wed, 2 Oct 2024 12:57:21 -0400 Subject: [PATCH 1/4] Added AI minor requirements ai.ts and linked to index.ts --- src/data/index.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/data/index.ts b/src/data/index.ts index cfa8d82bd..4e6b3a90b 100644 --- a/src/data/index.ts +++ b/src/data/index.ts @@ -51,6 +51,7 @@ import psychRequirements, { psychAdvisors } from './majors/psych'; import stsRequirements, { stsAdvisors } from './majors/sts'; import vienRequirements, { vienAdvisors } from './majors/vien'; import aerospaceMinorRequirements, { aerospaceMinorAdvisors } from './minors/aerospace'; +import aiMinorRequirements from './minors/ai'; import animalSciRequirements, { animalSciAdvisors } from './minors/animal-sci'; import appliedMathMinorRequirements, { appliedMathMinorAdvisors } from './minors/applied-math'; import buMinorRequirements, { buMinorAdvisors } from './minors/bu'; @@ -453,6 +454,14 @@ const json: RequirementsJson = { advisors: aerospaceMinorAdvisors, abbrev: 'AeroEng', }, + AI: { + name: 'Artificial Intelligence', + schools: ['EN'], //TODO: add Bowers + requirements: aiMinorRequirements, + advisors: csAdvisors, //TODO: no set advisor for AI minor + abbrev: 'AI', + }, + ANIMALSCIENCE: { name: 'Animal Science', schools: ['AG'], From 455ac5aa6b2d3ed81a4d07da234cef49117ecea0 Mon Sep 17 00:00:00 2001 From: "nmp79@cornell.edu" Date: Wed, 2 Oct 2024 13:00:13 -0400 Subject: [PATCH 2/4] adding ai minor reqs --- src/data/minors/ai.ts | 77 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 src/data/minors/ai.ts diff --git a/src/data/minors/ai.ts b/src/data/minors/ai.ts new file mode 100644 index 000000000..658c57c7e --- /dev/null +++ b/src/data/minors/ai.ts @@ -0,0 +1,77 @@ +import { CollegeOrMajorRequirement, Course } from '../../requirements/types'; +import { + includesWithSingleRequirement, + courseMatchesCodeOptions, + ifCodeMatch, + courseMatchesCode, +} from '../../requirements/checkers'; +import { AdvisorGroup } from '../../tools/advisors/types'; +import { lastNameRange } from '../../tools/advisors/checkers'; + +const aiMinorRequirements: readonly CollegeOrMajorRequirement[] = [ + { + name: 'Foundations of AI: Machine Learning', + description: 'CS 3780 or ECE 4200 or ORIE 4741 or STSCI 3740', + source: 'https://prod.cis.cornell.edu/undergraduate-opportunities/minors/artificial-intelligence/ai-minor-requirements', + checker: includesWithSingleRequirement( + 'CS 3780', + 'ECE 3200', + 'ORIE 3741', + 'STSCI 3740', + //TODO: add credit for prev codes ie: cs 3780 was formerly 4780 + ), + fulfilledBy: 'courses', + perSlotMinCount: [1], + slotNames: ['Course'], + }, + { + name: 'Foundations of AI: Reasoning', + description: 'CS 3700', + source: 'https://prod.cis.cornell.edu/undergraduate-opportunities/minors/artificial-intelligence/ai-minor-requirements', + checker: includesWithSingleRequirement('CS 3700'), + fulfilledBy: 'courses', + perSlotMinCount: [1], + slotNames: ['Course'], + }, + { + name: 'Foundations of AI: Human-AI Interaction', + description: 'INFO 4940', + //TODO: add INFO 3450 exception for students grad in dec 2024 or may 2025 + source: 'https://prod.cis.cornell.edu/undergraduate-opportunities/minors/artificial-intelligence/ai-minor-requirements', + checker: includesWithSingleRequirement('INFO 4940'), + fulfilledBy: 'courses', + perSlotMinCount: [1], + slotNames: ['Course'], + }, + { + name: 'Foundations of AI: Ethics, Governance & Policy', + description: 'ENGRG 3605 or INFO 1260 or PUBPOL 4210', + source: 'https://prod.cis.cornell.edu/undergraduate-opportunities/minors/artificial-intelligence/ai-minor-requirements', + checker: includesWithSingleRequirement('ENGRG 3605', 'INFO 1260', 'PUBPOL 4210'), + fulfilledBy: 'courses', + perSlotMinCount: [1], + slotNames: ['Course'], + }, + { + name: 'AI Electives', + description: + 'Two of the following courses.', + source: + 'http://www.cs.cornell.edu/undergrad/rulesandproceduresengineering/choosingyourelectives', + checker: includesWithSingleRequirement('CS 4670', 'CS 4701', 'CS 4740', 'CS 4750', 'CS 4756', 'CS 4782', 'CS 4783', 'CS 4787', 'CS 4789', 'CS 4860', 'ECE 4160', 'ENGRG 3605', 'INFO 1260', 'INFO 3350', 'INFO 3950', 'INFO 4100', 'INFO 4120', 'INFO 4130', 'INFO 4275', 'INFO 4300', 'INFO 4310', 'INFO 4410', 'LING 4424', 'LING 4434', 'MAE 4180', 'MAE 4810', 'NBA 4920', 'ORIE 4160', 'ORIE 4740', 'ORIE 4742', 'PUBPOL 4210', 'PHIL 2621', 'STS 3440', 'STSCI 3110', 'STSCI 4030', 'STSCI 4520', 'STSCI 4750'), + fulfilledBy: 'courses', + perSlotMinCount: [2], + slotNames: ['Course'], + }, + +]; + +export default aiMinorRequirements; + +// export const aiMinorAdvisors: AdvisorGroup = { +// advisors: [ +// { name: 'Ryan Marchenese ', email: 'ryan.m@cornell.edu', checker: lastNameRange('A', 'H') }, +// { name: 'Carl Cornell', email: 'cec232@cornell.edu', checker: lastNameRange('I', 'Q') }, +// { name: 'Nicole Roy', email: 'nicole.roy@cornell.edu', checker: lastNameRange('R', 'Z') }, +// ], +// }; From 1faabd442c3999332d5659d3111908c23001a68d Mon Sep 17 00:00:00 2001 From: "nmp79@cornell.edu" Date: Wed, 16 Oct 2024 16:04:57 -0400 Subject: [PATCH 3/4] finished adding courses for ai minor and tested --- src/data/minors/ai.ts | 78 ++++++++--- src/requirements/decorated-requirements.json | 132 +++++++++++++++++++ 2 files changed, 192 insertions(+), 18 deletions(-) diff --git a/src/data/minors/ai.ts b/src/data/minors/ai.ts index 658c57c7e..3fd4a47d2 100644 --- a/src/data/minors/ai.ts +++ b/src/data/minors/ai.ts @@ -10,43 +10,49 @@ import { lastNameRange } from '../../tools/advisors/checkers'; const aiMinorRequirements: readonly CollegeOrMajorRequirement[] = [ { - name: 'Foundations of AI: Machine Learning', - description: 'CS 3780 or ECE 4200 or ORIE 4741 or STSCI 3740', - source: 'https://prod.cis.cornell.edu/undergraduate-opportunities/minors/artificial-intelligence/ai-minor-requirements', + name: 'Machine Learning', + description: 'Add Core Course 1', + source: + 'https://prod.cis.cornell.edu/undergraduate-opportunities/minors/artificial-intelligence/ai-minor-requirements', checker: includesWithSingleRequirement( 'CS 3780', 'ECE 3200', + 'ECE 4200', 'ORIE 3741', - 'STSCI 3740', - //TODO: add credit for prev codes ie: cs 3780 was formerly 4780 + 'ORIE 4741', + 'STSCI 3740' ), fulfilledBy: 'courses', perSlotMinCount: [1], slotNames: ['Course'], }, + { - name: 'Foundations of AI: Reasoning', - description: 'CS 3700', - source: 'https://prod.cis.cornell.edu/undergraduate-opportunities/minors/artificial-intelligence/ai-minor-requirements', + name: 'Reasoning', + description: 'Add Core Course 2', + source: + 'https://prod.cis.cornell.edu/undergraduate-opportunities/minors/artificial-intelligence/ai-minor-requirements', checker: includesWithSingleRequirement('CS 3700'), fulfilledBy: 'courses', perSlotMinCount: [1], slotNames: ['Course'], }, { - name: 'Foundations of AI: Human-AI Interaction', - description: 'INFO 4940', + name: 'Human-AI Interaction', + description: 'Add Core Course 3', //TODO: add INFO 3450 exception for students grad in dec 2024 or may 2025 - source: 'https://prod.cis.cornell.edu/undergraduate-opportunities/minors/artificial-intelligence/ai-minor-requirements', + source: + 'https://prod.cis.cornell.edu/undergraduate-opportunities/minors/artificial-intelligence/ai-minor-requirements', checker: includesWithSingleRequirement('INFO 4940'), fulfilledBy: 'courses', perSlotMinCount: [1], slotNames: ['Course'], }, { - name: 'Foundations of AI: Ethics, Governance & Policy', - description: 'ENGRG 3605 or INFO 1260 or PUBPOL 4210', - source: 'https://prod.cis.cornell.edu/undergraduate-opportunities/minors/artificial-intelligence/ai-minor-requirements', + name: 'Ethics, Governance & Policy', + description: 'Add Core Course 4', + source: + 'https://prod.cis.cornell.edu/undergraduate-opportunities/minors/artificial-intelligence/ai-minor-requirements', checker: includesWithSingleRequirement('ENGRG 3605', 'INFO 1260', 'PUBPOL 4210'), fulfilledBy: 'courses', perSlotMinCount: [1], @@ -54,16 +60,52 @@ const aiMinorRequirements: readonly CollegeOrMajorRequirement[] = [ }, { name: 'AI Electives', - description: - 'Two of the following courses.', + description: 'Two of the following courses.', source: 'http://www.cs.cornell.edu/undergrad/rulesandproceduresengineering/choosingyourelectives', - checker: includesWithSingleRequirement('CS 4670', 'CS 4701', 'CS 4740', 'CS 4750', 'CS 4756', 'CS 4782', 'CS 4783', 'CS 4787', 'CS 4789', 'CS 4860', 'ECE 4160', 'ENGRG 3605', 'INFO 1260', 'INFO 3350', 'INFO 3950', 'INFO 4100', 'INFO 4120', 'INFO 4130', 'INFO 4275', 'INFO 4300', 'INFO 4310', 'INFO 4410', 'LING 4424', 'LING 4434', 'MAE 4180', 'MAE 4810', 'NBA 4920', 'ORIE 4160', 'ORIE 4740', 'ORIE 4742', 'PUBPOL 4210', 'PHIL 2621', 'STS 3440', 'STSCI 3110', 'STSCI 4030', 'STSCI 4520', 'STSCI 4750'), + checker: includesWithSingleRequirement( + 'CS 4670', + 'CS 4701', + 'CS 4740', + 'CS 4750', + 'CS 4756', + 'CS 4782', + 'CS 4783', + 'CS 4787', + 'CS 4789', + 'CS 4860', + 'ECE 4160', + 'ENGRG 3605', + 'INFO 1260', + 'INFO 3350', + 'INFO 3950', + 'INFO 4100', + 'INFO 4120', + 'INFO 4130', + 'INFO 4275', + 'INFO 4300', + 'INFO 4310', + 'INFO 4410', + 'LING 4424', + 'LING 4434', + 'MAE 4180', + 'MAE 4810', + 'NBA 4920', + 'ORIE 4160', + 'ORIE 4740', + 'ORIE 4742', + 'PUBPOL 4210', + 'PHIL 2621', + 'STS 3440', + 'STSCI 3110', + 'STSCI 4030', + 'STSCI 4520', + 'STSCI 4750' + ), fulfilledBy: 'courses', perSlotMinCount: [2], slotNames: ['Course'], }, - ]; export default aiMinorRequirements; diff --git a/src/requirements/decorated-requirements.json b/src/requirements/decorated-requirements.json index cd995b2f0..65fe3abc8 100644 --- a/src/requirements/decorated-requirements.json +++ b/src/requirements/decorated-requirements.json @@ -261619,6 +261619,138 @@ } ] }, + "AI": { + "name": "Artificial Intelligence", + "schools": [ + "EN" + ], + "requirements": [ + { + "name": "Machine Learning", + "description": "Add Core Course 1", + "source": "https://prod.cis.cornell.edu/undergraduate-opportunities/minors/artificial-intelligence/ai-minor-requirements", + "fulfilledBy": "courses", + "perSlotMinCount": [ + 1 + ], + "slotNames": [ + "Course" + ], + "courses": [ + [ + 353165, + 358592, + 364588, + 370795 + ] + ] + }, + { + "name": "Reasoning", + "description": "Add Core Course 2", + "source": "https://prod.cis.cornell.edu/undergraduate-opportunities/minors/artificial-intelligence/ai-minor-requirements", + "fulfilledBy": "courses", + "perSlotMinCount": [ + 1 + ], + "slotNames": [ + "Course" + ], + "courses": [ + [ + 358585 + ] + ] + }, + { + "name": "Human-AI Interaction", + "description": "Add Core Course 3", + "source": "https://prod.cis.cornell.edu/undergraduate-opportunities/minors/artificial-intelligence/ai-minor-requirements", + "fulfilledBy": "courses", + "perSlotMinCount": [ + 1 + ], + "slotNames": [ + "Course" + ], + "courses": [ + [ + 364529 + ] + ] + }, + { + "name": "Ethics, Governance & Policy", + "description": "Add Core Course 4", + "source": "https://prod.cis.cornell.edu/undergraduate-opportunities/minors/artificial-intelligence/ai-minor-requirements", + "fulfilledBy": "courses", + "perSlotMinCount": [ + 1 + ], + "slotNames": [ + "Course" + ], + "courses": [ + [ + 370603, + 373991 + ] + ] + }, + { + "name": "AI Electives", + "description": "Two of the following courses.", + "source": "http://www.cs.cornell.edu/undergrad/rulesandproceduresengineering/choosingyourelectives", + "fulfilledBy": "courses", + "perSlotMinCount": [ + 2 + ], + "slotNames": [ + "Course" + ], + "courses": [ + [ + 350173, + 352495, + 353163, + 353732, + 358578, + 358587, + 358589, + 363681, + 363853, + 364083, + 364457, + 364488, + 365657, + 366043, + 367112, + 367628, + 368403, + 368727, + 369514, + 370109, + 370219, + 370449, + 370458, + 370464, + 370603, + 370809, + 371174, + 371411, + 371912, + 372365, + 372374, + 372982, + 372998, + 373029, + 373885, + 373991 + ] + ] + } + ] + }, "ANIMALSCIENCE": { "name": "Animal Science", "schools": [ From 08ab9c487e2f946420068d33ae8e34921852f1e3 Mon Sep 17 00:00:00 2001 From: "nmp79@cornell.edu" Date: Tue, 29 Oct 2024 15:57:43 -0400 Subject: [PATCH 4/4] AI 3450 migration --- src/data/index.ts | 7 +++--- src/data/minors/ai.ts | 22 +++++++++++++++++-- .../requirement-data-id.test.ts.snap | 5 +++++ 3 files changed, 29 insertions(+), 5 deletions(-) diff --git a/src/data/index.ts b/src/data/index.ts index 4e6b3a90b..a69725562 100644 --- a/src/data/index.ts +++ b/src/data/index.ts @@ -51,7 +51,7 @@ import psychRequirements, { psychAdvisors } from './majors/psych'; import stsRequirements, { stsAdvisors } from './majors/sts'; import vienRequirements, { vienAdvisors } from './majors/vien'; import aerospaceMinorRequirements, { aerospaceMinorAdvisors } from './minors/aerospace'; -import aiMinorRequirements from './minors/ai'; +import aiMinorRequirements, { aiMigrations } from './minors/ai'; import animalSciRequirements, { animalSciAdvisors } from './minors/animal-sci'; import appliedMathMinorRequirements, { appliedMathMinorAdvisors } from './minors/applied-math'; import buMinorRequirements, { buMinorAdvisors } from './minors/bu'; @@ -456,9 +456,10 @@ const json: RequirementsJson = { }, AI: { name: 'Artificial Intelligence', - schools: ['EN'], //TODO: add Bowers + schools: ['EN'], requirements: aiMinorRequirements, - advisors: csAdvisors, //TODO: no set advisor for AI minor + advisors: csAdvisors, + migrations: aiMigrations, abbrev: 'AI', }, diff --git a/src/data/minors/ai.ts b/src/data/minors/ai.ts index 3fd4a47d2..f102c1d3b 100644 --- a/src/data/minors/ai.ts +++ b/src/data/minors/ai.ts @@ -1,9 +1,10 @@ -import { CollegeOrMajorRequirement, Course } from '../../requirements/types'; +import { CollegeOrMajorRequirement, Course, RequirementMigration } from '../../requirements/types'; import { includesWithSingleRequirement, courseMatchesCodeOptions, ifCodeMatch, courseMatchesCode, + includesWithSubRequirements, } from '../../requirements/checkers'; import { AdvisorGroup } from '../../tools/advisors/types'; import { lastNameRange } from '../../tools/advisors/checkers'; @@ -40,7 +41,6 @@ const aiMinorRequirements: readonly CollegeOrMajorRequirement[] = [ { name: 'Human-AI Interaction', description: 'Add Core Course 3', - //TODO: add INFO 3450 exception for students grad in dec 2024 or may 2025 source: 'https://prod.cis.cornell.edu/undergraduate-opportunities/minors/artificial-intelligence/ai-minor-requirements', checker: includesWithSingleRequirement('INFO 4940'), @@ -108,6 +108,24 @@ const aiMinorRequirements: readonly CollegeOrMajorRequirement[] = [ }, ]; +export const aiMigrations: RequirementMigration[] = [ + { + entryYear: 2021, // This requirement only for students graduating in Dec 2024 or May 2025 + type: 'Modify', + fieldName: 'Human-AI Interaction', + newValue: { + name: 'Human-AI Interaction', + description: 'INFO 3450', + source: + 'https://prod.cis.cornell.edu/undergraduate-opportunities/minors/artificial-intelligence/ai-minor-requirements', + checker: includesWithSubRequirements(['INFO 3450']), + fulfilledBy: 'courses', + perSlotMinCount: [1], + slotNames: ['INFO 3450'], + }, + }, +]; + export default aiMinorRequirements; // export const aiMinorAdvisors: AdvisorGroup = { diff --git a/src/requirements/__test__/__snapshots__/requirement-data-id.test.ts.snap b/src/requirements/__test__/__snapshots__/requirement-data-id.test.ts.snap index ccbaa1606..0f8cbbd73 100644 --- a/src/requirements/__test__/__snapshots__/requirement-data-id.test.ts.snap +++ b/src/requirements/__test__/__snapshots__/requirement-data-id.test.ts.snap @@ -370,6 +370,11 @@ Array [ "Major-VIEN-Viticulture & Enology Core", "Minor-AEROSPACE-Group A", "Minor-AEROSPACE-Group B or C", + "Minor-AI-AI Electives", + "Minor-AI-Ethics, Governance & Policy", + "Minor-AI-Human-AI Interaction", + "Minor-AI-Machine Learning", + "Minor-AI-Reasoning", "Minor-ANIMALSCIENCE-Categories", "Minor-APPLIEDECON-Applied Economics", "Minor-APPLIEDECON-Economic Theory or Practice",