From ae296451886362d5e60ead1abb8d6f3c46d482ae Mon Sep 17 00:00:00 2001 From: RyanGumlia Date: Wed, 7 Aug 2024 17:50:12 -0400 Subject: [PATCH 1/8] uhhh pins? --- backend/clone.py | 126 ++++++++++++++++-- backend/program.py | 5 +- frontend/src/App.tsx | 48 +++---- .../commons/components/icons/CourseIcon.tsx | 2 +- frontend/src/commons/mock/MockStudent.ts | 86 +++++++++++- frontend/src/commons/types/TypeUser.ts | 10 +- frontend/src/navbar/NavBar.module.css | 12 ++ frontend/src/navbar/NavBar.tsx | 19 +++ frontend/src/navbar/PageLinks.tsx | 26 +--- frontend/src/navbar/account/MeDropdown.tsx | 2 +- .../navbar/{ => misc}/InfoButton.module.css | 0 frontend/src/navbar/{ => misc}/InfoButton.tsx | 0 .../navbar/{ => misc}/Typography.module.css | 0 frontend/src/navbar/{ => misc}/Typography.tsx | 0 frontend/src/pages/Graduation/Graduation.tsx | 27 ++-- .../Graduation/components/Distribution.tsx | 2 +- frontend/src/pages/Majors/Majors.tsx | 48 ++----- .../pages/Majors/metadata/Metadata.module.css | 17 ++- .../src/pages/Majors/metadata/Metadata.tsx | 89 +++++++++---- .../src/pages/Majors/pinned/Pinned.module.css | 72 ++++++++++ frontend/src/pages/Majors/pinned/Pinned.tsx | 112 ++++++++++++++++ 21 files changed, 565 insertions(+), 138 deletions(-) create mode 100644 frontend/src/navbar/NavBar.tsx rename frontend/src/navbar/{ => misc}/InfoButton.module.css (100%) rename frontend/src/navbar/{ => misc}/InfoButton.tsx (100%) rename frontend/src/navbar/{ => misc}/Typography.module.css (100%) rename frontend/src/navbar/{ => misc}/Typography.tsx (100%) create mode 100644 frontend/src/pages/Majors/pinned/Pinned.module.css create mode 100644 frontend/src/pages/Majors/pinned/Pinned.tsx diff --git a/backend/clone.py b/backend/clone.py index c0f22bc..80c0221 100644 --- a/backend/clone.py +++ b/backend/clone.py @@ -6,13 +6,12 @@ { "metadata": { "name": "Computer Science", - "abbreviation": "CPSC", "degreeType": "BACH_ART", "stats": { - "courses": 10, + "courses": 12, "rating": 0, "workload": 0, - "type": "QR" + "type": "So" }, "students": 0, "about": ( @@ -42,8 +41,8 @@ "flexible": True, "courses": [ { - "status": "DA_COMPLETE", - "term": 202203, + "status": "NA", + "term": 0, "course": { "codes": ["CPSC 201"], "title": "Introduction to Computer Science", @@ -88,8 +87,8 @@ "flexible": False, "courses": [ { - "status": "DA_COMPLETE", - "term": 202301, + "status": "NA", + "term": 0, "course": { "codes": ["CPSC 223"], "title": "Data Structures", @@ -105,8 +104,8 @@ "flexible": False, "courses": [ { - "status": "DA_COMPLETE", - "term": 202401, + "status": "NA", + "term": 0, "course": { "codes": ["CPSC 323"], "title": "Introduction to Systems Programming and Computer Organization", @@ -156,3 +155,112 @@ } ] } + + + +ECON_Program = { + "name": "Economics", + "abbreviation": "ECON", + "degrees": [ + { + "metadata": { + "name": "Economics", + "degreeType": "BACH_ART", + "stats": { + "courses": 10, + "rating": 0, + "workload": 0, + "type": "So" + }, + "students": 0, + "about": "Economics is much broader than the study of recessions and inflation or stocks and bonds. Economists study decision making and incentives such as how taxes create incentives for labor market and savings behavior. Many current public policy debates concern questions of economics, including causes and consequences of inequality and gender and racial wage gaps; how to address poverty; the impact of immigration and trade on the well-being of a country’s citizens; the cause of the Great Recession; and how to predict future downturns.", + "dus": { + "name": "Giovanni Maggi", + "address": "115 Prospect St., Rosenkranz Hall, Room 334", + "email": "cpsc.yale.edu" + }, + "catologLink": "https://catalog.yale.edu/ycps/subjects-of-instruction/economics/", + "wesbiteLink": "economics.yale.edu/undergraduate-program" + }, + "codesCore": ["ECON 490"], + "codesAdded": [], + "requirements": [ + { + "name": "ELECTIVES", + "description": "Usually, courses with course numbers above 200 work for this requirement.", + "subsections": [ + { + "flexible": True, + "courses": [] + } + ] + }, + { + "name": "SENIOR REQUIREMENT", + "subsections": [ + { + "flexible": False, + "courses": [ + { + "status": "NA", + "term": 0, + "course": { + "codes": ["ECON 490"], + "title": "Project", + "credit": 1, + "areas": [], + "skills": ["QR"], + "seasons": ["Fall", "Spring"] + } + } + ] + } + ] + } + ] + } + ] +} + + +HIST_Program = { + "name": "History", + "abbreviation": "HIST", + "degrees": [ + { + "metadata": { + "name": "History", + "degreeType": "BACH_ART", + "stats": { + "courses": 10, + "rating": 0, + "workload": 0, + "type": "So" + }, + "students": 0, + "about": "Economics is much broader than the study of recessions and inflation or stocks and bonds. Economists study decision making and incentives such as how taxes create incentives for labor market and savings behavior. Many current public policy debates concern questions of economics, including causes and consequences of inequality and gender and racial wage gaps; how to address poverty; the impact of immigration and trade on the well-being of a country’s citizens; the cause of the Great Recession; and how to predict future downturns.", + "dus": { + "name": "Giovanni Maggi", + "address": "115 Prospect St., Rosenkranz Hall, Room 334", + "email": "cpsc.yale.edu" + }, + "catologLink": "https://catalog.yale.edu/ycps/subjects-of-instruction/economics/", + "wesbiteLink": "economics.yale.edu/undergraduate-program" + }, + "codesCore": [], + "codesAdded": [], + "requirements": [ + { + "name": "ELECTIVES", + "description": "Usually, courses with course numbers above 200 work for this requirement.", + "subsections": [ + { + "flexible": True, + "courses": [] + } + ] + } + ] + } + ] +} diff --git a/backend/program.py b/backend/program.py index 8f38243..5847831 100644 --- a/backend/program.py +++ b/backend/program.py @@ -1,8 +1,8 @@ from copy import deepcopy -from clone import CPSC_Program +from clone import CPSC_Program, ECON_Program, HIST_Program -all_programs = [CPSC_Program] +all_programs = [CPSC_Program, ECON_Program, HIST_Program] def clone_programs(studentCourses): # Extract course codes from student courses @@ -21,7 +21,6 @@ def clone_programs(studentCourses): for course in subsection['courses']: for studentCourse in studentCourses: if set(course['course']['codes']).intersection(studentCourse['course']['codes']): - # Update course's term and status if there's a match course['term'] = studentCourse['term'] course['status'] = studentCourse['status'] break # Break after updating to avoid multiple updates diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index c5b7a37..a096e26 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -15,52 +15,52 @@ import Majors from "./pages/Majors/Majors"; import { getAuth, getUser, syncUser } from "./api/api"; import { AuthState, nullAuthState, User, nullUser } from "./commons/types/TypeUser"; -// import { Ryan } from "./commons/mock/MockStudent"; +import { Ryan } from "./commons/mock/MockStudent"; function App(){ - const [auth, setAuth] = useState(nullAuthState); - // const [auth, setAuth] = useState({ loggedIn: true, onboard: true }); + // const [auth, setAuth] = useState(nullAuthState); + const [auth, setAuth] = useState({ loggedIn: true, onboard: true }); const checkAuth = async () => { const response = await getAuth(); - console.log("checkAuth() -> API: getAuth() -> ", response); + // console.log("checkAuth() -> API: getAuth() -> ", response); setAuth({ loggedIn: response.loggedIn, onboard: response.onboard, }); }; - const [user, setUser] = useState(nullUser); - // const [user, setUser] = useState(Ryan); + // const [user, setUser] = useState(nullUser); + const [user, setUser] = useState(Ryan); const initUser = async () => { const response = await getUser(); - console.log("initUser() -> API: getUser() -> ", response) + // console.log("initUser() -> API: getUser() -> ", response) setUser({ netID: response.netID, onboard: response.onboard, name: response.name, - degrees: response.degrees, + studentDegrees: response.studentDegrees, studentCourses: response.studentCourses, programs: response.programs, language: response.language }); }; - useEffect(() => { - checkAuth(); - }, []); + // useEffect(() => { + // checkAuth(); + // }, []); - useEffect(() => { - if(auth.loggedIn && auth.onboard){ - initUser(); - } - }, [auth]); + // useEffect(() => { + // if(auth.loggedIn && auth.onboard){ + // initUser(); + // } + // }, [auth]); - useEffect(() => { - if(auth.loggedIn && auth.onboard){ - syncUser(user); - } - }, [user]); + // useEffect(() => { + // if(auth.loggedIn && auth.onboard){ + // syncUser(user); + // } + // }, [user]); const ProtectedRoute = (element: JSX.Element) => { if(!auth.loggedIn){ @@ -79,9 +79,9 @@ function App(){ )}/> : (!auth.onboard ? : )}/> : }/> - )}/> - )}/> - )}/> + )}/> + )}/> + )}/> diff --git a/frontend/src/commons/components/icons/CourseIcon.tsx b/frontend/src/commons/components/icons/CourseIcon.tsx index b9eeef6..18bf4b6 100644 --- a/frontend/src/commons/components/icons/CourseIcon.tsx +++ b/frontend/src/commons/components/icons/CourseIcon.tsx @@ -1,7 +1,7 @@ import React from "react"; import styles from "./CourseIcon.module.css"; import "react-tooltip/dist/react-tooltip.css"; -import { Course, StudentCourse, AmbiCourse } from "../../types/TypeCourse"; +import { StudentCourse } from "../../types/TypeCourse"; import img_fall from "./../../images/fall.png"; import img_spring from "./../../images/spring.png"; diff --git a/frontend/src/commons/mock/MockStudent.ts b/frontend/src/commons/mock/MockStudent.ts index 81b6354..0153f8a 100644 --- a/frontend/src/commons/mock/MockStudent.ts +++ b/frontend/src/commons/mock/MockStudent.ts @@ -3,7 +3,7 @@ import { Course } from "../types/TypeCourse"; export const EMPTYCOURSE: Course = { codes: ["N/A"], title: "Title NULL", credit: 1, areas: [], skills: [], seasons: [] }; export const Ryan = { - "degrees": [], + "studentDegrees": [], "language": "Spanish, L5", "name": "Ryan", "netID": "rgg32", @@ -34,7 +34,6 @@ export const Ryan = { "students": 0, "wesbiteLink": "http://cpsc.yale.edu" }, - "codesCore": ["CPSC 201", "CPSC 202", "MATH 244", "CPSC 223", "CPSC 323", "CPSC 365", "CPSC 490"], "codesAdded": [], "requirements": [ @@ -125,12 +124,91 @@ export const Ryan = { ] } ] - } + }, + ], + }, + { + "name": "Economics", + "abbreviation": "ECON", + "degrees": [ + { + "metadata": { + "about": "Economics is much broader than the study of recessions and inflation or stocks and bonds. Economists study decision making and incentives such as how taxes create incentives for labor market and savings behavior. Many current public policy debates concern questions of economics, including causes and consequences of inequality and gender and racial wage gaps; how to address poverty; the impact of immigration and trade on the well-being of a country’s citizens; the cause of the Great Recession; and how to predict future downturns.", + "catologLink": "https://catalog.yale.edu/ycps/subjects-of-instruction/computer-science/", + "degreeType": "BACH_ART", + "dus": { + "address": "", + "email": "", + "name": "" + }, + "name": "Economics", + "stats": { + "courses": 10, + "rating": 0, + "type": "QR", + "workload": 0 + }, + "students": 0, + "wesbiteLink": "" + }, + "codesCore": [], + "codesAdded": [], + "requirements": [ + { + "name": "ELECTIVES", + "subsections": [ + { + "flexible": true, + "courses": [], + } + ] + }, + ] + }, + ], + }, + { + "name": "History", + "abbreviation": "HIST", + "degrees": [ + { + "metadata": { + "about": "The History major is for students who understand that shaping the future requires knowing the past. History courses explore many centuries of human experimentation and ingenuity, from the global to the individual scale. History majors learn to be effective storytellers and analysts, and to craft arguments that speak to broad audiences. They make extensive use of Yale’s vast library resources to create pioneering original research projects. Students of history learn to think about politics and government, sexuality, the economy, cultural and intellectual life, war and society, and other themes in broadly humanistic—rather than narrowly technocratic—ways.", + "catologLink": "https://catalog.yale.edu/ycps/subjects-of-instruction/computer-science/", + "degreeType": "BACH_ART", + "dus": { + "address": "", + "email": "", + "name": "" + }, + "name": "History", + "stats": { + "courses": 10, + "rating": 0, + "type": "QR", + "workload": 0 + }, + "students": 0, + "wesbiteLink": "" + }, + "codesCore": [], + "codesAdded": [], + "requirements": [ + { + "name": "ELECTIVES", + "subsections": [ + { + "flexible": true, + "courses": [], + } + ] + }, + ] + }, ], } ], - "studentCourses": [ { "course": { diff --git a/frontend/src/commons/types/TypeUser.ts b/frontend/src/commons/types/TypeUser.ts index 9a5f05b..f1714d6 100644 --- a/frontend/src/commons/types/TypeUser.ts +++ b/frontend/src/commons/types/TypeUser.ts @@ -9,11 +9,17 @@ export interface Year { spring: Array; } +export interface StudentDegree { + status: string; // DA | ADD | PIN + programIndex: number; + degreeIndex: number; +} + export interface User { netID: string; onboard: boolean; name: string; - degrees: string[]; + studentDegrees: StudentDegree[]; studentCourses: StudentCourse[]; programs: Program[]; language: string; @@ -23,7 +29,7 @@ export const nullUser: User = { netID: "", onboard: false, name: "", - degrees: [], + studentDegrees: [], studentCourses: [], programs: [], language: "", diff --git a/frontend/src/navbar/NavBar.module.css b/frontend/src/navbar/NavBar.module.css index f3386cb..9356693 100644 --- a/frontend/src/navbar/NavBar.module.css +++ b/frontend/src/navbar/NavBar.module.css @@ -3,6 +3,11 @@ flex-direction: row; } +.Row { + display: flex; + flex-direction: row; +} + .NavBar { position: fixed; z-index: 2; @@ -39,3 +44,10 @@ margin-left: 10px; transition: color 0.3s; } + +.Logo { + width: 150px; + height: auto; + margin-right: 10px; + margin-left: 20px; +} \ No newline at end of file diff --git a/frontend/src/navbar/NavBar.tsx b/frontend/src/navbar/NavBar.tsx new file mode 100644 index 0000000..42975ce --- /dev/null +++ b/frontend/src/navbar/NavBar.tsx @@ -0,0 +1,19 @@ + +import Style from "./NavBar.module.css" +import LOGO from "./../commons/images/ma_logo.png"; + +import PageLinks from "./PageLinks"; + +function Bar(props: { utility?: React.ReactNode }) { + return ( +
+
+ + {props.utility} +
+ +
+ ); +} + +export default Bar; diff --git a/frontend/src/navbar/PageLinks.tsx b/frontend/src/navbar/PageLinks.tsx index 50258dd..27ebf64 100644 --- a/frontend/src/navbar/PageLinks.tsx +++ b/frontend/src/navbar/PageLinks.tsx @@ -1,37 +1,23 @@ + import React from "react"; import styles from "./NavBar.module.css"; import { NavLink } from "react-router-dom"; function PageLinks() { - return ( + return(
- - isActive ? styles.activeLink : styles.dormantLink - } - > + isActive ? styles.activeLink : styles.dormantLink}> Graduation - - isActive ? styles.activeLink : styles.dormantLink - } - > + isActive ? styles.activeLink : styles.dormantLink}> Courses - - isActive ? styles.activeLink : styles.dormantLink - } - > + isActive ? styles.activeLink : styles.dormantLink}> Majors
); } -export default PageLinks; \ No newline at end of file +export default PageLinks; diff --git a/frontend/src/navbar/account/MeDropdown.tsx b/frontend/src/navbar/account/MeDropdown.tsx index a2f4ba7..7fab458 100644 --- a/frontend/src/navbar/account/MeDropdown.tsx +++ b/frontend/src/navbar/account/MeDropdown.tsx @@ -12,7 +12,7 @@ import { scrollToTop, useComponentVisible, } from "../../commons/utilities/display"; -import { SurfaceComponent, TextComponent, HoverText } from "../Typography"; +import { SurfaceComponent, TextComponent, HoverText } from "../misc/Typography"; function DropdownItem({ icon: Icon, diff --git a/frontend/src/navbar/InfoButton.module.css b/frontend/src/navbar/misc/InfoButton.module.css similarity index 100% rename from frontend/src/navbar/InfoButton.module.css rename to frontend/src/navbar/misc/InfoButton.module.css diff --git a/frontend/src/navbar/InfoButton.tsx b/frontend/src/navbar/misc/InfoButton.tsx similarity index 100% rename from frontend/src/navbar/InfoButton.tsx rename to frontend/src/navbar/misc/InfoButton.tsx diff --git a/frontend/src/navbar/Typography.module.css b/frontend/src/navbar/misc/Typography.module.css similarity index 100% rename from frontend/src/navbar/Typography.module.css rename to frontend/src/navbar/misc/Typography.module.css diff --git a/frontend/src/navbar/Typography.tsx b/frontend/src/navbar/misc/Typography.tsx similarity index 100% rename from frontend/src/navbar/Typography.tsx rename to frontend/src/navbar/misc/Typography.tsx diff --git a/frontend/src/pages/Graduation/Graduation.tsx b/frontend/src/pages/Graduation/Graduation.tsx index ba3dc7d..7708bd9 100644 --- a/frontend/src/pages/Graduation/Graduation.tsx +++ b/frontend/src/pages/Graduation/Graduation.tsx @@ -3,12 +3,14 @@ import { useState } from "react"; import styles from "./Graduation.module.css"; import GraduationDistribution from "./components/Distribution"; -import GraduationOverview from "./components/Overview"; +// import GraduationOverview from "./components/Overview"; import nav_styles from "./../../navbar/NavBar.module.css"; import img_logo from "./../../commons/images/ma_logo.png"; import PageLinks from "./../../navbar/PageLinks"; +import { User } from "../../commons/types/TypeUser"; + function NavBar() { return (
@@ -21,15 +23,15 @@ function NavBar() { ); } -function Recommendations() { - return( -
-
Hello, Ryn!
-
- ); -} +// function Recommendations() { +// return( +//
+ +//
+// ); +// } -function Graduation(){ +function Graduation(props: { user: User, setUser: Function }){ const UserYear = () => { return 2; @@ -45,7 +47,12 @@ function Graduation(){
- + {/* */} +
+
+ Hello, {props.user.name}! +
+
diff --git a/frontend/src/pages/Graduation/components/Distribution.tsx b/frontend/src/pages/Graduation/components/Distribution.tsx index fb85638..7511758 100644 --- a/frontend/src/pages/Graduation/components/Distribution.tsx +++ b/frontend/src/pages/Graduation/components/Distribution.tsx @@ -6,7 +6,7 @@ import styles from "./../Graduation.module.css"; import DistributionBox from "../../../commons/components/courses/DistributionBoxLarge"; import { StudentCourseIcon } from "../../../commons/components/icons/CourseIcon"; -import InfoButton from "../../../navbar/InfoButton"; +import InfoButton from "../../../navbar/misc/InfoButton"; import { StudentCourse } from "../../../commons/types/TypeCourse"; diff --git a/frontend/src/pages/Majors/Majors.tsx b/frontend/src/pages/Majors/Majors.tsx index 67e04be..ba480f6 100644 --- a/frontend/src/pages/Majors/Majors.tsx +++ b/frontend/src/pages/Majors/Majors.tsx @@ -1,48 +1,25 @@ import { useState } from "react"; - import Style from "./Majors.module.css"; -import NavStyle from "./../../navbar/NavBar.module.css"; - -import Logo from "./../../commons/images/ma_logo.png"; -import PageLinks from "./../../navbar/PageLinks"; - -import Requirements from "./requirements/Requirements"; -import Metadata from "./metadata/Metadata"; - import { User } from "../../commons/types/TypeUser"; -import { Program } from "./../../commons/types/TypeProgram"; -function NavBar() { - return ( -
-
- -
- -
- ); -} +import NavBar from "./../../navbar/NavBar" +import Pinned from "./pinned/Pinned" +import Metadata from "./metadata/Metadata"; +import Requirements from "./requirements/Requirements"; function Majors(props: { user: User, setUser: Function }){ const [currdex, setCurrdex] = useState(0); const [currDegree, setCurrDegree] = useState(0); - let programs: Program[] = props.user.programs; - - const alterCurrdex = (dir: number) => { - if(programs && programs.length > 0){ - setCurrdex((currdex + dir + programs.length) % programs.length); - setCurrDegree(0); - } + const alterCurrdex = (dir: number) => { + setCurrdex((currdex + dir + props.user.programs.length) % props.user.programs.length); + setCurrDegree(0); }; const seeProgram = (dir: number) => { - if(programs && programs.length > 0){ - return programs[(currdex + dir + programs.length) % programs.length]; - } - return null; + return props.user.programs[(currdex + dir + props.user.programs.length) % props.user.programs.length]; }; const alterCurrDegree = (num: number) => { @@ -51,10 +28,13 @@ function Majors(props: { user: User, setUser: Function }){ return (
- + }/>
diff --git a/frontend/src/pages/Majors/metadata/Metadata.module.css b/frontend/src/pages/Majors/metadata/Metadata.module.css index 6c50164..adf4b8b 100644 --- a/frontend/src/pages/Majors/metadata/Metadata.module.css +++ b/frontend/src/pages/Majors/metadata/Metadata.module.css @@ -53,10 +53,25 @@ } .majorContainer { - padding: 20px; + padding: 20px 20px 20px 0; width: auto; height: 400px; background-color: white; margin-right: 10px; /* border: 1px solid black; */ +} + +.thumbtack { + font-size: 28px; + margin-right: 10px; + cursor: pointer; + transition: opacity 0.2s; +} + +.thumbtack:hover { + opacity: 0.7; /* Slightly lighter on hover */ +} + +.thumbtack:active { + opacity: 0.5; /* Even lighter on click */ } \ No newline at end of file diff --git a/frontend/src/pages/Majors/metadata/Metadata.tsx b/frontend/src/pages/Majors/metadata/Metadata.tsx index c99bc32..b52f1a1 100644 --- a/frontend/src/pages/Majors/metadata/Metadata.tsx +++ b/frontend/src/pages/Majors/metadata/Metadata.tsx @@ -2,27 +2,52 @@ import React, { useState, useEffect } from "react"; import Style from "./Metadata.module.css"; +import { User } from "../../../commons/types/TypeUser"; + import { Button } from "react-bootstrap"; import { Link } from 'react-router-dom'; import lgsIcon from "../../../commons/images/little_guys.png"; // import img_plus from "../../../commons/images/plus.png"; -// import img_arrowup from "../../../commons/images/arrowup.png"; -// import img_arrowdown from "../../../commons/images/arrowdown.png"; import { Program, Degree } from "../../../commons/types/TypeProgram"; -function MetadataTopshelf(props: { program: Program, degree: Degree }){ - return( +function MetadataTopshelf(props: { user: User, setUser: Function, currProgram: number, currDegree: number, program: Program, degree: Degree }) { + + const pinProgram = () => { + const { currProgram, currDegree, user, setUser } = props; + const existingDegree = user.studentDegrees.find(degree => degree.programIndex === currProgram); + + if (!existingDegree) { + const newStudentDegree = { + status: "PIN", + programIndex: currProgram, + degreeIndex: currDegree + }; + + const updatedUser = { + ...user, + studentDegrees: [...user.studentDegrees, newStudentDegree] + }; + + setUser(updatedUser); + } + }; + + return (
- {/* */} +
+ 📌 +
+
{props.degree.metadata.name}
- +
{props.degree.metadata.students}
MAJOR
@@ -97,24 +122,35 @@ function MetadataStats(degree: Degree){ ); } -function MetadataContent(props: {program: Program, whichDegree: number, alterCurrDegree: Function}){ +function MetadataContent(props: { user: User, setUser: Function, currProgram: number, program: Program, whichDegree: number, alterCurrDegree: Function }){ let currDegree = props.program.degrees[props.whichDegree]; return (
- - - - -
ABOUT
-
{currDegree.metadata.about}
- -
DUS
-
{currDegree.metadata.dus.name}; {currDegree.metadata.dus.address}
- -
-
MAJOR CATALOG
-
MAJOR WEBSITE
-
+ + +
+ + + +
+ ABOUT +
+
+ {currDegree.metadata.about} +
+ +
+ DUS +
+
+ {currDegree.metadata.dus.name}; {currDegree.metadata.dus.address} +
+ +
+
MAJOR CATALOG
+
MAJOR WEBSITE
+
+
); } @@ -123,7 +159,6 @@ function MetadataScrollButton(props: {scrollProgram: Function, seeProgram: Funct return( -
+
{renderedYears}
diff --git a/frontend/src/pages/Courses/utils/CoursesUtils.ts b/frontend/src/pages/Courses/CoursesUtils.ts similarity index 95% rename from frontend/src/pages/Courses/utils/CoursesUtils.ts rename to frontend/src/pages/Courses/CoursesUtils.ts index 09dd494..9927671 100644 --- a/frontend/src/pages/Courses/utils/CoursesUtils.ts +++ b/frontend/src/pages/Courses/CoursesUtils.ts @@ -1,6 +1,6 @@ -import { User, Year } from "../../../commons/types/TypeUser"; -import { StudentCourse } from "../../../commons/types/TypeCourse"; +import { User, Year } from "../../commons/types/TypeUser"; +import { StudentCourse } from "../../commons/types/TypeCourse"; export const yearTreeify = (courses: StudentCourse[]): Year[] => { const academicYears: { [key: number]: Year } = {}; diff --git a/frontend/src/pages/Courses/components/AddButton.tsx b/frontend/src/pages/Courses/components/AddButton.tsx deleted file mode 100644 index 30541f0..0000000 --- a/frontend/src/pages/Courses/components/AddButton.tsx +++ /dev/null @@ -1,169 +0,0 @@ - -import { useRef, useState, useEffect } from "react"; -import styles from "./../Courses.module.css"; - -import { getCTCourses } from "./../../../api/api"; -import { StudentCourse } from "../../../commons/types/TypeCourse"; -import { User } from "../../../commons/types/TypeUser"; -import { xCheckMajorsAndSet } from "../utils/CoursesUtils"; - - -const termMappings: { [key: string]: number } = { - "Fall 2022": 202203, - "Spring 2023": 202301, - "Fall 2023": 202303, - "Spring 2024": 202401, - "Fall 2024": 202403, - "Spring 2025": 202501, -}; -const terms = Object.keys(termMappings); - -function TermSelector(props: { selectedTerm: number, onSelectTerm: Function }) { - - const [dropVis, setDropVis] = useState(false); - const termSelectRef = useRef(null); - - const toggleDrop = () => { - setDropVis(!dropVis); - }; - - const selectTerm = (term: string) => { - props.onSelectTerm(termMappings[term]); - setDropVis(false); - }; - - const handleClickOutside = (event: MouseEvent) => { - if (termSelectRef.current && !termSelectRef.current.contains(event.target as Node)) { - setDropVis(false); - } - }; - - useEffect(() => { - if (dropVis) { - document.addEventListener('click', handleClickOutside); - } else { - document.removeEventListener('click', handleClickOutside); - } - return () => { - document.removeEventListener('click', handleClickOutside); - }; - }, [dropVis]); - - return ( -
- {Object.keys(termMappings).find(key => termMappings[key] === props.selectedTerm)} - {dropVis && ( -
- {terms.map((term, index) => ( -
selectTerm(term)}> - {term} -
- ))} -
- )} -
- ); -} - -function AddButton(props: { term: number, user: User, setUser: Function }) { - - const inputRef = useRef(null); - const [active, setActive] = useState(false); - const [searchData, setSearchData] = useState([]); - const [selectedTerm, setSelectedTerm] = useState(props.term); - - useEffect(() => { - if(active){ - inputRef.current?.focus(); - const cachedData = localStorage.getItem(`courses-${selectedTerm}`); - if(cachedData){ - setSearchData(JSON.parse(cachedData)); - console.log("Loaded From Cache"); - }else{ - getCTCourses(selectedTerm.toString()).then(data => { - setSearchData(data); - try { - localStorage.setItem(`courses-${selectedTerm}`, JSON.stringify(data)); - console.log("Retrieved & Cached"); - } catch(e: any) { - if (e.name === 'QuotaExceededError' || e.code === 22) { - console.error("Quota Exceeded: ", e); - } else { - console.error("Error Unknown: ", e); - } - } - }).catch(error => { - console.error("Error Retrieving: ", error); - }); - } - } - }, [active, selectedTerm]); - - const activate = () => { - setActive(true); - }; - - const deactivate = () => { - setActive(false); - }; - - const handleKeyPress = (event: React.KeyboardEvent) => { - if (event.key === "Enter" && inputRef.current) { - const code = inputRef.current.value; - const offering = searchData.find(course => course["course_code"] === code); - - if (offering) { - const codes = offering["listings"]; - const title = offering["title"]; - const credit = offering["credits"]; - const areas = offering["areas"]; - const skills = offering["skills"]; - const seasons = ["Fall", "Spring"]; - const course = { codes, title, credit, areas, skills, seasons }; - const status = (selectedTerm === props.term) ? "MA_VALID" : "MA_HYPOTHETICAL"; - const term = props.term; - const newCourse: StudentCourse = { course, term, status }; - - const isDuplicate = props.user.studentCourses.some(existingCourse => - existingCourse.course.title === newCourse.course.title && - existingCourse.term === newCourse.term - ); - - if(isDuplicate){ - console.log("Duplicate"); - }else{ - xCheckMajorsAndSet(props.user, newCourse, props.setUser); - deactivate(); - } - } - } - }; - - return ( -
- {!active ? ( -
- + -
- ) : ( -
-
-
-
- - -
-
- )} -
- ); -} - -export default AddButton; \ No newline at end of file diff --git a/frontend/src/pages/Courses/year/YearBox.module.css b/frontend/src/pages/Courses/year/YearBox.module.css new file mode 100644 index 0000000..c51d845 --- /dev/null +++ b/frontend/src/pages/Courses/year/YearBox.module.css @@ -0,0 +1,18 @@ + +.row { + display: flex; + flex-direction: row; +} + +.Grade { + font-weight: 600; + font-size: 25px; + margin-right: 10px; +} + +.yearComponent { + display: flex; + flex-direction: column; + margin-bottom: 20px; + transition: transform 0.5s ease, height 0.5s ease, width 0.5s ease; +} \ No newline at end of file diff --git a/frontend/src/pages/Courses/components/YearBox.tsx b/frontend/src/pages/Courses/year/YearBox.tsx similarity index 76% rename from frontend/src/pages/Courses/components/YearBox.tsx rename to frontend/src/pages/Courses/year/YearBox.tsx index b864196..1f0faee 100644 --- a/frontend/src/pages/Courses/components/YearBox.tsx +++ b/frontend/src/pages/Courses/year/YearBox.tsx @@ -1,8 +1,8 @@ -import styles from "./../Courses.module.css"; -import SemesterBox from "./SemesterBox"; +import React from "react"; +import Style from "./YearBox.module.css"; +import SemesterBox from "./semester/SemesterBox"; import { User, Year } from "../../../commons/types/TypeUser"; -// import { StudentCourse } from "../../../commons/types/TypeCourse"; const convertGrade = (grade: number) => { switch (grade) { @@ -22,10 +22,10 @@ const convertGrade = (grade: number) => { export default function YearBox(props: {year: Year, edit: boolean, user: User, setUser: Function }){ return( -
+
-
-
+
+
{convertGrade(props.year["grade"])}
@@ -33,7 +33,7 @@ export default function YearBox(props: {year: Year, edit: boolean, user: User, s
-
+
diff --git a/frontend/src/pages/Courses/year/semester/SemesterBox.module.css b/frontend/src/pages/Courses/year/semester/SemesterBox.module.css new file mode 100644 index 0000000..e69de29 diff --git a/frontend/src/pages/Courses/components/SemesterBox.tsx b/frontend/src/pages/Courses/year/semester/SemesterBox.tsx similarity index 93% rename from frontend/src/pages/Courses/components/SemesterBox.tsx rename to frontend/src/pages/Courses/year/semester/SemesterBox.tsx index f246087..6ea75d7 100644 --- a/frontend/src/pages/Courses/components/SemesterBox.tsx +++ b/frontend/src/pages/Courses/year/semester/SemesterBox.tsx @@ -1,12 +1,12 @@ import React from "react"; -import styles from "./../Courses.module.css"; +import Style from "./SemesterBox.module.css" -import { StudentCourse } from "../../../commons/types/TypeCourse"; -import { User } from "../../../commons/types/TypeUser"; +import { StudentCourse } from "../../../../commons/types/TypeCourse"; +import { User } from "../../../../commons/types/TypeUser"; -import CourseBox from "./CourseBox"; -import AddButton from "./AddButton"; +import CourseBox from "./course/CourseBox"; +import AddButton from "./add/AddButton"; function SemesterBox(props: { edit: boolean, user: User, setUser: Function; term: number, TermSC: StudentCourse[] }) { @@ -15,7 +15,7 @@ function SemesterBox(props: { edit: boolean, user: User, setUser: Function; term )); return ( -
+
{SCBoxes} diff --git a/frontend/src/pages/Courses/year/semester/add/AddButton.module.css b/frontend/src/pages/Courses/year/semester/add/AddButton.module.css new file mode 100644 index 0000000..c2e2c94 --- /dev/null +++ b/frontend/src/pages/Courses/year/semester/add/AddButton.module.css @@ -0,0 +1,151 @@ + +.Row { + display: flex; + flex-direction: row; +} + +/* */ + +.AddButton { + display: flex; + justify-content: center; + align-items: center; + width: 36px; + height: 36px; + border-radius: 50%; + margin-bottom: 5px; + background-color: #F5F5F5; + cursor: pointer; +} +.AddButton:hover, +.AddButton:active { + background-color: #E0E0E0; +} + +.AddCanvas { + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; + width: 425px; + height: 36px; + border-radius: 16px; + margin-bottom: 5px; + padding-left: 10px; + padding-right: 10px; + background-color: #F5F5F5; + transition: filter 0.4s ease; +} + +/* */ + +.TermBox { + border: 1px solid #ccc; + padding: 0 8px; + background-color: white; + cursor: pointer; + border-radius: 4px; + font-size: 12px; + height: 22px; + width: 90px; + display: flex; + align-items: center; + box-sizing: border-box; + color: black; + position: relative; + transition: border-color 0.3s ease; +} +.TermBox:hover { + border-color: #aaa; +} + +/* */ + +.TermOptions { + position: absolute; + background-color: #fff; + border: 1px solid #ccc; + border-radius: 4px; + top: 100%; + left: 0; + margin-top: 5px; + z-index: 9999; + width: 90px; + box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.1); + max-height: 200px; + overflow-y: auto; + font-size: 12px; + box-sizing: border-box; +} +.TermOptions div { + padding: 8px; + cursor: pointer; + color: black; + background-color: white; +} +.TermOptions div:hover { + background-color: #f0f0f0; +} + +.SelectedTerm { + background-color: #f0f0f0; +} + +/* */ + +.CodeBox { + background-color: white; + border: 1px solid #ccc; + height: 22px; + width: 90px; + padding-left: 8px; + margin-left: 10px; + outline: none; + font-size: 12px; + font-weight: 500; + border-radius: 4px; + box-sizing: border-box; + margin-right: 4px; +} +.CodeBox:focus { + border-color: #aaa; + outline: none; +} +.CodeBox::placeholder { + color: grey; + font-style: italic; +} + +/* */ + +.ConfirmButton { + display: flex; + justify-content: center; + align-items: center; + width: 18px; + height: 18px; + border-radius: 50%; + background-color: #dbdbdb; + cursor: pointer; + margin-right: 5px; +} +.ConfirmButton:hover { + background-color: #D3D3D3; +} + +/* */ + +.RemoveButton { + display: flex; + justify-content: center; + align-items: center; + width: 16px; + height: 16px; + border-radius: 50%; + background-color: #ededed; + cursor: pointer; + margin-right: 5px; +} +.RemoveButton:hover { + background-color: #D3D3D3; +} diff --git a/frontend/src/pages/Courses/year/semester/add/AddButton.tsx b/frontend/src/pages/Courses/year/semester/add/AddButton.tsx new file mode 100644 index 0000000..5e122fa --- /dev/null +++ b/frontend/src/pages/Courses/year/semester/add/AddButton.tsx @@ -0,0 +1,173 @@ +import { useRef, useState, useEffect } from "react"; +import Style from "./AddButton.module.css"; + +import { getCTCourses } from "./../../../../../api/api"; +import { StudentCourse } from "../../../../../commons/types/TypeCourse"; +import { User } from "../../../../../commons/types/TypeUser"; +import { xCheckMajorsAndSet } from "./../../../CoursesUtils"; + +const termMappings: { [key: string]: number } = { + "Fall 2022": 202203, + "Spring 2023": 202301, + "Fall 2023": 202303, + "Spring 2024": 202401, + "Fall 2024": 202403, + "Spring 2025": 202501, +}; +const terms = Object.keys(termMappings); + +function TermSelector(props: { selectedTerm: number; onSelectTerm: Function }) { + const [dropVis, setDropVis] = useState(false); + + const toggleDrop = () => { + setDropVis(!dropVis); + }; + + const selectTerm = (term: string) => { + props.onSelectTerm(termMappings[term]); + setDropVis(false); + }; + + return ( +
+ {Object.keys(termMappings).find((key) => termMappings[key] === props.selectedTerm)} + {dropVis && ( +
+ {terms.map((term, index) => ( +
selectTerm(term)}> + {term} +
+ ))} +
+ )} +
+ ); +} + +function AddButton(props: { term: number; user: User; setUser: Function }) { + const inputRef = useRef(null); + const addButtonRef = useRef(null); // Reference for the AddButton component + const [active, setActive] = useState(false); + const [searchData, setSearchData] = useState([]); + const [selectedTerm, setSelectedTerm] = useState(props.term); + + useEffect(() => { + const handleClickOutside = (event: MouseEvent) => { + if ( + addButtonRef.current && + !addButtonRef.current.contains(event.target as Node) + ) { + deactivate(); + } + }; + + if (active) { + document.addEventListener("mousedown", handleClickOutside); + inputRef.current?.focus(); + const cachedData = localStorage.getItem(`courses-${selectedTerm}`); + if (cachedData) { + setSearchData(JSON.parse(cachedData)); + console.log("Loaded From Cache"); + } else { + getCTCourses(selectedTerm.toString()) + .then((data) => { + setSearchData(data); + try { + localStorage.setItem(`courses-${selectedTerm}`, JSON.stringify(data)); + console.log("Retrieved & Cached"); + } catch (e: any) { + if (e.name === "QuotaExceededError" || e.code === 22) { + console.error("Quota Exceeded: ", e); + } else { + console.error("Error Unknown: ", e); + } + } + }) + .catch((error) => { + console.error("Error Retrieving: ", error); + }); + } + } else { + document.removeEventListener("mousedown", handleClickOutside); + } + + return () => { + document.removeEventListener("mousedown", handleClickOutside); + }; + }, [active, selectedTerm]); + + const activate = () => { + setActive(true); + }; + + const deactivate = () => { + setActive(false); + }; + + const handleAddCourse = () => { + if (inputRef.current) { + const code = inputRef.current.value; + const offering = searchData.find((course) => course["course_code"] === code); + + if (offering) { + const codes = offering["listings"]; + const title = offering["title"]; + const credit = offering["credits"]; + const areas = offering["areas"]; + const skills = offering["skills"]; + const seasons = ["Fall", "Spring"]; + const course = { codes, title, credit, areas, skills, seasons }; + const status = selectedTerm === props.term ? "MA_VALID" : "MA_HYPOTHETICAL"; + const term = props.term; + const newCourse: StudentCourse = { course, term, status }; + + const isDuplicate = props.user.studentCourses.some( + (existingCourse) => + existingCourse.course.title === newCourse.course.title && + existingCourse.term === newCourse.term + ); + + if (isDuplicate) { + console.log("Duplicate"); + } else { + xCheckMajorsAndSet(props.user, newCourse, props.setUser); + deactivate(); + } + } + } + }; + + const handleKeyPress = (event: React.KeyboardEvent) => { + if (event.key === "Enter") { + handleAddCourse(); + } + }; + + return ( +
+ {!active ? ( +
+ + +
+ ) : ( +
+
+
+ + +
+
+
+ )} +
+ ); +} + +export default AddButton; diff --git a/frontend/src/pages/Courses/year/semester/course/CourseBox.module.css b/frontend/src/pages/Courses/year/semester/course/CourseBox.module.css new file mode 100644 index 0000000..68bef23 --- /dev/null +++ b/frontend/src/pages/Courses/year/semester/course/CourseBox.module.css @@ -0,0 +1,51 @@ + +.row { + display: flex; + flex-direction: row; +} + + +.RemoveButton { + display: flex; + justify-content: center; + align-items: center; + width: 16px; /* adjust size as needed */ + height: 16px; + border-radius: 50%; + background-color: #ededed; + cursor: pointer; + margin-right: 5px; + /* optional border for better visibility */ + /* border: 1px solid #C0C0C0; */ +} + +.RemoveButton:hover { + background-color: #D3D3D3; /* slightly darker grey on hover */ +} + +.checkmark { + justify-content: center; + text-align: center; + + font-weight: 550; + margin-right: 2px; +} + +.courseBox { + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; + + width: 425px; + height: 36px; + + border-radius: 16px; + margin-bottom: 5px; + + padding-left: 10px; + padding-right: 10px; + + background-color: #F5F5F5; + transition: filter 0.4s ease; +} \ No newline at end of file diff --git a/frontend/src/pages/Courses/components/CourseBox.tsx b/frontend/src/pages/Courses/year/semester/course/CourseBox.tsx similarity index 79% rename from frontend/src/pages/Courses/components/CourseBox.tsx rename to frontend/src/pages/Courses/year/semester/course/CourseBox.tsx index 8c0e3ff..a1000b0 100644 --- a/frontend/src/pages/Courses/components/CourseBox.tsx +++ b/frontend/src/pages/Courses/year/semester/course/CourseBox.tsx @@ -1,13 +1,13 @@ -import styles from "./../Courses.module.css"; +import Style from "./CourseBox.module.css"; import "react-tooltip/dist/react-tooltip.css"; -import img_fall from "./../../../commons/images/fall.png"; -import img_spring from "./../../../commons/images/spring.png"; -import DistributionsCircle from "../../../commons/components/icons/DistributionsCircle" +import img_fall from "./../../../../../commons/images/fall.png"; +import img_spring from "./../../../../../commons/images/spring.png"; +import DistributionsCircle from "./../../../../../commons/components/icons/DistributionsCircle" -import { StudentCourse } from "./../../../commons/types/TypeCourse"; -import { User } from "../../../commons/types/TypeUser"; +import { StudentCourse } from "../../../../../commons/types/TypeCourse"; +import { User } from "../../../../../commons/types/TypeUser"; // import { useModal } from "../../../hooks/modalContext"; function RemoveCourse(props: { SC: StudentCourse, user: User, setUser: Function }){ @@ -56,7 +56,7 @@ function RemoveCourse(props: { SC: StudentCourse, user: User, setUser: Function }; return( -
+
) @@ -74,32 +74,32 @@ function CourseBox(props: {edit: boolean, SC: StudentCourse, user: User, setUser const renderMark = () => { if(status === "DA_COMPLETE" || status === "DA_PROSPECT"){ return ( -
+
); }else if(status === "MA_HYPOTHETICAL" || "MA_VALID"){ const mark = (status === "MA_HYPOTHETICAL") ? "⚠" : "☑"; return ( -
+
{props.edit && } -
+
{mark}
); } - return
; + return
; }; const getBackgroundColor = () => (status === "DA_COMPLETE" ? "#E1E9F8" : "#F5F5F5"); const getSeasonImage = () => (String(term).endsWith("3") ? img_fall : img_spring); return ( -
+
{/* onClick={openModal} */} -
+
{renderMark()}
@@ -112,7 +112,7 @@ function CourseBox(props: {edit: boolean, SC: StudentCourse, user: User, setUser
-
+
From ec29bdbc43d95acb649ebf9a16b866c9248399cc Mon Sep 17 00:00:00 2001 From: RyanGumlia Date: Sun, 11 Aug 2024 22:47:11 -0400 Subject: [PATCH 4/8] barely --- .../year/semester/add/AddButton.module.css | 43 +++-- .../Courses/year/semester/add/AddButton.tsx | 181 ++++++------------ .../Courses/year/semester/add/AddUtils.ts | 73 +++++++ 3 files changed, 152 insertions(+), 145 deletions(-) create mode 100644 frontend/src/pages/Courses/year/semester/add/AddUtils.ts diff --git a/frontend/src/pages/Courses/year/semester/add/AddButton.module.css b/frontend/src/pages/Courses/year/semester/add/AddButton.module.css index c2e2c94..1f2b174 100644 --- a/frontend/src/pages/Courses/year/semester/add/AddButton.module.css +++ b/frontend/src/pages/Courses/year/semester/add/AddButton.module.css @@ -62,33 +62,36 @@ /* */ .TermOptions { - position: absolute; - background-color: #fff; - border: 1px solid #ccc; - border-radius: 4px; - top: 100%; - left: 0; - margin-top: 5px; - z-index: 9999; - width: 90px; - box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.1); - max-height: 200px; - overflow-y: auto; - font-size: 12px; - box-sizing: border-box; + position: absolute; + background-color: #fff; + border: 1px solid #ccc; + border-radius: 4px; + top: 100%; + left: 0; + margin-top: 5px; + z-index: 9999; + width: 90px; + box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.1); + max-height: 200px; + overflow-y: auto; + font-size: 12px; + box-sizing: border-box; } + .TermOptions div { - padding: 8px; - cursor: pointer; - color: black; - background-color: white; + padding: 8px; + cursor: pointer; + color: black; + background-color: white; } + .TermOptions div:hover { - background-color: #f0f0f0; + background-color: #f0f0f0; } .SelectedTerm { - background-color: #f0f0f0; + background-color: #93c7ff !important; /* Light blue background for the selected term */ + color: black; /* Optional: change text color for selected term */ } /* */ diff --git a/frontend/src/pages/Courses/year/semester/add/AddButton.tsx b/frontend/src/pages/Courses/year/semester/add/AddButton.tsx index 5e122fa..a5b7b21 100644 --- a/frontend/src/pages/Courses/year/semester/add/AddButton.tsx +++ b/frontend/src/pages/Courses/year/semester/add/AddButton.tsx @@ -1,168 +1,99 @@ import { useRef, useState, useEffect } from "react"; import Style from "./AddButton.module.css"; - -import { getCTCourses } from "./../../../../../api/api"; -import { StudentCourse } from "../../../../../commons/types/TypeCourse"; import { User } from "../../../../../commons/types/TypeUser"; -import { xCheckMajorsAndSet } from "./../../../CoursesUtils"; +import { fetchAndCacheCourses, handleAddCourse } from "./AddUtils"; const termMappings: { [key: string]: number } = { - "Fall 2022": 202203, - "Spring 2023": 202301, - "Fall 2023": 202303, - "Spring 2024": 202401, - "Fall 2024": 202403, "Spring 2025": 202501, + "Fall 2024": 202403, + "Spring 2024": 202401, + "Fall 2023": 202303, + "Spring 2023": 202301, + "Fall 2022": 202203, }; const terms = Object.keys(termMappings); -function TermSelector(props: { selectedTerm: number; onSelectTerm: Function }) { - const [dropVis, setDropVis] = useState(false); - - const toggleDrop = () => { - setDropVis(!dropVis); - }; - - const selectTerm = (term: string) => { - props.onSelectTerm(termMappings[term]); - setDropVis(false); - }; - - return ( -
- {Object.keys(termMappings).find((key) => termMappings[key] === props.selectedTerm)} - {dropVis && ( -
- {terms.map((term, index) => ( -
selectTerm(term)}> - {term} -
- ))} -
- )} -
- ); -} - function AddButton(props: { term: number; user: User; setUser: Function }) { + const inputRef = useRef(null); - const addButtonRef = useRef(null); // Reference for the AddButton component + const addButtonRef = useRef(null); + const [active, setActive] = useState(false); + const [dropVis, setDropVis] = useState(false); + + const [selectedTerm, setSelectedTerm] = useState(props.term); const [searchData, setSearchData] = useState([]); - const [selectedTerm, setSelectedTerm] = useState(props.term); useEffect(() => { - const handleClickOutside = (event: MouseEvent) => { - if ( - addButtonRef.current && - !addButtonRef.current.contains(event.target as Node) - ) { - deactivate(); - } - }; - - if (active) { + if(active){ document.addEventListener("mousedown", handleClickOutside); inputRef.current?.focus(); - const cachedData = localStorage.getItem(`courses-${selectedTerm}`); - if (cachedData) { - setSearchData(JSON.parse(cachedData)); - console.log("Loaded From Cache"); - } else { - getCTCourses(selectedTerm.toString()) - .then((data) => { - setSearchData(data); - try { - localStorage.setItem(`courses-${selectedTerm}`, JSON.stringify(data)); - console.log("Retrieved & Cached"); - } catch (e: any) { - if (e.name === "QuotaExceededError" || e.code === 22) { - console.error("Quota Exceeded: ", e); - } else { - console.error("Error Unknown: ", e); - } - } - }) - .catch((error) => { - console.error("Error Retrieving: ", error); - }); - } - } else { + fetchAndCacheCourses(selectedTerm, setSearchData); + }else{ document.removeEventListener("mousedown", handleClickOutside); } - return () => { document.removeEventListener("mousedown", handleClickOutside); }; }, [active, selectedTerm]); - const activate = () => { - setActive(true); - }; - - const deactivate = () => { - setActive(false); + useEffect(() => { + console.log("dropVis updated:", dropVis); + }, [dropVis]); + + const chooseTerm = (term: string) => { + setSelectedTerm(termMappings[term]); + setDropVis(false); }; - const handleAddCourse = () => { - if (inputRef.current) { - const code = inputRef.current.value; - const offering = searchData.find((course) => course["course_code"] === code); - - if (offering) { - const codes = offering["listings"]; - const title = offering["title"]; - const credit = offering["credits"]; - const areas = offering["areas"]; - const skills = offering["skills"]; - const seasons = ["Fall", "Spring"]; - const course = { codes, title, credit, areas, skills, seasons }; - const status = selectedTerm === props.term ? "MA_VALID" : "MA_HYPOTHETICAL"; - const term = props.term; - const newCourse: StudentCourse = { course, term, status }; - - const isDuplicate = props.user.studentCourses.some( - (existingCourse) => - existingCourse.course.title === newCourse.course.title && - existingCourse.term === newCourse.term - ); - - if (isDuplicate) { - console.log("Duplicate"); - } else { - xCheckMajorsAndSet(props.user, newCourse, props.setUser); - deactivate(); - } - } + const handleKeyPress = (event: React.KeyboardEvent) => { + if(event.key === "Enter"){ + handleAddCourse(inputRef, searchData, selectedTerm, props, setActive); } }; - const handleKeyPress = (event: React.KeyboardEvent) => { - if (event.key === "Enter") { - handleAddCourse(); + const handleClickOutside = (event: MouseEvent) => { + if(addButtonRef.current && !addButtonRef.current.contains(event.target as Node)){ + if(dropVis){ + setDropVis(false); + console.log("dropVis") + }else{ + setActive(false) + console.log("failure: ", dropVis) + } } }; return (
{!active ? ( -
+
setActive(true)}> +
) : (
-
- - -
+
setActive(false)}> + +
+
setDropVis(!dropVis)}> + {Object.keys(termMappings).find((key) => termMappings[key] === selectedTerm)} + {dropVis && ( +
+ {terms.map((term, index) => ( +
chooseTerm(term)} className={termMappings[term] === selectedTerm ? Style.SelectedTerm : ""}> + {term} +
+ ))} +
+ )} +
+ + + +
handleAddCourse(inputRef, searchData, selectedTerm, props, setActive)}> + +
)} diff --git a/frontend/src/pages/Courses/year/semester/add/AddUtils.ts b/frontend/src/pages/Courses/year/semester/add/AddUtils.ts new file mode 100644 index 0000000..0f86206 --- /dev/null +++ b/frontend/src/pages/Courses/year/semester/add/AddUtils.ts @@ -0,0 +1,73 @@ + +import { StudentCourse } from "../../../../../commons/types/TypeCourse"; +import { User } from "../../../../../commons/types/TypeUser"; +import { xCheckMajorsAndSet } from "./../../../CoursesUtils"; +import { getCTCourses } from "../../../../../api/api"; + +export async function fetchAndCacheCourses( + selectedTerm: number, + setSearchData: Function +) { + const cachedData = localStorage.getItem(`courses-${selectedTerm}`); + if (cachedData) { + setSearchData(JSON.parse(cachedData)); + console.log("Loaded From Cache"); + } else { + try { + const data = await getCTCourses(selectedTerm.toString()); + setSearchData(data); + try { + localStorage.setItem(`courses-${selectedTerm}`, JSON.stringify(data)); + console.log("Retrieved & Cached"); + } catch (e: any) { + if (e.name === "QuotaExceededError" || e.code === 22) { + console.error("Quota Exceeded: ", e); + } else { + console.error("Error Unknown: ", e); + } + } + } catch (error) { + console.error("Error Retrieving: ", error); + } + } +} + +export function handleAddCourse( + inputRef: React.RefObject, + searchData: any[], + selectedTerm: number, + props: { term: number; user: User; setUser: Function }, + setActive: Function +) { + if (inputRef.current) { + const code = inputRef.current.value; + const offering = searchData.find((course) => course["course_code"] === code); + + if (offering) { + const codes = offering["listings"]; + const title = offering["title"]; + const credit = offering["credits"]; + const areas = offering["areas"]; + const skills = offering["skills"]; + const seasons = ["Fall", "Spring"]; + const course = { codes, title, credit, areas, skills, seasons }; + const status = selectedTerm === props.term ? "MA_VALID" : "MA_HYPOTHETICAL"; + const term = props.term; + const newCourse: StudentCourse = { course, term, status }; + + const isDuplicate = props.user.studentCourses.some( + (existingCourse) => + existingCourse.course.title === newCourse.course.title && + existingCourse.term === newCourse.term + ); + + if (isDuplicate) { + console.log("Duplicate"); + } else { + xCheckMajorsAndSet(props.user, newCourse, props.setUser); + setActive(false); + } + } + } +} + From f55223c188b9fc8d920ca3f72581b87a6b899dc9 Mon Sep 17 00:00:00 2001 From: RyanGumlia Date: Mon, 12 Aug 2024 14:49:02 -0400 Subject: [PATCH 5/8] winner --- frontend/src/commons/types/TypeCourse.ts | 12 +++- .../year/semester/add/AddButton.module.css | 2 + .../Courses/year/semester/add/AddButton.tsx | 69 +++++++++---------- .../Courses/year/semester/add/AddUtils.ts | 8 ++- 4 files changed, 52 insertions(+), 39 deletions(-) diff --git a/frontend/src/commons/types/TypeCourse.ts b/frontend/src/commons/types/TypeCourse.ts index 15e8963..065d32d 100644 --- a/frontend/src/commons/types/TypeCourse.ts +++ b/frontend/src/commons/types/TypeCourse.ts @@ -17,4 +17,14 @@ export interface StudentCourse { status: string; // "DA_COMPLETE" | "DA_PROSPECT" | "MA_VALID" | "MA_HYPOTHETICAL" } -export type AmbiCourse = Course | StudentCourse; +export interface AddCourseDisplay { + active: boolean; + dropVis: boolean; +} + +export const nullAddCourseDisplay: AddCourseDisplay = { + active: false, + dropVis: false, +} + + diff --git a/frontend/src/pages/Courses/year/semester/add/AddButton.module.css b/frontend/src/pages/Courses/year/semester/add/AddButton.module.css index 1f2b174..b6dc39b 100644 --- a/frontend/src/pages/Courses/year/semester/add/AddButton.module.css +++ b/frontend/src/pages/Courses/year/semester/add/AddButton.module.css @@ -109,6 +109,8 @@ border-radius: 4px; box-sizing: border-box; margin-right: 4px; + + /* box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); */ } .CodeBox:focus { border-color: #aaa; diff --git a/frontend/src/pages/Courses/year/semester/add/AddButton.tsx b/frontend/src/pages/Courses/year/semester/add/AddButton.tsx index a5b7b21..f70ba8a 100644 --- a/frontend/src/pages/Courses/year/semester/add/AddButton.tsx +++ b/frontend/src/pages/Courses/year/semester/add/AddButton.tsx @@ -1,8 +1,11 @@ + import { useRef, useState, useEffect } from "react"; import Style from "./AddButton.module.css"; import { User } from "../../../../../commons/types/TypeUser"; import { fetchAndCacheCourses, handleAddCourse } from "./AddUtils"; +import { AddCourseDisplay, nullAddCourseDisplay } from "../../../../../commons/types/TypeCourse"; + const termMappings: { [key: string]: number } = { "Spring 2025": 202501, "Fall 2024": 202403, @@ -16,72 +19,66 @@ const terms = Object.keys(termMappings); function AddButton(props: { term: number; user: User; setUser: Function }) { const inputRef = useRef(null); - const addButtonRef = useRef(null); + const addRef = useRef(null); - const [active, setActive] = useState(false); - const [dropVis, setDropVis] = useState(false); + const [addDisplay, setAddDisplay] = useState(nullAddCourseDisplay); const [selectedTerm, setSelectedTerm] = useState(props.term); const [searchData, setSearchData] = useState([]); useEffect(() => { - if(active){ + if(addDisplay.active){ document.addEventListener("mousedown", handleClickOutside); inputRef.current?.focus(); fetchAndCacheCourses(selectedTerm, setSearchData); - }else{ - document.removeEventListener("mousedown", handleClickOutside); } + return () => { - document.removeEventListener("mousedown", handleClickOutside); + if(addDisplay.active){ + document.removeEventListener("mousedown", handleClickOutside); + } }; - }, [active, selectedTerm]); + }, [addDisplay]); - useEffect(() => { - console.log("dropVis updated:", dropVis); - }, [dropVis]); - - const chooseTerm = (term: string) => { - setSelectedTerm(termMappings[term]); - setDropVis(false); + const handleClickOutside = (event: MouseEvent) => { + if(addRef.current && !addRef.current.contains(event.target as Node)){ + if(addDisplay.dropVis){ + setAddDisplay((prevState) => ({...prevState, dropVis: false})); + setTimeout(() => { + if(inputRef.current){ + inputRef.current.focus(); + } + }, 0); + }else{ + setAddDisplay((prevState) => ({...prevState, active: false})); + } + } }; const handleKeyPress = (event: React.KeyboardEvent) => { if(event.key === "Enter"){ - handleAddCourse(inputRef, searchData, selectedTerm, props, setActive); - } - }; - - const handleClickOutside = (event: MouseEvent) => { - if(addButtonRef.current && !addButtonRef.current.contains(event.target as Node)){ - if(dropVis){ - setDropVis(false); - console.log("dropVis") - }else{ - setActive(false) - console.log("failure: ", dropVis) - } + handleAddCourse(inputRef, searchData, selectedTerm, props, setAddDisplay); } }; return ( -
- {!active ? ( -
setActive(true)}> +
+ {!addDisplay.active ? ( +
setAddDisplay((prevState) => ({...prevState, active: true}))}> +
) : (
-
setActive(false)}> +
setAddDisplay((prevState) => ({...prevState, active: false}))}>
-
setDropVis(!dropVis)}> +
setAddDisplay((prevState) => ({...prevState, dropVis: !addDisplay.dropVis}))}> {Object.keys(termMappings).find((key) => termMappings[key] === selectedTerm)} - {dropVis && ( + {addDisplay.dropVis && (
{terms.map((term, index) => ( -
chooseTerm(term)} className={termMappings[term] === selectedTerm ? Style.SelectedTerm : ""}> +
setSelectedTerm(termMappings[term])} className={termMappings[term] === selectedTerm ? Style.SelectedTerm : ""}> {term}
))} @@ -91,7 +88,7 @@ function AddButton(props: { term: number; user: User; setUser: Function }) { -
handleAddCourse(inputRef, searchData, selectedTerm, props, setActive)}> +
handleAddCourse(inputRef, searchData, selectedTerm, props, setAddDisplay)}>
diff --git a/frontend/src/pages/Courses/year/semester/add/AddUtils.ts b/frontend/src/pages/Courses/year/semester/add/AddUtils.ts index 0f86206..f642184 100644 --- a/frontend/src/pages/Courses/year/semester/add/AddUtils.ts +++ b/frontend/src/pages/Courses/year/semester/add/AddUtils.ts @@ -3,6 +3,7 @@ import { StudentCourse } from "../../../../../commons/types/TypeCourse"; import { User } from "../../../../../commons/types/TypeUser"; import { xCheckMajorsAndSet } from "./../../../CoursesUtils"; import { getCTCourses } from "../../../../../api/api"; +import { AddCourseDisplay } from "../../../../../commons/types/TypeCourse"; export async function fetchAndCacheCourses( selectedTerm: number, @@ -37,7 +38,7 @@ export function handleAddCourse( searchData: any[], selectedTerm: number, props: { term: number; user: User; setUser: Function }, - setActive: Function + setAddDisplay: Function ) { if (inputRef.current) { const code = inputRef.current.value; @@ -65,7 +66,10 @@ export function handleAddCourse( console.log("Duplicate"); } else { xCheckMajorsAndSet(props.user, newCourse, props.setUser); - setActive(false); + setAddDisplay((prevState: AddCourseDisplay) => ({ + ...prevState, + active: false, + })); } } } From 6b1c844324786f4687dc0b4aa1d7f54978205041 Mon Sep 17 00:00:00 2001 From: RyanGumlia Date: Tue, 8 Oct 2024 21:24:18 -0400 Subject: [PATCH 6/8] we're back --- backend/ct-script.py | 85 ++++++++++++++++++ backend/main.py | 52 +++++------ frontend/src/api/api.tsx | 5 +- .../commons/components/icons/CourseIcon.tsx | 2 +- frontend/src/commons/mock/MockStudent.ts | 86 +++---------------- frontend/src/commons/mock/programs/AF.ts | 10 --- frontend/src/commons/mock/programs/CPSC.ts | 10 +-- frontend/src/commons/mock/programs/Econ.ts | 18 ---- frontend/src/commons/types/TypeCourse.ts | 3 +- .../Courses/year/semester/add/AddUtils.ts | 34 ++++---- .../year/semester/course/CourseBox.tsx | 2 +- .../Graduation/components/Distribution.tsx | 42 ++++----- results1.txt | 1 + results2.txt | 1 + results3.txt | 1 + results4.txt | 1 + 16 files changed, 171 insertions(+), 182 deletions(-) create mode 100644 backend/ct-script.py delete mode 100644 frontend/src/commons/mock/programs/AF.ts delete mode 100644 frontend/src/commons/mock/programs/Econ.ts create mode 100644 results1.txt create mode 100644 results2.txt create mode 100644 results3.txt create mode 100644 results4.txt diff --git a/backend/ct-script.py b/backend/ct-script.py new file mode 100644 index 0000000..030df76 --- /dev/null +++ b/backend/ct-script.py @@ -0,0 +1,85 @@ +import http.client +import json + +def get_ct_courses(): + cookies = { + 'session': 'enter_session_here', + 'session.sig': 'enter_session_sig_here' + } + + conn = http.client.HTTPSConnection("api.coursetable.com") + headers = { + 'Cookie': f'session={cookies["session"]}; session.sig={cookies["session.sig"]}' + } + + conn.request("GET", "/api/catalog/public/202301", headers=headers) + response = conn.getresponse() + data = response.read() + course_data = json.loads(data.decode("utf-8")) + unique_courses = singalize(course_data) + transformed_data = simplify(unique_courses) + + # Splitting the data into four parts + quarter_size = len(transformed_data) // 4 + first_part = transformed_data[:quarter_size] + second_part = transformed_data[quarter_size:2*quarter_size] + third_part = transformed_data[2*quarter_size:3*quarter_size] + fourth_part = transformed_data[3*quarter_size:] + + # Writing each part to separate files without indents and extra whitespace + with open("results1.txt", "w") as f: + json.dump(first_part, f, separators=(",", ":")) + + with open("results2.txt", "w") as f: + json.dump(second_part, f, separators=(",", ":")) + + with open("results3.txt", "w") as f: + json.dump(third_part, f, separators=(",", ":")) + + with open("results4.txt", "w") as f: + json.dump(fourth_part, f, separators=(",", ":")) + + conn.close() + + return transformed_data, 200 + + +def singalize(courses): + record = set() + unique = [] + for obj in courses: + code = obj.get("course_code") + if code not in record: + record.add(code) + unique.append(obj) + return unique + +def simplify(courses): + dict = {} + + for obj in courses: + course_code = obj.get("course_code") + listings = obj["course"].get("listings", []) + + found_key = None + for code in [listing["course_code"] for listing in listings]: + if code in dict: + found_key = code + break + + if found_key: + dict[found_key]["c"].append(course_code) + else: + dict[course_code] = { + "c": [course_code], + "t": obj["course"].get("title"), + "r": obj["course"].get("credits"), + "d": obj["course"].get("skills", []) + obj["course"].get("areas", []), + } + + transform = list(dict.values()) + return transform + + +if __name__ == "__main__": + get_ct_courses() diff --git a/backend/main.py b/backend/main.py index 962746d..728d5cd 100644 --- a/backend/main.py +++ b/backend/main.py @@ -182,35 +182,29 @@ def getUser(): return make_response(response_body, 200) -@app.get("/getCTCourses") -def getCTCourses(): - key = request.args.get('key') - if not key: - result = {"Error": "Missing Param"} - status_code = 400 - - cookies = { - 'session': 'enter_session_here', - 'session.sig': 'enter_session_sig_here' - } - url = f"https://api.coursetable.com/api/catalog/public/{key}" - - try: - response = requests.get(url, cookies=cookies) - course_data = response.json() - transformed_data = simplify_CT_courses(course_data) - result = transformed_data - status_code = 200 - except requests.exceptions.RequestException as e: - result = {"Error": str(e)} - status_code = 500 - - # output_file = "output.json" - # with open(output_file, "w") as f: - # json.dump(result, f, indent=2) - # print(f"Result -> {output_file}") - - return jsonify(result), status_code +@app.get("/getCatalog") +def getCatalog(): + key = request.args.get('key') + if not key: + return jsonify({"Error": "Missing Param"}), 400 + + # Access Firestore + try: + slices_ref = db.collection("Catalogs").document(key).collection("Slices") + slices_docs = slices_ref.stream() + + combined_list = [] + for slice_doc in slices_docs: + slice_data = slice_doc.to_dict().get('list', []) + combined_list.extend(slice_data) + + if not combined_list: + return jsonify({"Error": "Data Not Found"}), 404 + + return jsonify(combined_list), 200 + + except Exception as e: + return jsonify({"Error": str(e)}), 500 # * * * POST * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * diff --git a/frontend/src/api/api.tsx b/frontend/src/api/api.tsx index ca05085..1f07e4c 100644 --- a/frontend/src/api/api.tsx +++ b/frontend/src/api/api.tsx @@ -33,11 +33,10 @@ export const getUser = () => { }; - -export const getCTCourses = (key: string): Promise => { +export const getCatalog = (key: string): Promise => { return new Promise((resolve, reject) => { $.ajax({ - url: `http://127.0.0.1:5001/majoraudit/us-central1/functions/getCTCourses?key=${key}`, + url: `http://127.0.0.1:5001/majoraudit/us-central1/functions/getCatalog?key=${key}`, method: "GET", xhrFields: { withCredentials: true } }).done((data: any) => { diff --git a/frontend/src/commons/components/icons/CourseIcon.tsx b/frontend/src/commons/components/icons/CourseIcon.tsx index 18bf4b6..5f0a526 100644 --- a/frontend/src/commons/components/icons/CourseIcon.tsx +++ b/frontend/src/commons/components/icons/CourseIcon.tsx @@ -66,7 +66,7 @@ export function StudentCourseIcon(props: { studentCourse: StudentCourse, utility return
{mark}
; }; - const dist = [...(props.studentCourse.course.areas || []), ...(props.studentCourse.course.skills || [])]; + const dist = props.studentCourse.course.dist || []; return (
; // ["FREN 403", "HUMS 409"] title: string; // "Proust Interpretations: Reading Remembrance of Things Past" credit: number // 1 - areas: Array; // ["Hu"] - skills: Array // ["WR"] + dist: Array; // ["Hu"] # Combine pt. 1 seasons: Array; // ["Spring"] # Figure This Out } diff --git a/frontend/src/pages/Courses/year/semester/add/AddUtils.ts b/frontend/src/pages/Courses/year/semester/add/AddUtils.ts index f642184..be6786d 100644 --- a/frontend/src/pages/Courses/year/semester/add/AddUtils.ts +++ b/frontend/src/pages/Courses/year/semester/add/AddUtils.ts @@ -2,7 +2,7 @@ import { StudentCourse } from "../../../../../commons/types/TypeCourse"; import { User } from "../../../../../commons/types/TypeUser"; import { xCheckMajorsAndSet } from "./../../../CoursesUtils"; -import { getCTCourses } from "../../../../../api/api"; +import { getCatalog } from "../../../../../api/api"; import { AddCourseDisplay } from "../../../../../commons/types/TypeCourse"; export async function fetchAndCacheCourses( @@ -10,12 +10,12 @@ export async function fetchAndCacheCourses( setSearchData: Function ) { const cachedData = localStorage.getItem(`courses-${selectedTerm}`); - if (cachedData) { + if(cachedData){ setSearchData(JSON.parse(cachedData)); console.log("Loaded From Cache"); - } else { - try { - const data = await getCTCourses(selectedTerm.toString()); + }else{ + try{ + const data = await getCatalog(selectedTerm.toString()); setSearchData(data); try { localStorage.setItem(`courses-${selectedTerm}`, JSON.stringify(data)); @@ -39,22 +39,22 @@ export function handleAddCourse( selectedTerm: number, props: { term: number; user: User; setUser: Function }, setAddDisplay: Function -) { - if (inputRef.current) { - const code = inputRef.current.value; - const offering = searchData.find((course) => course["course_code"] === code); +){ + if(inputRef.current){ + const targetCode = inputRef.current.value; + const targetCourse = searchData.find((fireCourse) => fireCourse["c"].includes(targetCode)); - if (offering) { - const codes = offering["listings"]; - const title = offering["title"]; - const credit = offering["credits"]; - const areas = offering["areas"]; - const skills = offering["skills"]; + if(targetCourse){ + const codes = targetCourse["c"]; + const title = targetCourse["t"]; + const credit = targetCourse["r"]; + const dist = targetCourse["d"]; const seasons = ["Fall", "Spring"]; - const course = { codes, title, credit, areas, skills, seasons }; + + const course = { codes, title, credit, dist, seasons }; const status = selectedTerm === props.term ? "MA_VALID" : "MA_HYPOTHETICAL"; const term = props.term; - const newCourse: StudentCourse = { course, term, status }; + const newCourse: StudentCourse = { course, status, term }; const isDuplicate = props.user.studentCourses.some( (existingCourse) => diff --git a/frontend/src/pages/Courses/year/semester/course/CourseBox.tsx b/frontend/src/pages/Courses/year/semester/course/CourseBox.tsx index a1000b0..d477caa 100644 --- a/frontend/src/pages/Courses/year/semester/course/CourseBox.tsx +++ b/frontend/src/pages/Courses/year/semester/course/CourseBox.tsx @@ -113,7 +113,7 @@ function CourseBox(props: {edit: boolean, SC: StudentCourse, user: User, setUser
- +
diff --git a/frontend/src/pages/Graduation/components/Distribution.tsx b/frontend/src/pages/Graduation/components/Distribution.tsx index 7511758..6b550d9 100644 --- a/frontend/src/pages/Graduation/components/Distribution.tsx +++ b/frontend/src/pages/Graduation/components/Distribution.tsx @@ -201,27 +201,27 @@ function DistributionTable(props: { year: number; studentCourses: StudentCourse[ let LList: StudentCourse[] = []; props.studentCourses.forEach((studentCourse) => { - const { areas, skills } = studentCourse.course; - - if (areas.includes('Hu')) { - HuList.push(studentCourse); - } - if (areas.includes('So')) { - SoList.push(studentCourse); - } - if (areas.includes('Sc')) { - ScList.push(studentCourse); - } - - if (skills.includes('QR')) { - QRList.push(studentCourse); - } - if (skills.includes('WR')) { - WRList.push(studentCourse); - } - if (skills.some(skill => skill.startsWith('L'))) { - LList.push(studentCourse); - } + const dist = studentCourse.course.dist; + + if (dist && dist.includes('Hu')) { + HuList.push(studentCourse); + } + if (dist && dist.includes('So')) { + SoList.push(studentCourse); + } + if (dist && dist.includes('Sc')) { + ScList.push(studentCourse); + } + + if (dist && dist.includes('QR')) { + QRList.push(studentCourse); + } + if (dist && dist.includes('WR')) { + WRList.push(studentCourse); + } + if (dist && dist.some(skill => skill.startsWith('L'))) { + LList.push(studentCourse); + } }); if(props.year === 1){ diff --git a/results1.txt b/results1.txt new file mode 100644 index 0000000..d8e8d9e --- /dev/null +++ b/results1.txt @@ -0,0 +1 @@ +[{"c":["AFAM 035","ENGL 035"],"t":"Black and Beyond: 21st-Century Black Aesthetics","r":1,"d":["WR","Hu"]},{"c":["AFAM 060","AMST 060","HIST 016"],"t":"Significance of American Slavery","r":1,"d":["WR","Hu"]},{"c":["AFAM 121"],"t":"Print the Legacy","r":1,"d":["Hu"]},{"c":["AFAM 132","HIST 132"],"t":"Historic Mass Incarceration: HIST 132 WR Section","r":0,"d":["WR","Hu"]},{"c":["AFAM 146","ECON 171","EDST 271"],"t":"Urban Inequalities and Educational Inequality","r":1,"d":["So"]},{"c":["AFAM 148","HSAR 260"],"t":"A Sense of Place: Sculpture, Public Art, Monuments in and throughout Connecticut","r":1,"d":["Hu"]},{"c":["AFAM 152","PLSC 292","SOCY 152"],"t":"Topics in Contemporary Social Theory","r":1,"d":["WR","So"]},{"c":["AFAM 160","AFST 184","AMST 160","HIST 184"],"t":"Rise &Fall of Atlantic Slavery: WR","r":0,"d":["WR","Hu"]},{"c":["AFAM 164","PLSC 263","URBN 304"],"t":"The Politics of \"The Wire\": HBO's Portrayal of the American City","r":1,"d":["So"]},{"c":["ART 245"],"t":"Digital Drawing","r":1,"d":[]},{"c":["AFAM 166","AMST 299","ER&M 299","HIST 166"],"t":"The History of Right Now","r":1,"d":["Hu"]},{"c":["AFAM 170","HIST 479","HSHM 241","WGSS 270"],"t":"Sickness and Health in African American History","r":1,"d":["Hu"]},{"c":["AFAM 172","HIST 119"],"t":"The Civil War and Reconstruction Era, 1845\u20131877","r":1,"d":["Hu"]},{"c":["AFAM 184","AFST 208","HSAR 208"],"t":"African Arts and Expressive Cultures","r":1,"d":["Hu"]},{"c":["AFAM 210","AMST 445","HIST 148J"],"t":"Politics and Culture of the U.S. Color Line","r":1,"d":["Hu"]},{"c":["AFAM 220","FILM 434"],"t":"Archive Aesthetics and Community Storytelling","r":1,"d":["Hu"]},{"c":["AFAM 235","ENGL 339"],"t":"Signs of Power: Apocalypse in 19th-century African American Literature","r":1,"d":["Hu"]},{"c":["AFAM 245","HUMS 154","PLSC 328"],"t":"Black Political Thought","r":1,"d":["So"]},{"c":["AFAM 251","AMST 397"],"t":"Critical Race Theory","r":1,"d":["Hu"]},{"c":["AFAM 253","MUSI 381"],"t":"Jazz in Transition, 1960\u20132000","r":1,"d":["Hu"]},{"c":["AFAM 271"],"t":"The Venice Biennale, Art Fairs, and Foundations","r":1,"d":["Hu"]},{"c":["AFAM 287","AFST 412","AMST 465","FREN 412","LITR 250"],"t":"Postcolonial Theory and Literature","r":1,"d":["Hu"]},{"c":["AFAM 322","ENGL 360"],"t":"Coming of Age in Black Literature","r":1,"d":["Hu"]},{"c":["AFAM 324","AMST 324","HSAR 416","WGSS 324"],"t":"Visual Art and Black Feminist Theory","r":1,"d":["WR","Hu"]},{"c":["AFAM 326","AMST 312","ER&M 310","WGSS 298"],"t":"Postcolonial Cities of the West","r":1,"d":["Hu"]},{"c":["AFAM 335","FILM 335"],"t":"Black Experimental and Independent Film","r":1,"d":["WR","Hu"]},{"c":["AFAM 349","AMST 326","HIST 115J","WGSS 388"],"t":"Civil Rights and Women's Liberation","r":1,"d":["Hu"]},{"c":["AFAM 374","ENGL 374"],"t":"Wayward Lines: Black Feminist Literature and Theory","r":1,"d":["WR","Hu"]},{"c":["AFAM 377","AMST 381","FREN 377"],"t":"Francophone Romanticism","r":1,"d":["Hu"]},{"c":["AFAM 402","RLST 435"],"t":"Black Religions in Slavery and Freedom","r":1,"d":[]},{"c":["AFAM 410"],"t":"Interdisciplinary Approaches to African American Studies","r":1,"d":["WR","Hu","So"]},{"c":["AFAM 449","AFST 449","ENGL 378","ENGL 934"],"t":"Challenges to Realism in Contemporary African Fiction","r":1,"d":["WR","Hu"]},{"c":["AFAM 459","AMST 479","ER&M 402"],"t":"The Displaced: Migrant and Refugee Narratives of the 20th and 21st Centuries","r":1,"d":["Hu"]},{"c":["AFAM 472"],"t":"Independent Study: African American Studies","r":1,"d":[]},{"c":["AFAM 491"],"t":"The Senior Essay","r":1,"d":[]},{"c":["AFST 001","ARCG 001","NELC 001"],"t":"Egypt and Northeast Africa: A Multidisciplinary Approach","r":1,"d":["WR","Hu"]},{"c":["AFST 028","ENGL 028","LITR 025"],"t":"African Literature in the World","r":1,"d":["WR","Hu"]},{"c":["AFST 092","THST 092"],"t":"African Rhythm in Motion","r":1,"d":[]},{"c":["AFST 128","ARCG 128","EGYP 128","NELC 129","RLST 251","ANTH 528","ARCG 528","EGYP 528"],"t":"Magic and Ritual in Ancient Egypt and the Near East","r":1,"d":["Hu"]},{"c":["AFST 135","PLSC 135"],"t":"Media and Conflict","r":1,"d":[]},{"c":["AFST 200","ANTH 200","ER&M 216"],"t":"Social Dimensions of Evolution in Africa","r":1,"d":["So"]},{"c":["AFST 222","GLBL 222"],"t":"Causal Inference and African Politics","r":1,"d":["So"]},{"c":["AFST 245","ER&M 245","FILM 239","PORT 245","WGSS 246"],"t":"Afro-Luso-Brazilian Cinema and Short Filmmaking","r":1,"d":["Hu"]},{"c":["AFST 335","ER&M 325","HIST 335"],"t":"A History of South Africa","r":1,"d":["Hu"]},{"c":["AFST 340","HIST 340"],"t":"Africa in the Era of the Slave Trade","r":1,"d":["Hu"]},{"c":["AFST 352","HIST 352J"],"t":"Culture and Politics in Lusophone Africa, 1885-1992","r":1,"d":["WR","Hu"]},{"c":["AFST 381","PLSC 381"],"t":"Government and Politics in Africa","r":1,"d":["So"]},{"c":["AFST 392","ER&M 347","HIST 392J"],"t":"Pan-Africanism, Anti-Colonialism and Colonial Modernity","r":1,"d":["Hu"]},{"c":["AFST 396","HIST 396J"],"t":"Revolutions and Socialist Experiments in Africa","r":1,"d":["WR","Hu"]},{"c":["AFST 435","THST 335"],"t":"West African Dance: Traditional to Contemporary","r":1,"d":["Hu"]},{"c":["AFST 443","FREN 442","LITR 484","MMES 402","AFST 942","CPLT 986","FREN 942"],"t":"Decolonizing Memory : Africa & the Politics of Testimony","r":1,"d":["WR","Hu"]},{"c":["AFST 491"],"t":"The Senior Essay","r":1,"d":[]},{"c":["AKKD 120","AKKD 501"],"t":"Elementary Akkadian II","r":1,"d":["L2"]},{"c":["AKKD 350"],"t":"Culture and Politics in Lusophone Africa, 1885-1992","r":1,"d":["WR","Hu"]},{"c":["AMST 012","HIST 012"],"t":"Politics and Society in the United States after World War II","r":1,"d":["Hu"]},{"c":["AMST 029","ENGL 029","HUMS 032"],"t":"Henry Thoreau","r":1,"d":["Hu"]},{"c":["AMST 133","ER&M 187","HIST 107"],"t":"Intro American Indian History: HIST 107 WR Section","r":0,"d":["Hu"]},{"c":["AMST 184","ENGL 437","HUMS 184"],"t":"Writing and Reading Biography","r":1,"d":["Hu"]},{"c":["AMST 190","URBN 307"],"t":"Race, Class, and Gender in American Cities","r":1,"d":["So"]},{"c":["AMST 191","HIST 106"],"t":"The Formation of Modern American Culture, 1920 to the Present","r":1,"d":["Hu"]},{"c":["AMST 206","ER&M 221","WGSS 222"],"t":"Introduction to Critical Refugee Studies","r":1,"d":["So"]},{"c":["AMST 234","ER&M 243","HIST 188","RLST 342"],"t":"Spiritual But Not Religious","r":1,"d":["Hu","So"]},{"c":["AMST 235","ENGL 354"],"t":"Language, Disability, Fiction","r":1,"d":["Hu"]},{"c":["AMST 257","ENGL 325"],"t":"Modern Apocalyptic Narratives","r":1,"d":["Hu"]},{"c":["AMST 258","ER&M 258","EVST 258"],"t":"Wilderness in the North American Imagination: The Nature of Reservation Casinos","r":1,"d":["Hu"]},{"c":["AMST 268","EP&E 399","ER&M 295","FILM 268"],"t":"Digital Platforms","r":1,"d":["So"]},{"c":["AMST 269","ER&M 330","SAST 262"],"t":"Digital War","r":1,"d":["Hu","So"]},{"c":["AMST 298","EAST 398","ER&M 288"],"t":"Remembering the Korean War","r":1,"d":["Hu"]},{"c":["AMST 332","HSAR 410"],"t":"Humbugs and Visionaries: American Artists and Writers Before the Civil War","r":1,"d":["Hu"]},{"c":["AMST 333"],"t":"Humbugs and Visionaries: Development and Reform in Early Philadelphia","r":1,"d":["Hu"]},{"c":["AMST 349","THST 427"],"t":"Technologies of Movement Research","r":1,"d":[]},{"c":["AMST 353","HIST 196J"],"t":"21st-Century US History: The First Decade","r":1,"d":["WR","Hu"]},{"c":["AMST 358","ENGL 281"],"t":"Animals in Modern American Fiction","r":1,"d":["Hu"]},{"c":["AMST 370","THST 380"],"t":"Choreographic Invention in 20th Century America","r":1,"d":["WR","Hu"]},{"c":["AMST 382","WGSS 372"],"t":"Theory and Politics of Sexual Consent","r":1,"d":["So"]},{"c":["AMST 403"],"t":"Introduction to Public Humanities","r":1,"d":["Hu"]},{"c":["AMST 427","PLSC 269","WGSS 427"],"t":"Politics of Gender and Sexuality in the United States","r":1,"d":["So"]},{"c":["AMST 435","ANTH 366"],"t":"Inequality in America","r":1,"d":["So"]},{"c":["AMST 447","EDST 270","ER&M 367"],"t":"Contemporary Native American K-12 and Postsecondary Educational Policy","r":1,"d":["So"]},{"c":["AMST 453","HIST 119J"],"t":"The United States Constitution of 1787","r":1,"d":["WR","Hu"]},{"c":["AMST 462","ER&M 462","WGSS 463","AMST 778","ANTH 666","ER&M 762","WGSS 666"],"t":"The Study of Privilege in the Americas","r":1,"d":["So"]},{"c":["AMST 464","EVST 464","FILM 456","THST 458"],"t":"Documentary Film Workshop","r":1,"d":[]},{"c":["AMST 469","EP&E 396","PLSC 251","AMST 752","PLSC 812"],"t":"American Progressivism and Its Critics","r":1,"d":["So"]},{"c":["AMST 472"],"t":"Individual Reading and Research for Juniors and Seniors","r":1,"d":[]},{"c":["AMST 491"],"t":"Senior Project","r":1,"d":[]},{"c":["AMST 494"],"t":"Senior Project for the Intensive Major","r":1,"d":[]},{"c":["AMTH 160","MATH 160","S&DS 160"],"t":"The Structure of Networks","r":1,"d":["QR"]},{"c":["AMTH 222","MATH 222"],"t":"Linear Algebra with Applications","r":1,"d":["QR"]},{"c":["AMTH 244","MATH 244"],"t":"Discrete Mathematics","r":1,"d":["QR"]},{"c":["AMTH 247","MATH 247"],"t":"Intro to Partial Differential Equations","r":1,"d":["QR"]},{"c":["AMTH 260","MATH 260"],"t":"Basic Analysis in Function Spaces","r":1,"d":["QR"]},{"c":["AMTH 262","CPSC 262","S&DS 262","S&DS 562"],"t":"Computational Tools for Data Science","r":1,"d":["QR"]},{"c":["AMTH 361","S&DS 361","S&DS 661"],"t":"Data Analysis","r":1,"d":["QR"]},{"c":["AMTH 364","EENG 454","S&DS 364","S&DS 664"],"t":"Information Theory","r":1,"d":["QR"]},{"c":["AMTH 482"],"t":"Research Project","r":1,"d":[]},{"c":["AMTH 491"],"t":"Senior Project","r":1,"d":[]},{"c":["ANTH 021","PLSC 075"],"t":"Memorialization of Mass Atrocities in the Digital Age","r":1,"d":["So"]},{"c":["ANTH 110"],"t":"An Introduction to Cultural Anthropology","r":1,"d":["So"]},{"c":["ANTH 119"],"t":"Law as Culture","r":1,"d":["So"]},{"c":["ANTH 182"],"t":"Primate Behavior and Ecology","r":1,"d":["So"]},{"c":["ANTH 203"],"t":"Primate Conservation","r":1,"d":["So"]},{"c":["ANTH 204"],"t":"Molecular Anthropology","r":1,"d":["Sc"]},{"c":["ANTH 215","ARCG 215","ANTH 658","ARCG 658"],"t":"Archaeology of China","r":1,"d":["So"]},{"c":["ANTH 221","HIST 133","HSHM 238"],"t":"The History of Drugs in America","r":1,"d":["Hu","So"]},{"c":["ANTH 242"],"t":"Human Evolutionary Biology and Life History","r":1,"d":["Sc","So"]},{"c":["ANTH 250","ANTH 671","ARCG 671"],"t":"Bioarchaeology","r":1,"d":["So"]},{"c":["ANTH 253","ARCG 253","ANTH 559","ARCG 559"],"t":"Introduction to Experimental Archaeology","r":1,"d":["So"]},{"c":["ANTH 264","ARCG 264","SPAN 404"],"t":"Aztec Archaeology and Ethnohistory","r":1,"d":["So"]},{"c":["ANTH 267","ARCG 267"],"t":"Human Evolution","r":1,"d":["Sc","So"]},{"c":["ANTH 291","SAST 310"],"t":"Food Cultures in South Asia","r":1,"d":["So"]},{"c":["ANTH 303"],"t":"Field Methods in Cultural Anthropology","r":1,"d":["WR","So"]},{"c":["ANTH 308","WGSS 407"],"t":"Feminist & Queer Ethnographies: Family, Community, Nation","r":1,"d":["Hu","So"]},{"c":["ANTH 322","EVST 324","SAST 306"],"t":"Environmental Justice in South Asia","r":1,"d":["So"]},{"c":["ANTH 326","ARCG 326"],"t":"Ancient Civilizations of the Eurasian Steppes","r":1,"d":["So"]},{"c":["ANTH 331","ARCG 354","EVST 354","HIST 204J","NELC 324","ANTH 647","ARCG 654","NELC 688"],"t":"The Ancient State: Genesis and Crisis from Mesopotamia to Mexico","r":1,"d":["Hu","So"]},{"c":["ANTH 346"],"t":"Ethnography and Capitalism","r":1,"d":["So"]},{"c":["ANTH 362","ANTH 562"],"t":"Unity and Diversity in Chinese Culture","r":1,"d":[]},{"c":["ANTH 367"],"t":"Technology and Culture","r":1,"d":[]},{"c":["ANTH 386","GLBL 393"],"t":"Humanitarian Interventions: Ethics, Politics, and Health","r":1,"d":["WR","So"]},{"c":["ANTH 410","ARCG 410","ANTH 719","ARCG 719"],"t":"Ethnohistory and Archaeology","r":1,"d":["So"]},{"c":["ANTH 414","EAST 417","ANTH 575","EAST 575"],"t":"Hubs, Mobilities, and World Cities","r":1,"d":["So"]},{"c":["ANTH 418","EAST 418","ANTH 518","EAST 518"],"t":"Emotional Technologies of Affect, Artificial Intelligence, and Social Robotics in East Asia","r":1,"d":["So"]},{"c":["ANTH 438"],"t":"Culture, Power, Oil","r":1,"d":["So"]},{"c":["ANTH 447","MMES 447","ANTH 538"],"t":"Culture and Politics in the Contemporary Middle East","r":1,"d":["So"]},{"c":["ANTH 455","WGSS 459","ANTH 655","WGSS 659"],"t":"Masculinity and Men\u2019s Health","r":1,"d":["So"]},{"c":["ANTH 464","ARCG 464","E&EB 464","ANTH 864","ARCG 864"],"t":"Human Osteology","r":1,"d":["Sc","So"]},{"c":["ANTH 469","ANTH 665"],"t":"Evolution of Human Diet","r":1,"d":["WR","Sc","So"]},{"c":["ANTH 471"],"t":"Readings in Anthropology","r":1,"d":[]},{"c":["ANTH 472"],"t":"Readings in Anthropology","r":1,"d":[]},{"c":["ANTH 476","ARCG 476"],"t":"Spatial Analysis for Archaeology","r":1,"d":["So"]},{"c":["ANTH 491"],"t":"The Senior Essay","r":1,"d":[]},{"c":["ANTH 492","ARCG 492","NELC 321","ANTH 692","ARCG 692","NELC 537"],"t":"Imaging Ancient Worlds in Museum Collections","r":1,"d":[]},{"c":["APHY 050","ENAS 050","PHYS 050"],"t":"Science of Modern Technology and Public Policy","r":1,"d":["Sc"]},{"c":["APHY 100","ENAS 100","EPS 105","EVST 100","PHYS 100"],"t":"Energy, Environment, and Public Policy","r":1,"d":["QR","Sc"]},{"c":["APHY 110","ENAS 110"],"t":"The Technological World","r":1,"d":["QR","Sc"]},{"c":["APHY 151","ENAS 151","PHYS 151"],"t":"Multivariable Calculus for Engineers","r":1,"d":["QR"]},{"c":["APHY 194","ENAS 194"],"t":"Ordinary and Partial Differential Equations with Applications","r":1,"d":["QR"]},{"c":["APHY 322"],"t":"Electromagnetic Waves and Devices","r":1,"d":["QR","Sc"]},{"c":["APHY 389","APHY 689"],"t":"Science Governance: Policy Topics For Academic Researchers","r":1,"d":[]},{"c":["APHY 418","EENG 402","ENAS 718"],"t":"Advanced Electron Devices","r":1,"d":["QR","Sc"]},{"c":["APHY 449","PHYS 449","APHY 549","ENAS 851","PHYS 549"],"t":"Solid State Physics II","r":1,"d":["QR","Sc"]},{"c":["APHY 450","ENAS 450","MENG 450","APHY 725","ENAS 725"],"t":"Advanced Synchrotron Techniques and Electron Spectroscopy of Materials","r":1,"d":["QR","Sc"]},{"c":["APHY 469"],"t":"Special Projects","r":1,"d":[]},{"c":["APHY 472"],"t":"Senior Special Projects","r":1,"d":[]},{"c":["ARBC 120","ARBC 501"],"t":"Elementary Modern Standard Arabic II","r":1.5,"d":["L2"]},{"c":["ARBC 122","ARBC 522"],"t":"Modern Standard Arabic for Heritage Learners I","r":1,"d":["L2"]},{"c":["ARBC 140","ARBC 503"],"t":"Intermediate Modern Standard Arabic II","r":1.5,"d":["L4"]},{"c":["ARBC 146","ARBC 510"],"t":"Beginning Classical Arabic II","r":1,"d":["L4"]},{"c":["ARBC 166","ARBC 512"],"t":"Intermediate Classical Arabic II","r":1,"d":["L5","Hu"]},{"c":["ARBC 180","ARBC 580"],"t":"Introduction to Women's Arabic Literature","r":1,"d":["L5","Hu"]},{"c":["ARCG 031","EVST 030","NELC 026"],"t":"Origins of Civilization: Egypt and Mesopotamia","r":1,"d":["Hu","So"]},{"c":["ARCG 110","HSAR 110"],"t":"Introduction to the History of Art: Global Decorative Arts","r":1,"d":["Hu"]},{"c":["ARCG 362","EPS 362","EVST 362","ARCG 762","EMD 548","ENV 726","EPS 562"],"t":"Observing Earth from Space","r":1,"d":["QR","Sc"]},{"c":["ARCH 154"],"t":"Drawing Architecture","r":1,"d":[]},{"c":["ARCH 162"],"t":"Materials in Architecture","r":1,"d":[]},{"c":["ARCH 200","URBN 200"],"t":"Scales of Design","r":1,"d":["Hu"]},{"c":["ARCH 250"],"t":"Methods and Form in Architecture I","r":1.5,"d":[]},{"c":["ARCH 251"],"t":"Methods and Form in Architecture II","r":1.5,"d":[]},{"c":["ARCH 312","HSAR 312"],"t":"Modern Architecture in a Global Context, 1750-present","r":1,"d":["Hu"]},{"c":["ARCH 325","URBN 417"],"t":"Fugitive Practice: Introducing, Recentering, and Exploring Black and Indigenous Design Methods","r":1,"d":["Hu"]},{"c":["ARCH 330"],"t":"Creativity, Innovation, and \u201cThe New\u201d","r":1,"d":["Hu"]},{"c":["ARCH 331"],"t":"In Ruins: Cultural Dimensions of the Climate Crisis","r":1,"d":["So"]},{"c":["ARCH 332"],"t":"Cultural AI: Machine Vision, Art, and Design","r":1,"d":[]},{"c":["ARCH 336"],"t":"Groundlessness","r":1,"d":["WR","Hu","So"]},{"c":["ARCH 337"],"t":"Field to Building, and Back","r":1,"d":["Hu"]},{"c":["ARCH 341","GLBL 253","LAST 318","URBN 341","ARCH 4216"],"t":"Globalization Space","r":1,"d":["Hu"]},{"c":["ARCH 392","ENGL 478"],"t":"Writing about Place","r":1,"d":["WR","Hu"]},{"c":["ARCH 471"],"t":"Individual Tutorial","r":1,"d":[]},{"c":["ARCH 472"],"t":"Individual Tutorial Lab","r":0.5,"d":[]},{"c":["ARCH 491","URBN 491"],"t":"Senior Project","r":1,"d":[]},{"c":["ARCH 494"],"t":"Senior Project Design Studio","r":1.5,"d":[]},{"c":["ART 004"],"t":"Words and Pictures","r":1,"d":["Hu"]},{"c":["ART 007"],"t":"Art of the Game","r":1,"d":[]},{"c":["ART 014"],"t":"Research in the Making","r":1,"d":["Hu"]},{"c":["ART 106"],"t":"Art of the Printed Word","r":1,"d":["Hu"]},{"c":["ART 110"],"t":"Sculpture Basics","r":1,"d":["Hu"]},{"c":["ART 111"],"t":"Visual Thinking","r":1,"d":["Hu"]},{"c":["ART 114"],"t":"Basic Drawing","r":1,"d":["Hu"]},{"c":["ART 122"],"t":"Introduction to Sculpture: Video Installation","r":1,"d":["Hu"]},{"c":["ART 130"],"t":"Painting Basics","r":1,"d":["Hu"]},{"c":["ART 132"],"t":"Introduction to Graphic Design","r":1,"d":["Hu"]},{"c":["ART 136"],"t":"Black & White Photography Capturing Light","r":1,"d":["Hu"]},{"c":["ART 138"],"t":"Digital Photography Seeing in Color","r":1,"d":["Hu"]},{"c":["ART 142","FILM 162"],"t":"Introductory Documentary Filmmaking","r":1,"d":[]},{"c":["ART 145"],"t":"Introduction to Digital Video","r":1,"d":[]},{"c":["ART 210"],"t":"Sculpture as Object","r":1,"d":["Hu"]},{"c":["ART 225"],"t":"Adventures in Self-Publishing","r":1,"d":[]},{"c":["ART 264"],"t":"Typography!","r":1,"d":[]},{"c":["ART 265"],"t":"Typography: Expression, Structure, and Sequence","r":1,"d":[]},{"c":["ART 266"],"t":"Graphic Design Histories","r":1,"d":["Hu"]},{"c":["ART 285"],"t":"Digital Animation","r":1,"d":[]},{"c":["ART 323","HSAR 478"],"t":"Paint","r":1,"d":[]},{"c":["ART 331"],"t":"Intermediate Painting","r":1,"d":[]},{"c":["ART 338"],"t":"Contemporary Problems in Color with Digital Photography","r":1,"d":[]},{"c":["ART 341","FILM 355"],"t":"Intermediate Film Writing and Directing","r":1,"d":[]},{"c":["ART 342","FILM 356"],"t":"Intermediate Documentary Filmmaking","r":1,"d":["Hu"]},{"c":["ART 348"],"t":"Body, Space, and Time","r":1,"d":["Hu"]},{"c":["ART 369"],"t":"Interactive Design and the Internet: Software for People","r":1,"d":[]},{"c":["ART 379"],"t":"Form For Content In Medium and Large Format","r":1,"d":[]},{"c":["ART 395"],"t":"Junior Seminar","r":1,"d":["Hu"]},{"c":["ART 421"],"t":"Advanced Drawing","r":1,"d":[]},{"c":["ART 432"],"t":"Painting Studio: The Narrative Figure","r":1,"d":["Hu"]},{"c":["ART 443","FILM 484"],"t":"Advanced Film Writing and Directing","r":1,"d":[]},{"c":["ART 446"],"t":"Advanced Sculpture","r":1,"d":[]},{"c":["ART 457"],"t":"Interdisciplinary Printmaking","r":1,"d":[]},{"c":["ART 469"],"t":"Advanced Graphic Design: Interpretation, Translation","r":1,"d":[]},{"c":["ART 472"],"t":"Independent Projects","r":1,"d":[]},{"c":["ART 495"],"t":"Senior Project I","r":1,"d":[]},{"c":["ART 496"],"t":"Senior Project II","r":1,"d":[]},{"c":["ASL 120"],"t":"American Sign Language II","r":1.5,"d":["L2"]},{"c":["ASL 140"],"t":"American Sign Language IV","r":1.5,"d":["L4"]},{"c":["ASL 150"],"t":"Critical Issues Facing Deaf People in Society","r":1,"d":["L5"]},{"c":["ASTR 120"],"t":"Galaxies and the Universe","r":1,"d":["QR","Sc"]},{"c":["ASTR 130"],"t":"Origins and the Search for Life in the Universe","r":1,"d":["Sc"]},{"c":["ASTR 210"],"t":"Stars and Their Evolution","r":1,"d":["QR","Sc"]},{"c":["ASTR 320"],"t":"Physical Processes in Astronomy","r":1,"d":["QR","Sc"]},{"c":["ASTR 330"],"t":"Scientific Computing in Astrophysics","r":1,"d":[]},{"c":["ASTR 472"],"t":"Independent Project in Astronomy","r":1,"d":[]},{"c":["ASTR 491"],"t":"The Two-Term Senior Project","r":1,"d":[]},{"c":["ASTR 492"],"t":"The One-Term Senior Project","r":1,"d":[]},{"c":["BENG 249"],"t":"Introduction to Biomedical Computation","r":1,"d":["QR"]},{"c":["BENG 351","CENG 351","ENAS 551"],"t":"Biotransport and Kinetics","r":1,"d":["QR"]},{"c":["BENG 352"],"t":"Biomedical Signals and Images","r":1,"d":["QR"]},{"c":["BENG 356L"],"t":"Biomedical Engineering Laboratory","r":0.5,"d":["Sc"]},{"c":["BENG 403","ECON 463"],"t":"The Economics and Science of Medicine","r":1,"d":["So"]},{"c":["BENG 404","MENG 404","ENAS 529"],"t":"Medical Device Design and Innovation","r":1,"d":[]},{"c":["BENG 405","EVST 415","ENAS 805"],"t":"Biotechnology and the Developing World","r":1,"d":[]},{"c":["BENG 406"],"t":"Medical Software Design","r":1,"d":["Sc"]},{"c":["BENG 435","ENAS 535","PATH 630"],"t":"Biomaterial-Tissue Interactions","r":1,"d":["Sc"]},{"c":["BENG 449","ENAS 549"],"t":"Biomedical Data Analysis","r":1,"d":["QR"]},{"c":["BENG 455","ENAS 555"],"t":"Vascular Mechanics","r":1,"d":["QR"]},{"c":["BENG 456","ENAS 556"],"t":"Molecular and Cellular Biomechanics","r":1,"d":["QR","Sc"]},{"c":["BENG 458","ENAS 758"],"t":"Multiscale Models of Biomechanical Systems","r":1,"d":["QR"]},{"c":["BENG 459","MENG 459","ENAS 559"],"t":"Neuromuscular Biomechanics","r":1,"d":["QR"]},{"c":["BENG 465","MB&B 361","MCDB 361","NSCI 325","AMTH 765","CB&B 562","ENAS 561","INP 562","MB&B 562","MCDB 562","PHYS 562"],"t":"Modeling Biological Systems II","r":1,"d":["QR"]},{"c":["BENG 467","ENAS 567"],"t":"Systems Biology of Cell Signaling","r":1,"d":["QR","Sc"]},{"c":["BENG 468","ENAS 568"],"t":"Topics in ImmunoEngineering","r":1,"d":["Sc"]},{"c":["BENG 472"],"t":"Special Projects","r":1,"d":[]},{"c":["BENG 474"],"t":"Senior Project","r":1,"d":[]},{"c":["BENG 485","ENAS 585","INP 585"],"t":"Fundamentals of Neuroimaging","r":1,"d":["WR","Sc"]},{"c":["BIOL 101"],"t":"Biochemistry and Biophysics","r":0.5,"d":["Sc"]},{"c":["BIOL 102"],"t":"Principles of Cell Biology","r":0.5,"d":["Sc"]},{"c":["BIOL 103"],"t":"Genetics and Development","r":0.5,"d":["Sc"]},{"c":["BIOL 104"],"t":"Principles of Ecology and Evolutionary Biology","r":0.5,"d":["Sc"]},{"c":["BNGL 120"],"t":"Introductory Bengali II","r":1.5,"d":["L2"]},{"c":["BNGL 160"],"t":"Advanced Bengali II","r":1,"d":["L5"]},{"c":["BRST 154"],"t":"Modern British Theater","r":1,"d":["WR","Hu"]},{"c":["BRST 161"],"t":"Joseph Wright of Derby: Art in the Age of Enlightenment","r":1,"d":["Hu"]},{"c":["BRST 316"],"t":"Indigenous London: Native American Literature in Place","r":1,"d":["WR","Hu"]},{"c":["BRST 317","HIST 313J","SAST 323"],"t":"British Raj and the Indian Nation (1757-1947)","r":1,"d":["WR","Hu"]},{"c":["BRST 325"],"t":"Murder Mystery, British Legal History","r":1,"d":["Hu"]},{"c":["BURM 120"],"t":"Elementary Burmese II","r":1.5,"d":["L2"]},{"c":["BURM 140"],"t":"Intermediate Burmese II","r":1.5,"d":["L4"]},{"c":["CENG 120","ENAS 120","ENVE 120"],"t":"Introduction to Environmental Engineering","r":1,"d":["QR","Sc"]},{"c":["CENG 300","CENG S300"],"t":"Chemical Engineering Thermodynamics","r":1,"d":["QR","Sc"]},{"c":["CENG 301"],"t":"Chemical Kinetics and Chemical Reactors","r":1,"d":["QR","Sc"]},{"c":["CENG 315","ENVE 315"],"t":"Transport Phenomena II","r":1,"d":["QR","Sc"]},{"c":["CENG 345","ENAS 345"],"t":"Principles and Applications of Interfacial Phenomena","r":1,"d":["Sc"]},{"c":["CENG 412L"],"t":"Chemical Engineering Laboratory and Design","r":1,"d":["Sc"]},{"c":["CENG 416","ENVE 416"],"t":"Chemical Engineering Process Design","r":1,"d":["QR","Sc"]},{"c":["CENG 464","ENVE 464","ENAS 664"],"t":"Engineering Solutions to Climate Change","r":1,"d":[]},{"c":["CENG 471"],"t":"Independent Research","r":1,"d":[]},{"c":["CENG 490"],"t":"Senior Research Project","r":1,"d":[]},{"c":["CGSC 216","LING 116","PSYC 116"],"t":"Cognitive Science of Language","r":1,"d":["So"]},{"c":["CGSC 239","LING 239","PSYC 239","LING 639"],"t":"Phonetics II: Speech Production and Perception","r":1,"d":["So"]},{"c":["CGSC 313","PHIL 305","PSYC 313"],"t":"Philosophy for Psychologists","r":1,"d":["Hu","So"]},{"c":["CGSC 334","EDST 334","HUMS 395","PHIL 334"],"t":"Public Plato: Ancient Wisdom in the Digital Age","r":1,"d":["Hu"]},{"c":["CGSC 375","LING 375","PSYC 375","LING 875"],"t":"Linguistic Meaning and Conceptual Structure","r":1,"d":["So"]},{"c":["CGSC 383","LING 383","LING 783"],"t":"Causative Constructions","r":1,"d":["So"]},{"c":["CGSC 420","NSCI 440","PSYC 420"],"t":"Topics in Clinical Neuroscience","r":1,"d":["So"]},{"c":["CGSC 425","PSYC 425","PSYC 625"],"t":"Social Perception","r":1,"d":["So"]},{"c":["CGSC 437","PSYC 437","PSYC 637"],"t":"Minds, Brains, and Machines","r":1,"d":["So"]},{"c":["CGSC 472"],"t":"Directed Research in Cognitive Science","r":1,"d":[]},{"c":["CGSC 474"],"t":"Directed Reading in Cognitive Science","r":1,"d":[]},{"c":["CGSC 491"],"t":"Senior Project","r":1,"d":[]},{"c":["CHEM 106"],"t":"Chemistry and Forensics","r":1,"d":["Sc"]},{"c":["CHEM 134L"],"t":"General Chemistry Laboratory I","r":0.5,"d":["Sc"]},{"c":["CHEM 136L"],"t":"General Chemistry Laboratory II","r":0.5,"d":["Sc"]},{"c":["CHEM 161"],"t":"General Chemistry I","r":1,"d":["QR","Sc"]},{"c":["CHEM 165"],"t":"General Chemistry II","r":1,"d":["QR","Sc"]},{"c":["CHEM 167"],"t":"Advanced General Chemistry II","r":1,"d":["QR","Sc"]},{"c":["CHEM 175"],"t":"Organic Chemistry for First Year Students II","r":1,"d":["Sc"]},{"c":["CHEM 220"],"t":"Organic Chemistry","r":1,"d":["Sc"]},{"c":["CHEM 221"],"t":"The Organic Chemistry of Life Processes","r":1,"d":["Sc"]},{"c":["CHEM 222L"],"t":"Laboratory for Organic Chemistry I","r":0.5,"d":["Sc"]},{"c":["CHEM 223L"],"t":"Laboratory for Organic Chemistry II","r":0.5,"d":["Sc"]},{"c":["CHEM 251L"],"t":"Inorganic Chemistry Laboratory","r":1,"d":["Sc"]},{"c":["CHEM 252"],"t":"Introductory Inorganic Chemistry","r":1,"d":["Sc"]},{"c":["CHEM 331L"],"t":"Laboratory for Physical Chemistry II","r":1,"d":["Sc"]},{"c":["CHEM 333"],"t":"Physical Chemistry with Applications in the Physical Sciences II","r":1,"d":["QR","Sc"]},{"c":["CHEM 355L"],"t":"Chemical Biology and Bioanalytical Chemistry Laboratory","r":1,"d":["Sc"]},{"c":["CHEM 404","CHEM 504"],"t":"Applications of Organometallic Chemistry","r":0.5,"d":["Sc"]},{"c":["CHEM 405","CHEM 505"],"t":"Inorganic Reaction Mechanisms","r":0.5,"d":["Sc"]},{"c":["CHEM 406","CHEM 506"],"t":"Bioinorganic Spectroscopy","r":0.5,"d":["Sc"]},{"c":["CHEM 407","CHEM 507"],"t":"Bioinorganic Mechanisms","r":0.5,"d":["Sc"]},{"c":["CHEM 480"],"t":"Introduction to Independent Research in Chemistry","r":1,"d":[]},{"c":["CHEM 490"],"t":"Independent Research in Chemistry","r":1,"d":[]},{"c":["CHEM 492","CHEM 592"],"t":"Biochemical Rates and Mechanisms I","r":0.5,"d":["Sc"]},{"c":["CHEM 496","CHEM 596"],"t":"Computational Chemistry","r":0.5,"d":["QR","Sc"]},{"c":["CHLD 127","EDST 127","PSYC 127"],"t":"Theory and Practice of Early Childhood Education","r":1,"d":["WR","So"]},{"c":["CHLD 128","EDST 128","PSYC 128"],"t":"Language, Literacy, and Play","r":1,"d":["WR","So"]},{"c":["CHLD 350","EDST 350","PSYC 350"],"t":"Autism and Related Disorders","r":1,"d":["So"]},{"c":["CHNS 120"],"t":"Elementary Modern Chinese II","r":1.5,"d":["L2"]},{"c":["CHNS 122"],"t":"Elementary Modern Chinese for Heritage Speakers","r":1.5,"d":["L2"]},{"c":["CHNS 140"],"t":"Intermediate Modern Chinese II","r":1.5,"d":["L4"]},{"c":["CHNS 142"],"t":"Intermediate Modern Chinese for Heritage Speakers","r":1.5,"d":["L4"]},{"c":["CHNS 151"],"t":"Advanced Modern Chinese II","r":1,"d":["L5"]},{"c":["CHNS 153"],"t":"Advanced Modern Chinese for Heritage Speakers","r":1,"d":["L5"]},{"c":["CHNS 157"],"t":"Advanced Modern Chinese through Film for Heritage Speakers","r":1,"d":["L5"]},{"c":["CHNS 159"],"t":"Advanced Chinese IV through Films and Stories","r":1,"d":["L5"]},{"c":["CHNS 163"],"t":"Advanced Chinese through History, Culture, and Arts","r":1,"d":["L5"]},{"c":["CHNS 165"],"t":"Readings in Modern Chinese Fiction","r":1,"d":["L5"]},{"c":["CHNS 167"],"t":"Chinese for Current Affairs","r":1,"d":["L5"]},{"c":["CHNS 169"],"t":"Chinese for Global Enterprises","r":1,"d":["L5"]},{"c":["CHNS 171","CHNS 571"],"t":"Introduction to Literary Chinese II","r":1,"d":["L5"]},{"c":["CLCV 076","ENGL 076"],"t":"Edward Gibbon's Decline and Fall of the Roman Empire","r":1,"d":["WR","Hu"]},{"c":["CLCV 110","HUMS 110","PLSC 289"],"t":"Power of Persuasion, Art of Speaking Well: An Introduction to Ancient Rhetoric","r":1,"d":["Hu","So"]},{"c":["CLCV 215"],"t":"Is Rhetoric a Good Thing? The Debate Between Rhetoric and Philosophy","r":1,"d":["Hu"]},{"c":["CLCV 216","LITR 239","MGRK 216","WGSS 209"],"t":"Dionysus in Modernity","r":1,"d":["Hu"]},{"c":["CLCV 258","EVST 257","HIST 201"],"t":"Ecocultures of Antiquity: Ecocritical Approaches to Ancient Greece and Rome","r":1,"d":["Hu"]},{"c":["CLCV 305","GMAN 489","HSAR 489"],"t":"Pathos-Figures: Affection-Images in the Visual Arts","r":1,"d":["Hu"]},{"c":["CLCV 319","HIST 242J","MGRK 300","WGSS 293"],"t":"The Olympic Games, Ancient and Modern","r":1,"d":["Hu"]},{"c":["CLCV 350"],"t":"The Ancient Romans and their World in 13 Objects","r":1,"d":["Hu"]},{"c":["CLCV 451"],"t":"Two-Term Senior Project for the Major in Classical Civilization","r":1,"d":[]},{"c":["CLCV 452"],"t":"One-Term Senior Project for the Major in Classical Civilization","r":1,"d":[]},{"c":["CLSS 491"],"t":"Two-Term Senior Essay for the Intensive Major in Classics","r":1,"d":[]},{"c":["CLSS 492"],"t":"One-Term Senior Essay for the Intensive Major in Classics","r":1,"d":[]},{"c":["CPAR 491"],"t":"Senior Project in Computing and the Arts","r":1,"d":[]},{"c":["CPSC 035","MUSI 035"],"t":"Twenty-First Century Electronic and Computer Music Techniques","r":1,"d":["QR"]},{"c":["CPSC 110"],"t":"Python Programming for Humanities and Social Sciences","r":1,"d":["QR"]},{"c":["CPSC 112"],"t":"Introduction to Programming","r":1,"d":["QR"]},{"c":["CPSC 123","PLSC 351","S&DS 123","S&DS 523"],"t":"YData: An Introduction to Data Science","r":1,"d":["QR"]},{"c":["CPSC 184"],"t":"Intellectual Property in the Digital Age","r":1,"d":["Hu","So"]},{"c":["CPSC 185"],"t":"Control, Privacy, and Technology","r":1,"d":["WR","So"]},{"c":["CPSC 201"],"t":"Introduction to Computer Science","r":1,"d":["QR"]},{"c":["CPSC 202"],"t":"Mathematical Tools for Computer Science","r":1,"d":["QR"]},{"c":["CPSC 223"],"t":"Data Structures and Programming Techniques","r":1,"d":["QR"]},{"c":["CPSC 276","CPSC 376","CLSS 840","HSAR 567"],"t":"Introduction to Applications of Computer and Data Science for the Digital Humanities","r":1,"d":["QR","Hu"]},{"c":["CPSC 280"],"t":"Directed Reading","r":1,"d":[]},{"c":["CPSC 290"],"t":"Directed Research","r":1,"d":[]},{"c":["CPSC 310"],"t":"Technology, Power, and Security: Political Challenges of the Computer Age","r":1,"d":["QR","So"]},{"c":["CPSC 323"],"t":"Introduction to Systems Programming and Computer Organization","r":1,"d":["QR"]},{"c":["CPSC 327"],"t":"Object-Oriented Programming","r":1,"d":["QR"]},{"c":["CPSC 338","EENG 348"],"t":"Digital Systems","r":1,"d":["QR"]},{"c":["CPSC 365","ECON 365"],"t":"Algorithms","r":1,"d":["QR"]},{"c":["CPSC 368","CPSC 516"],"t":"Algorithms via Convex Optimization","r":1,"d":[]},{"c":["CPSC 419","CPSC 519"],"t":"Full Stack Web Programming","r":1,"d":[]},{"c":["CPSC 420","EENG 420","CPSC 520","ENAS 820"],"t":"Computer Architecture","r":1,"d":[]},{"c":["CPSC 421","CPSC 521"],"t":"Compilers and Interpreters","r":1,"d":["QR"]},{"c":["CPSC 426","CPSC 526"],"t":"Building Distributed Systems","r":1,"d":["QR"]},{"c":["CPSC 432","MUSI 427","CPSC 532"],"t":"Computer Music: Sound Representation and Synthesis","r":1,"d":["QR"]},{"c":["CPSC 439","CPSC 539"],"t":"Software Engineering","r":1,"d":["QR"]},{"c":["CPSC 440","CPSC 540"],"t":"Advanced Databases","r":1,"d":["QR"]},{"c":["CPSC 451","CPSC 551"],"t":"The User Interface","r":1,"d":[]},{"c":["CPSC 452","AMTH 552","CB&B 663","CPSC 552"],"t":"Deep Learning Theory and Applications","r":1,"d":[]},{"c":["CPSC 454","CPSC 554"],"t":"Software Analysis and Verification","r":1,"d":["QR"]},{"c":["CPSC 458","CPSC 558"],"t":"Automated Decision Systems","r":1,"d":["QR"]},{"c":["CPSC 466","CPSC 566"],"t":"Blockchain and Cryptocurrency","r":1,"d":["QR"]},{"c":["CPSC 467","CPSC 567"],"t":"Introduction to Cryptography","r":1,"d":["QR"]},{"c":["CPSC 469","CPSC 569"],"t":"Randomized Algorithms","r":1,"d":["QR"]},{"c":["CPSC 470","CPSC 570"],"t":"Artificial Intelligence","r":1,"d":["QR"]},{"c":["CPSC 473","CPSC 573"],"t":"Intelligent Robotics Laboratory","r":1,"d":["QR"]},{"c":["CPSC 477","CPSC 577"],"t":"Natural Language Processing","r":1,"d":["QR"]},{"c":["CPSC 478","CPSC 578"],"t":"Computer Graphics","r":1,"d":["QR"]},{"c":["CPSC 480","CPSC 580"],"t":"Introduction to Computer Vision","r":1,"d":[]},{"c":["CPSC 482","CPSC 582"],"t":"Current Topics in Applied Machine Learning","r":1,"d":[]},{"c":["CPSC 484","CPSC 584"],"t":"Introduction to Human-Computer Interaction","r":1,"d":["So"]},{"c":["CPSC 485","CPSC 585"],"t":"Applied Planning and Optimization","r":1,"d":["QR"]},{"c":["CPSC 486","CPSC 586"],"t":"Probabilistic Machine Learning","r":1,"d":[]},{"c":["CPSC 490"],"t":"Senior Project","r":1,"d":[]},{"c":["CSBF 380"],"t":"War Films and Warrior Culture","r":1,"d":["Hu"]},{"c":["CSBK 380"],"t":"Craft, Style, and Empathy in Immersive Journalism","r":1,"d":[]},{"c":["CSBR 380"],"t":"Sovereignty and Socio-Economic Rights in International Law","r":1,"d":[]},{"c":["CSDC 380"],"t":"Step Right Up: The History of the American Circus","r":1,"d":[]},{"c":["CSEC 491"],"t":"Senior Project","r":1,"d":[]},{"c":["CSES 380"],"t":"A Multidisciplinary Exploration of Disney: Perspectives on a Global Enterprise","r":1,"d":[]},{"c":["CSGH 380"],"t":"Histories of the Screen","r":1,"d":[]},{"c":["CSJE 380"],"t":"The Film Director\u2019s Craft\t","r":1,"d":[]},{"c":["CSMC 380"],"t":"Drink Culture: The History, Ethics & Aesthetics of Cocktails","r":1,"d":[]},{"c":["CSMY 380"],"t":"The Psychology of Argument and Persuasion","r":1,"d":[]},{"c":["CSPC 380"],"t":"Law and Moral Psychology","r":1,"d":[]},{"c":["CSSM 380"],"t":"Exploring and Understanding White Collar Crime","r":1,"d":[]},{"c":["CSSY 380"],"t":"Trials of the 20th Century","r":1,"d":["So"]},{"c":["CSTC 380"],"t":"Masters of the Universe: Demystifying Private Equity","r":1,"d":[]},{"c":["CSTD 380"],"t":"Sports, Global Capitalism, and Identity","r":1,"d":[]},{"c":["CSYC 380"],"t":"Mastering the Art of Watercolor","r":1,"d":["Hu"]},{"c":["CZEC 120"],"t":"Elementary Czech II","r":1.5,"d":["L2"]},{"c":["CZEC 140"],"t":"Advanced Czech","r":1.5,"d":["L4"]},{"c":["CZEC 246","FILM 364","RSEE 240"],"t":"Milos Forman and His Films","r":1,"d":["Hu"]},{"c":["DEVN 199","EALL 256","EAST 358","GLBL 251","HUMS 272","LITR 265"],"t":"China in Six Keys","r":1,"d":["Hu"]},{"c":["DRST 002"],"t":"Directed Studies: Literature","r":1,"d":["WR","Hu"]},{"c":["DRST 004"],"t":"Directed Studies: Philosophy","r":1,"d":["WR","Hu"]},{"c":["DRST 006"],"t":"Directed Studies: Historical and Political Thought","r":1,"d":["So"]},{"c":["DUTC 120"],"t":"Elementary Dutch II","r":1.5,"d":["L2"]},{"c":["DUTC 140"],"t":"Intermediate Dutch II","r":1.5,"d":["L4"]},{"c":["DUTC 160"],"t":"Advanced Dutch II","r":1,"d":["L5"]},{"c":["E&EB 125","EPS 125"],"t":"History of Life","r":1,"d":["Sc"]},{"c":["E&EB 223L","E&EB 523L"],"t":"Laboratory for Principles of Ecology, Evolutionary Biology, and the Tree of Life","r":0.5,"d":["Sc"]},{"c":["E&EB 225","E&EB 525"],"t":"Evolutionary Biology","r":1,"d":["Sc"]},{"c":["E&EB 242","E&EB 542"],"t":"Behavioral Ecology","r":1,"d":["Sc"]},{"c":["E&EB 272","E&EB 572"],"t":"Ornithology","r":1,"d":["Sc"]},{"c":["E&EB 273","E&EB 573"],"t":"Laboratory for Ornithology","r":0.5,"d":["Sc"]},{"c":["E&EB 275","EVST 400","ENV 734"],"t":"Biological Oceanography","r":1,"d":["Sc"]},{"c":["E&EB 290"],"t":"Comparative Developmental Anatomy of Vertebrates","r":1,"d":["Sc"]},{"c":["E&EB 291L"],"t":"Comparative Anatomy of Vertebrates Laboratory","r":0.5,"d":["Sc"]},{"c":["E&EB 469"],"t":"Tutorial","r":1,"d":[]},{"c":["E&EB 470"],"t":"Senior Tutorial","r":1,"d":[]},{"c":["E&EB 474"],"t":"Research","r":1,"d":[]},{"c":["E&EB 475"],"t":"Senior Research","r":1,"d":[]},{"c":["E&EB 476"],"t":"Senior Research","r":1,"d":[]},{"c":["E&EB 496"],"t":"Intensive Senior Research","r":2,"d":[]},{"c":["EALL 212","PHIL 203","EALL 512"],"t":"Ancient Chinese Thought","r":1,"d":["Hu"]},{"c":["EALL 236","LITR 181","EALL 536"],"t":"Japanese Poetry and Poetics","r":1,"d":["WR","Hu"]},{"c":["EALL 252","EAST 251","FILM 446","LITR 384","EALL 552","EAST 581","FILM 881"],"t":"Japanese Cinema before 1960","r":1,"d":["Hu"]},{"c":["EALL 264"],"t":"Digital China","r":1,"d":["Hu"]},{"c":["EALL 265","EAST 253","LITR 251","EALL 565","EAST 553"],"t":"Japanese Literature after 1970","r":1,"d":["Hu"]},{"c":["EALL 296","EAST 391","RLST 121"],"t":"Religion and Culture in Korea","r":1,"d":["Hu"]},{"c":["EALL 298","EAST 302","FILM 345"],"t":"Politics of East Asian Screen Culture","r":1,"d":["Hu"]},{"c":["EALL 300","EAST 340"],"t":"Sinological Methods","r":1,"d":["Hu"]},{"c":["EALL 351"],"t":"Advanced Readings in Modern Chinese Literature","r":1,"d":["Hu"]},{"c":["EALL 470"],"t":"Independent Tutorial","r":1,"d":[]},{"c":["EALL 471"],"t":"Independent Tutorial","r":1,"d":[]},{"c":["EALL 491"],"t":"Senior Essay","r":1,"d":[]},{"c":["EALL 492"],"t":"Yearlong Senior Essay","r":1,"d":[]},{"c":["EALL 493"],"t":"Yearlong Senior Essay","r":1,"d":[]},{"c":["EAST 237","HSAR 237"],"t":"Arts of China","r":1,"d":[]},{"c":["EAST 301","HIST 307"],"t":"The Making of Japan's Great Peace, 1550\u20131850","r":1,"d":["Hu"]},{"c":["EAST 322","HIST 302J"],"t":"Korea and the Japanese Empire in Critical Contexts","r":1,"d":["WR","Hu"]},{"c":["EAST 326","HIST 326J"],"t":"Yale and Japan","r":1,"d":["WR","Hu"]},{"c":["EAST 335","RLST 135"],"t":"Zen Buddhism","r":1,"d":["Hu"]},{"c":["EAST 380","SOCY 145"],"t":"Inequality and Social Change in China","r":1,"d":["So"]},{"c":["EAST 390","RLST 102"],"t":"Atheism and Buddhism","r":1,"d":["Hu"]},{"c":["EAST 400"],"t":"Religion and Politics in China, Xinjiang, and Tibet","r":1,"d":["Hu"]},{"c":["EAST 413","MUSI 484"],"t":"Introduction to Chinese Music","r":1,"d":["Hu"]},{"c":["EAST 414","PLSC 373"],"t":"State Building in China and Beyond","r":1,"d":["So"]},{"c":["EAST 416","ER&M 230","HIST 301J"],"t":"Korea in the World","r":1,"d":["WR","Hu"]},{"c":["EAST 425","ER&M 411","SOCY 425"],"t":"Migration in East Asia and Beyond","r":1,"d":["So"]},{"c":["EAST 470"],"t":"Independent Study","r":1,"d":[]},{"c":["EAST 480"],"t":"One-Term Senior Essay","r":1,"d":[]},{"c":["EAST 492"],"t":"Senior Research Project","r":0.5,"d":[]},{"c":["ECON 001"],"t":"Economic Ideas Worth a Nobel Prize","r":1,"d":["So"]},{"c":["ECON 002"],"t":"Social Issues in America","r":1,"d":["So"]},{"c":["ECON 108"],"t":"Quantitative Foundations of Microeconomics","r":1,"d":["QR","So"]},{"c":["ECON 110"],"t":"An Introduction to Microeconomic Analysis","r":1,"d":["QR","So"]},{"c":["ECON 111"],"t":"An Introduction to Macroeconomic Analysis","r":1,"d":["So"]},{"c":["ECON 115"],"t":"Introductory Microeconomics","r":1,"d":["QR","So"]},{"c":["ECON 116"],"t":"Introductory Macroeconomics","r":1,"d":["So"]},{"c":["ECON 117"],"t":"Introduction to Data Analysis and Econometrics","r":1,"d":["QR","So"]},{"c":["ECON 121"],"t":"Intermediate Microeconomics","r":1,"d":["QR","So"]},{"c":["ECON 122"],"t":"Intermediate Macroeconomics","r":1,"d":["QR","So"]},{"c":["ECON 123"],"t":"Intermediate Data Analysis and Econometrics","r":1,"d":["QR","So"]},{"c":["ECON 126"],"t":"Macroeconomic Theory","r":1,"d":["QR","So"]},{"c":["ECON 136"],"t":"Econometrics","r":1,"d":["QR","So"]},{"c":["ECON 160","GLBL 383","MGT 862"],"t":"Applications of Game Theory","r":0.5,"d":["So"]},{"c":["ECON 184","GLBL 234"],"t":"International Economics","r":1,"d":["So"]},{"c":["ECON 302","EP&E 364","PHIL 304"],"t":"Choice Theory and its Critics","r":1,"d":["Hu","So"]},{"c":["ECON 326"],"t":"Fundamentals of Economic Development","r":1,"d":["So"]},{"c":["ECON 339","MGT 589"],"t":"Advance Competition Economics and Policy","r":1,"d":["So"]},{"c":["ECON 340","PLSC 359"],"t":"Economics and Politics of Development","r":1,"d":[]},{"c":["ECON 351"],"t":"Mathematical Economics: Game Theory","r":1,"d":["QR","So"]},{"c":["ECON 361"],"t":"Corporate Finance","r":1,"d":[]},{"c":["ECON 375","GLBL 219"],"t":"Monetary Policy","r":1,"d":["WR","So"]},{"c":["ECON 409"],"t":"Firms, Markets, and Competition","r":1,"d":["QR","So"]},{"c":["ECON 410"],"t":"The Economics of Innovation","r":1,"d":[]},{"c":["ECON 417","ECON 561"],"t":"Computational Methods in Economics","r":1,"d":["So"]},{"c":["ECON 429"],"t":"Data Analysis and Strategy","r":1,"d":["So"]},{"c":["ECON 435"],"t":"Economic Topics in Algorithms","r":1,"d":["So"]},{"c":["ECON 436","MGT 540"],"t":"Personal Finance","r":1,"d":["So"]},{"c":["ECON 439"],"t":"Applied Econometrics: Macroeconomic and Finance Forecasting","r":1,"d":["So"]},{"c":["ECON 445"],"t":"The U.S. Banking System","r":1,"d":["So"]},{"c":["ECON 450"],"t":"Investment Analysis","r":1,"d":["So"]},{"c":["ECON 451"],"t":"Economics of Blockchains","r":1,"d":[]},{"c":["ECON 461","HPM 590"],"t":"Economics, Addiction, and Public Policy","r":1,"d":["So"]},{"c":["ECON 462"],"t":"Beliefs and Biases","r":1,"d":[]},{"c":["ECON 465","EP&E 224","GLBL 330"],"t":"Debating Globalization","r":1,"d":["So"]},{"c":["ECON 471","EP&E 297"],"t":"Topics in Cooperative Game Theory","r":1,"d":[]},{"c":["ECON 473","EP&E 227","PLSC 343"],"t":"Equality","r":1,"d":["So"]},{"c":["ECON 486"],"t":"Dynamic Games","r":1,"d":["So"]},{"c":["ECON 488"],"t":"Agents & Fiduciaries: Economics and Law","r":1,"d":["So"]},{"c":["ECON 492"],"t":"The Senior Essay","r":1,"d":[]},{"c":["ECON 499"],"t":"Directed Reading","r":1,"d":[]},{"c":["EDST 107","MB&B 107","PHYS 107"],"t":"Being Human in STEM","r":1,"d":["So"]},{"c":["EDST 135","PHIL 130"],"t":"Philosophy of Education","r":1,"d":["Hu"]},{"c":["EDST 160","PSYC 150"],"t":"Social Psychology","r":1,"d":["So"]},{"c":["EDST 205"],"t":"Principles of Effective Teaching in the Secondary Classroom","r":1,"d":["So"]},{"c":["EDST 217","HIST 140J"],"t":"History of American Education","r":1,"d":["Hu"]},{"c":["EDST 218","HUMS 258","PLSC 319"],"t":"Democracy and Education","r":1,"d":["Hu"]},{"c":["EDST 225"],"t":"Child Care, Society, and Public Policy","r":1,"d":["So"]},{"c":["EDST 230"],"t":"American Education and the Law","r":1,"d":["So"]},{"c":["EDST 235","WGSS 239"],"t":"Education and the Culture Wars","r":1,"d":[]},{"c":["EDST 240","SOCY 396","URBN 379"],"t":"Pursuing Racial Justice in Segregated Schools","r":1,"d":["So"]},{"c":["EDST 261"],"t":"Colloquium: Readings in Education Studies","r":1,"d":[]},{"c":["EDST 274"],"t":"College in Prison","r":1,"d":[]},{"c":["EDST 281","HIST 404J","HUMS 303","PLSC 281","PLSC 578"],"t":"What is the University?","r":1,"d":["Hu","So"]},{"c":["EDST 282","PLSC 417"],"t":"Comparative International Education","r":1,"d":["WR","So"]},{"c":["EDST 285"],"t":"Educational Design: The Form and Function of Schooling and Learning","r":1,"d":["So"]},{"c":["EDST 410"],"t":"Senior Capstone (Spring)","r":1,"d":[]},{"c":["EDST 436","PSYC 436"],"t":"Translating Developmental Science into Educational Practice","r":1,"d":["So"]},{"c":["EDST 478","MUSI 452","MUS 578"],"t":"Music, Service, and Society","r":1,"d":["Hu"]},{"c":["EDST 490"],"t":"Senior Essay Independent Study","r":1,"d":[]},{"c":["EENG 201"],"t":"Introduction to Computer Engineering","r":1,"d":["QR"]},{"c":["EENG 203"],"t":"Circuits and Systems Design","r":1,"d":["QR","Sc"]},{"c":["EENG 236"],"t":"Special Projects","r":0.5,"d":[]},{"c":["EENG 310"],"t":"Signals and Systems","r":1,"d":["QR"]},{"c":["EENG 400","ENAS 509"],"t":"Electronic Materials","r":1,"d":["QR","Sc"]},{"c":["EENG 406","ENAS 806"],"t":"Photovoltaic Energy","r":1,"d":["QR","Sc"]},{"c":["EENG 434","MATH 251","S&DS 351","ENAS 502","S&DS 551"],"t":"Stochastic Processes","r":1,"d":["QR"]},{"c":["EENG 455","ENAS 963"],"t":"Network Algorithms and Stochastic Optimization","r":1,"d":["QR"]},{"c":["EENG 469"],"t":"Advanced Special Projects","r":1,"d":[]},{"c":["EENG 472"],"t":"Senior Advanced Special Projects","r":1,"d":[]},{"c":["EENG 481"],"t":"Advanced ABET Projects","r":1,"d":[]},{"c":["EGYP 120","EGYP 501"],"t":"Introduction to Classical Hieroglyphic Egyptian II","r":1,"d":["L2"]},{"c":["EGYP 141","EGYP 541"],"t":"Intermediate Egyptian: Historical Texts","r":1,"d":["L3"]},{"c":["EGYP 147","RLST 422","EGYP 512","RLST 658"],"t":"Egyptian Monastic Literature in Coptic","r":1,"d":["L3"]},{"c":["EGYP 228","EGYP 578"],"t":"The Ancient Egyptian Netherworld Books","r":1,"d":["L5"]},{"c":["ENAS 130"],"t":"Introduction to Computing for Engineers and Scientists","r":1,"d":["QR"]},{"c":["ENAS 344","MUSI 415"],"t":"Musical Acoustics and Instrument Design","r":1,"d":["QR","Hu","Sc"]},{"c":["ENAS 360","ENVE 360","ENAS 660","ENV 982"],"t":"Green Engineering and Sustainable Design","r":1,"d":[]},{"c":["ENAS 400"],"t":"Making it","r":1,"d":[]},{"c":["ENAS 411","MGT 507"],"t":"Introduction to Operations Research","r":1,"d":["QR"]},{"c":["ENAS 444","MENG 415","ENAS 752"],"t":"Solidification and Phase Transformations","r":1,"d":[]},{"c":["ENGL 034","WGSS 034"],"t":"Transgender, Queer, & Feminist #Activism Now","r":1,"d":["Hu"]},{"c":["ENGL 068","HUMS 068"],"t":"Speculative Fiction and Film","r":1,"d":["WR","Hu"]},{"c":["ENGL 114"],"t":"Writing Seminars: Beautiful People","r":1,"d":["WR"]},{"c":["ENGL 115"],"t":"Literature Seminars: Acting Locally,Acting Globally","r":1,"d":["WR","Hu"]},{"c":["ENGL 120"],"t":"Reading and Writing the Modern Essay","r":1,"d":["WR"]},{"c":["ENGL 121"],"t":"Styles of Acad & Prof Prose: CulturalCrit: StyleAsArgument","r":1,"d":["WR"]},{"c":["ENGL 123"],"t":"Introduction to Creative Writing","r":1,"d":["Hu"]},{"c":["ENGL 125"],"t":"Readings in English Poetry I","r":1,"d":["WR","Hu"]},{"c":["ENGL 126"],"t":"Readings in English Poetry II","r":1,"d":["WR","Hu"]},{"c":["ENGL 127"],"t":"Readings in American Literature","r":1,"d":["WR","Hu"]},{"c":["ENGL 128"],"t":"Readings in Comparative World English Literatures","r":1,"d":["WR","Hu"]},{"c":["ENGL 129","HUMS 127","LITR 168","THST 129"],"t":"Tragedy in the European Literary Tradition","r":1,"d":["WR","Hu"]},{"c":["ENGL 130","LITR 169"],"t":"Epic in the European Literary Tradition","r":1,"d":["WR","Hu"]},{"c":["ENGL 149","LING 109"],"t":"History of the English Language","r":1,"d":["Hu"]},{"c":["ENGL 160"],"t":"Milton","r":1,"d":["WR","Hu"]},{"c":["ENGL 163","WGSS 163"],"t":"Vampires, Castles, Werewolves: Vampires WR Discussion Section","r":0,"d":["WR","Hu"]},{"c":["ENGL 192","FILM 240","HUMS 190","LITR 143"],"t":"World Cinema","r":1,"d":["Hu"]},{"c":["ENGL 196","FILM 160"],"t":"Introduction to Media","r":1,"d":["WR","Hu"]},{"c":["ENGL 201","WGSS 203"],"t":"The Victorian Problem Novel","r":1,"d":["WR","Hu"]},{"c":["ENGL 205","HUMS 200","LITR 195","MUSI 462"],"t":"Medieval Songlines","r":1,"d":["WR","Hu"]},{"c":["ENGL 206","HUMS 231"],"t":"Poetic Influence from Shakespeare to the Twenty-First Century","r":1,"d":["Hu"]},{"c":["ENGL 208","HUMS 218"],"t":"Neoplatonism Across Time and Faith","r":1,"d":["Hu"]},{"c":["ENGL 211","THST 315"],"t":"Acting Shakespeare","r":1,"d":["Hu"]},{"c":["ENGL 214","HUMS 267"],"t":"Moby-Dick","r":1,"d":["Hu"]},{"c":["ENGL 241","THST 214"],"t":"English Comic Drama, 1660-1800","r":1,"d":["WR","Hu"]},{"c":["ENGL 275"],"t":"Emerson, Dickinson, and Melville","r":1,"d":["WR","Hu"]},{"c":["ENGL 289","HUMS 388","LITR 389","PHIL 385","RLST 380"],"t":"Philosophies of Life","r":1,"d":["WR","Hu"]},{"c":["ENGL 320"],"t":"Novel Feelings","r":1,"d":["WR","Hu"]},{"c":["ENGL 323"],"t":"Spenser","r":1,"d":["WR","Hu"]},{"c":["ENGL 324"],"t":"Modern Irish Literature and Culture","r":1,"d":["Hu"]},{"c":["ENGL 344","WGSS 426"],"t":"Virginia Woolf","r":1,"d":["WR","Hu"]},{"c":["ENGL 355","HUMS 420","LITR 219"],"t":"The Waste Land","r":1,"d":["WR","Hu"]},{"c":["ENGL 356"],"t":"The Young Adult Dystopian Novel","r":1,"d":["WR","Hu"]},{"c":["ENGL 361","THST 329"],"t":"Theater Now","r":1,"d":["Hu"]},{"c":["ENGL 363","FILM 445","LITR 450","CPLT 929","FILM 651"],"t":"Film and Fiction in Interaction","r":1,"d":["Hu"]},{"c":["ENGL 395","HUMS 380","LITR 154","ENGL 695"],"t":"The Bible as a Literature","r":1,"d":["WR","Hu"]},{"c":["ENGL 404"],"t":"Reading Fiction for Craft","r":1,"d":["Hu"]},{"c":["ENGL 407"],"t":"Introduction to Writing Fiction","r":1,"d":[]},{"c":["ENGL 411"],"t":"American Horror Stories","r":1,"d":["Hu"]},{"c":["ENGL 423","FILM 397","THST 228"],"t":"Writing about the Performing Arts","r":1,"d":["WR","Hu"]},{"c":["ENGL 425"],"t":"Writing the Television Drama","r":1,"d":[]},{"c":["ENGL 428"],"t":"Young Adult Writing","r":1,"d":[]},{"c":["ENGL 429"],"t":"Writing Humor","r":1,"d":["WR"]},{"c":["ENGL 450"],"t":"Daily Themes","r":1,"d":["WR"]},{"c":["ENGL 455"],"t":"Writing about Oneself","r":1,"d":["WR","Hu"]},{"c":["ENGL 456","HUMS 427","JDST 316","LITR 348","CPLT 925"],"t":"The Practice of Literary Translation","r":1,"d":["Hu"]},{"c":["ENGL 460"],"t":"Advanced Poetry Writing","r":1,"d":[]},{"c":["ENGL 461"],"t":"The Art and Craft of Television Drama","r":1,"d":[]},{"c":["ENGL 462","FILM 401","THST 453"],"t":"Writing Screenplay Adaptations","r":1,"d":["Hu"]},{"c":["ENGL 463"],"t":"Writing Outsiderness and Interiority","r":1,"d":["Hu"]},{"c":["ENGL 464"],"t":"Diggin\u2019 in the Historical Crates: Breathing Poetry into the Archives","r":1,"d":["Hu"]},{"c":["ENGL 465"],"t":"Advanced Fiction Writing","r":1,"d":[]},{"c":["ENGL 467","PLSC 253"],"t":"Journalism","r":1,"d":["WR"]},{"c":["ENGL 473"],"t":"The Journalism of Ideas","r":1,"d":["WR","Hu"]},{"c":["ENGL 477","THST 321"],"t":"Production Seminar: Playwriting","r":1,"d":[]},{"c":["ENGL 480"],"t":"Writing About Justice and Injustice","r":1,"d":[]},{"c":["ENGL 481","THST 322"],"t":"Advanced Playwriting","r":1,"d":[]},{"c":["ENGL 483","HUMS 428","JDST 343","LITR 305"],"t":"Advanced Literary Translation","r":1,"d":[]},{"c":["ENGL 487"],"t":"Tutorial in Writing","r":1,"d":[]},{"c":["ENGL 488"],"t":"Special Projects for Juniors or Seniors","r":1,"d":[]},{"c":["ENGL 489"],"t":"The Writing Concentration Senior Project","r":1,"d":[]},{"c":["ENGL 490"],"t":"The Senior Essay I","r":1,"d":[]},{"c":["ENGL 491"],"t":"The Senior Essay II","r":1,"d":[]},{"c":["ENRG 400"],"t":"Senior Capstone Seminar","r":1,"d":[]},{"c":["ENVE 471"],"t":"Special Projects","r":1,"d":[]},{"c":["ENVE 473","ENAS 673"],"t":"Air Quality and Energy","r":1,"d":["Sc"]},{"c":["ENVE 490"],"t":"Senior Project","r":1,"d":[]},{"c":["EP&E 215"],"t":"Classics of Ethics, Politics, and Economics","r":1,"d":["Hu","So"]},{"c":["EP&E 216"],"t":"Classics of EPE: African-American Perspectives","r":1,"d":["Hu"]},{"c":["EP&E 235","PHIL 457","PLSC 283","PHIL 657","PLSC 611"],"t":"Recent Work on Justice","r":1,"d":["Hu"]},{"c":["EP&E 248","PLSC 256"],"t":"American Political Institutions","r":1,"d":["WR","So"]},{"c":["EP&E 250","PLSC 354","PLSC 756"],"t":"The European Union","r":1,"d":["So"]},{"c":["EP&E 300"],"t":"Capitalism and its Critics: Foundational Thinkers of Business Ethics","r":1,"d":["So"]},{"c":["EP&E 302","GLBL 259","PLSC 391","PLSC 763"],"t":"State Formation","r":1,"d":["So"]},{"c":["EP&E 314","EMD 582","GLBL 5075"],"t":"Political Epidemiology","r":1,"d":["So"]},{"c":["EP&E 318"],"t":"Healthcare Business Ethics: The Moral Political Economy of Healthcare","r":1,"d":[]},{"c":["EP&E 325","PLSC 304"],"t":"Business Ethics and Law","r":1,"d":["So"]},{"c":["EP&E 334","PHIL 455","PHIL 655"],"t":"Normative Ethics","r":1,"d":["Hu"]},{"c":["EP&E 353","PLSC 305"],"t":"Critique of Political Violence","r":1,"d":["So"]},{"c":["EP&E 363","GLBL 287","PLSC 387","SOCY 230"],"t":"Capitalism and Crisis","r":1,"d":["So"]},{"c":["EP&E 373","HUMS 325","PLSC 323"],"t":"Aristotle and Kant","r":1,"d":["So"]},{"c":["EP&E 421","PLSC 320"],"t":"Ethics, Law, and Current Issues","r":1,"d":[]},{"c":["EP&E 471"],"t":"Directed Reading and Research","r":1,"d":[]},{"c":["EP&E 491"],"t":"The Senior Essay","r":1,"d":[]},{"c":["EP&E 492"],"t":"The Yearlong Senior Essay","r":1,"d":[]},{"c":["EP&E 493"],"t":"The Yearlong Senior Essay","r":1,"d":[]},{"c":["EPS 126L"],"t":"Laboratory for the History of Life","r":0.5,"d":["Sc"]},{"c":["EPS 140"],"t":"Atmosphere, Ocean, and Climate Change","r":1,"d":["QR","Sc"]},{"c":["EPS 212"],"t":"Global Tectonics","r":1,"d":["Sc"]},{"c":["EPS 216"],"t":"Global Warming: Climate Physics","r":1,"d":["Sc"]},{"c":["EPS 220"],"t":"Mineralogy","r":1,"d":["Sc"]},{"c":["EPS 222"],"t":"Origin of Everything","r":1,"d":["Sc"]},{"c":["EPS 232"],"t":"Earth Surface Processes","r":1,"d":["Sc"]},{"c":["EPS 255","EVST 265"],"t":"Environmental Geomicrobiology","r":1,"d":["Sc"]},{"c":["EPS 275","ENV 716"],"t":"Renewable Energy","r":1,"d":["Sc"]},{"c":["EPS 310","EPS 510"],"t":"Isotope Geochemistry","r":1,"d":["QR","Sc"]},{"c":["EPS 323","EPS 523"],"t":"Climate Dynamics","r":1,"d":["QR","Sc"]},{"c":["EPS 370","EPS 770"],"t":"Regional Perspectives on Earth Sciences","r":1,"d":["Sc"]},{"c":["EPS 421","EPS 521"],"t":"Geophysical Fluid Dynamics","r":1,"d":["QR","Sc"]},{"c":["EPS 450","EPS 650"],"t":"Deformation of Earth Materials","r":1,"d":["QR","Sc"]},{"c":["EPS 487"],"t":"Individual Study in Earth and Planetary Sciences","r":0.5,"d":[]},{"c":["EPS 489"],"t":"Research in Earth and Planetary Sciences","r":1,"d":[]},{"c":["EPS 490"],"t":"Research and Senior Thesis","r":1,"d":[]},{"c":["EPS 491"],"t":"Research and Senior Thesis","r":1,"d":[]},{"c":["EPS 492"],"t":"The Senior Essay","r":1,"d":[]},{"c":["ER&M 050"],"t":"Health and Disease in the Latinx Borderlands","r":1,"d":["So"]},{"c":["ER&M 207","LING 107"],"t":"Linguistic Diversity & Endangerment","r":1,"d":[]},{"c":["ER&M 209","LITR 279","VIET 220"],"t":"Introduction to Vietnamese Culture, Values, and Literature","r":1,"d":["Hu"]},{"c":["ER&M 218","HIST 259","HUMS 309","RSEE 351","RUSS 350"],"t":"Russia Between Empire & Nation","r":1,"d":["Hu"]},{"c":["ER&M 227"],"t":"The Intersection of Rights and Risks: A Public Health Response to Human Trafficking","r":1,"d":["So"]},{"c":["ER&M 263","HIST 264","RSEE 268"],"t":"Eastern Europe since 1914","r":1,"d":["Hu"]},{"c":["ER&M 275"],"t":"The Art of Race","r":1,"d":["Hu"]},{"c":["ER&M 278","LAST 228","SPAN 228"],"t":"Borders & Globalization in Hispanophone Cultures","r":1,"d":["L5"]},{"c":["ER&M 279","HIST 295J","HUMS 286","PHIL 433","GLBL 6110","HIST 682","PHIL 770"],"t":"Mass Incarceration in the Soviet Union and the United States","r":1,"d":["Hu"]},{"c":["ER&M 300"],"t":"Comparative Ethnic Studies","r":1,"d":["So"]},{"c":["ER&M 302"],"t":"Modes of Revolt and Exploitation in the Long Nineteenth Century","r":1,"d":["Hu"]},{"c":["ER&M 306","JDST 353","LITR 308","MMES 308"],"t":"Literature at the Limit from Palestine and Israel","r":1,"d":["Hu"]},{"c":["ER&M 332"],"t":"Cultural and Racial History of Mental Health","r":1,"d":["So"]},{"c":["ER&M 336"],"t":"Latinx in the City","r":1,"d":["So"]},{"c":["ER&M 341"],"t":"Qualitative Research Methods in ER&M","r":1,"d":["Hu","So"]},{"c":["ER&M 373"],"t":"Race & Indigeneity in the Pacific","r":1,"d":["Hu"]},{"c":["ER&M 374"],"t":"Parks and Recreation","r":1,"d":["Hu"]},{"c":["ER&M 376","MGRK 304","PLSC 376","SOCY 307"],"t":"Extreme and Radical Right Movements","r":1,"d":["So"]}] \ No newline at end of file diff --git a/results2.txt b/results2.txt new file mode 100644 index 0000000..6506387 --- /dev/null +++ b/results2.txt @@ -0,0 +1 @@ +[{"c":["ER&M 387","AMST 638"],"t":"Migrants and Borders in the Americas","r":1,"d":["Hu","So"]},{"c":["ER&M 470"],"t":"Independent Study","r":1,"d":[]},{"c":["ER&M 472"],"t":"Individual Reading and Research for Juniors and Seniors","r":1,"d":[]},{"c":["ER&M 492"],"t":"The Senior Essay or Project","r":1,"d":[]},{"c":["EVST 060"],"t":"Topics in Environmental Justice","r":1,"d":["WR","So"]},{"c":["EVST 189","HIST 246"],"t":"The History of Food","r":1,"d":["Hu"]},{"c":["EVST 191"],"t":"Trees: Environmental Biology and Global Significance","r":1,"d":["Sc"]},{"c":["EVST 219","PHIL 290","ENV 619"],"t":"Philosophical Environmental Ethics","r":1,"d":["So"]},{"c":["EVST 228","HIST 459J","HUMS 228","LITR 345"],"t":"Climate Change and the Humanities","r":1,"d":["Hu"]},{"c":["EVST 255","F&ES 255","GLBL 282","PLSC 215"],"t":"Environmental Law and Politics","r":1,"d":["So"]},{"c":["EVST 260","GMAN 260","HUMS 259","LITR 407","GMAN 540"],"t":"Ecology, Ecocriticism, and Narration","r":1,"d":["Hu"]},{"c":["EVST 290","URBN 319"],"t":"Geographic Information Systems","r":1,"d":[]},{"c":["EVST 299","ENV 799"],"t":"Sustainable Development Goals and Implementation","r":1,"d":[]},{"c":["EVST 307","ENV 706"],"t":"Organic Pollutants in the Environment","r":1,"d":["Sc"]},{"c":["EVST 349","HIST 449J","HSHM 449","URBN 382"],"t":"Critical Data Visualization: History, Theory, and Practice","r":1,"d":["Hu"]},{"c":["EVST 396"],"t":"Independent Study: Environmental Studies","r":1,"d":[]},{"c":["EVST 429","ENV 729"],"t":"Caribbean Coastal Development: Science and Policy","r":1,"d":["Sc","So"]},{"c":["EVST 431","ENV 630"],"t":"The Physical Science of Climate Change","r":1,"d":["Sc"]},{"c":["EVST 496"],"t":"Senior Research Project and Colloquium","r":1,"d":[]},{"c":["FILM 232","THST 241"],"t":"Classical Hollywood Narrative 1920\u20131960","r":1,"d":["WR","Hu"]},{"c":["FILM 241","PLSH 246"],"t":"Polish Communism and Postcommunism in Film","r":1,"d":["Hu"]},{"c":["FILM 243","MGRK 218","WGSS 245"],"t":"Family in Greek Literature and Film","r":1,"d":["WR","Hu"]},{"c":["FILM 245"],"t":"Introduction to Film Theory","r":1,"d":["Hu"]},{"c":["FILM 306","GMAN 330","GMAN 530"],"t":"Body Cinema\u2013Cinematic Bodies","r":1,"d":["Hu"]},{"c":["FILM 320","HSAR 490"],"t":"Close Analysis of Film","r":1,"d":["Hu"]},{"c":["FILM 343"],"t":"TV Writing: The Pilot","r":1,"d":["Hu"]},{"c":["FILM 344","GMAN 344","ARCH 3252","FILM 772","GMAN 544"],"t":"Landscape, Film, Architecture","r":1,"d":["Hu"]},{"c":["FILM 350"],"t":"Screenwriting","r":1,"d":[]},{"c":["FILM 352"],"t":"Southeast Asia Cinema","r":1,"d":["Hu"]},{"c":["FILM 360","LITR 301","RSEE 380","RUSS 380"],"t":"Putin's Russia and Protest Culture","r":1,"d":["WR","Hu"]},{"c":["FILM 395"],"t":"Intermediate Screenwriting","r":1,"d":[]},{"c":["FILM 416","FREN 394","LITR 366"],"t":"French and Francophone Cinema through the New Wave","r":1,"d":["Hu"]},{"c":["FILM 452"],"t":"Women Directors in Documentary Cinema","r":1,"d":["Hu"]},{"c":["FILM 457","ITAL 303","LITR 359"],"t":"Italian Film from Postwar to Postmodern","r":1,"d":["WR","Hu"]},{"c":["FILM 471"],"t":"Independent Directed Study","r":1,"d":[]},{"c":["FILM 488"],"t":"Advanced Screenwriting","r":1,"d":[]},{"c":["FILM 492"],"t":"The Senior Essay","r":1,"d":[]},{"c":["FILM 494"],"t":"The Senior Project","r":1,"d":[]},{"c":["FNSH 120"],"t":"Elementary Finnish II","r":1.5,"d":["L2"]},{"c":["FREN 096"],"t":"Women's Narratives of Self in Modern French Literature \t\t\t\t\t","r":1,"d":["Hu"]},{"c":["FREN 109"],"t":"French for Reading","r":1,"d":[]},{"c":["FREN 120"],"t":"Elementary and Intermediate French II","r":1.5,"d":["L2"]},{"c":["FREN 130"],"t":"Intermediate and Advanced French I","r":1.5,"d":["L3"]},{"c":["FREN 140"],"t":"Intermediate and Advanced French II","r":1.5,"d":["L4"]},{"c":["FREN 145"],"t":"Intensive Intermediate and Advanced French","r":2,"d":["L3","L4"]},{"c":["FREN 150"],"t":"Advanced Language Practice","r":1,"d":["L5"]},{"c":["FREN 160"],"t":"Advanced Conversation Through Culture, Film, and Media","r":1,"d":["L5"]},{"c":["FREN 170"],"t":"Introduction to Literatures in French","r":1,"d":["L5","Hu"]},{"c":["FREN 182"],"t":"Advanced Writing Workshop","r":1,"d":["L5"]},{"c":["FREN 184"],"t":"Business French: Communication and Culture","r":1,"d":["L5"]},{"c":["FREN 192"],"t":"Intermediate Literary Translation","r":1,"d":["Hu"]},{"c":["FREN 247","LITR 446"],"t":"Experimental Literature, Theory, and Manifestoes","r":1,"d":["L5","Hu"]},{"c":["FREN 267"],"t":"Translation, Literature, Culture","r":1,"d":["Hu"]},{"c":["FREN 350","HUMS 355","LITR 115"],"t":"Baudelaire","r":1,"d":["Hu"]},{"c":["FREN 375","HSAR 374"],"t":"Icons in French Art","r":1,"d":["L5","Hu"]},{"c":["FREN 380"],"t":"Modern Francophone Poetry","r":1,"d":["Hu"]},{"c":["FREN 388","HUMS 162"],"t":"Feminine Voices in French Literature","r":1,"d":["WR","Hu"]},{"c":["FREN 470"],"t":"Special Tutorial for Juniors and Seniors","r":1,"d":[]},{"c":["FREN 491"],"t":"The Senior Essay","r":1,"d":[]},{"c":["FREN 492"],"t":"The Senior Essay\u2014Translation Track","r":1,"d":[]},{"c":["FREN 493","FREN 495"],"t":"The Senior Essay in the Intensive Major","r":1,"d":[]},{"c":["FREN 494","FREN 496"],"t":"The Senior Essay in the Intensive Major","r":1,"d":[]},{"c":["GLBL 122"],"t":"Applied Quantitative Analysis II","r":1,"d":["QR"]},{"c":["GLBL 193","HLTH 240"],"t":"Epidemiology and Public Health","r":1,"d":[]},{"c":["GLBL 195","PLSC 341","PLSC 537"],"t":"The Logic of Randomized Experiments in Political Science","r":1,"d":["QR","So"]},{"c":["GLBL 216","PLSC 173"],"t":"Democracy Promotion and Its Critics","r":1,"d":[]},{"c":["GLBL 223","HLTH 230"],"t":"Global Health: Challenges and Responses","r":1,"d":["So"]},{"c":["GLBL 225"],"t":"Approaches to International Development","r":1,"d":["QR","So"]},{"c":["GLBL 230"],"t":"Managing the Clean Energy Transition: Contemporary Energy and Climate Change Policy Making","r":1,"d":[]},{"c":["GLBL 284","PLSC 167"],"t":"Mass Atrocities in Global Politics","r":1,"d":["So"]},{"c":["GLBL 302"],"t":"U.S.-China Economic Relations: Globalization or Decoupling?","r":1,"d":["So"]},{"c":["GLBL 315"],"t":"Economics of the EU","r":1,"d":["So"]},{"c":["GLBL 316"],"t":"Co-Existing with Complexity: Emerging Environmental Governance","r":1,"d":["So"]},{"c":["GLBL 317"],"t":"China's Sovereign Lending","r":1,"d":["So"]},{"c":["GLBL 341","PLSC 450"],"t":"The Geopolitics of Democracy","r":1,"d":["So"]},{"c":["GLBL 342","HIST 482J","PLSC 321","MGT 984"],"t":"Studies in Grand Strategy I","r":1,"d":["Hu","So"]},{"c":["GLBL 355"],"t":"The United States, China, and the Origins of the Korean Peninsula Crisis","r":1,"d":["So"]},{"c":["GLBL 390","GLBL 7530"],"t":"Cybersecurity, Cyberwar, and International Relations","r":1,"d":["WR","So"]},{"c":["GLBL 450"],"t":"Directed Research","r":1,"d":[]},{"c":["GLBL 460"],"t":"Turning Points in American Foreign Policy","r":1,"d":[]},{"c":["GLBL 499"],"t":"Senior Capstone Project","r":1,"d":[]},{"c":["GMAN 100"],"t":"German for Reading","r":1,"d":[]},{"c":["GMAN 110"],"t":"Elementary German I","r":1.5,"d":["L1"]},{"c":["GMAN 120"],"t":"Elementary German II","r":1.5,"d":["L2"]},{"c":["GMAN 130"],"t":"Intermediate German I","r":1.5,"d":["L3"]},{"c":["GMAN 140"],"t":"Intermediate German II","r":1.5,"d":["L4"]},{"c":["GMAN 158"],"t":"Contemporary German Culture through Soccer","r":1,"d":["L5","Hu"]},{"c":["GMAN 167"],"t":"Green Germany, History and Culture of Sustainability","r":1,"d":["L5","Hu"]},{"c":["GMAN 172"],"t":"Introduction to German Theater","r":1,"d":["L5","Hu"]},{"c":["GMAN 215","HUMS 311","LITR 166"],"t":"How Poetry can Change the World","r":1,"d":["Hu"]},{"c":["GMAN 227","HUMS 330","LITR 330","PHIL 402","CPLT 699","GMAN 603","PHIL 602"],"t":"Heidegger's Being and Time","r":1,"d":["Hu"]},{"c":["GMAN 235","HUMS 283","LITR 127"],"t":"Realism and the Fantastic","r":1,"d":["Hu"]},{"c":["GMAN 277","HUMS 248","LITR 447","THST 277"],"t":"I and Thou \u2013 Dialogue and Miscommunication in Theory and Literature","r":1,"d":["Hu"]},{"c":["GMAN 280","HIST 280J"],"t":"Nazi Germany","r":1,"d":["WR","Hu"]},{"c":["GMAN 478"],"t":"Directed Readings or Individual Research in Germanic Languages and Literatures","r":1,"d":[]},{"c":["GMAN 492"],"t":"The Senior Essay Tutorial","r":1,"d":[]},{"c":["GREK 120"],"t":"Beginning Greek: Review of Grammar and Selected Readings","r":1.5,"d":["L2"]},{"c":["GREK 125"],"t":"Intensive Beginning Greek","r":2,"d":["L1","L2"]},{"c":["GREK 141"],"t":"Homer: An Introduction","r":1,"d":["L3"]},{"c":["GREK 403","GREK 703"],"t":"The History and Structure of Ancient Greek: From Word to Text","r":1,"d":["L5","Hu"]},{"c":["GREK 450","GREK 750"],"t":"Euripides","r":1,"d":["L5","Hu"]},{"c":["GREK 494"],"t":"Independent Tutorial in Greek Language and Literature","r":1,"d":[]},{"c":["HEBR 120","HEBR 501"],"t":"Elementary Modern Hebrew II","r":1.5,"d":["L2"]},{"c":["HEBR 127","HEBR 512"],"t":"Elementary Biblical Hebrew II","r":1,"d":["L2"]},{"c":["HEBR 140","HEBR 503"],"t":"Intermediate Modern Hebrew II","r":1.5,"d":["L4"]},{"c":["HEBR 152","JDST 401","HEBR 509"],"t":"Reading Academic Texts in Modern Hebrew","r":1,"d":["L5"]},{"c":["HEBR 162","JDST 319","MMES 161","HEBR 519","JDST 835"],"t":"Israel in Ideology and Practice","r":1,"d":["L5","So"]},{"c":["HGRN 120"],"t":"Elementary Hungarian II","r":1.5,"d":["L2"]},{"c":["HGRN 140"],"t":"Intermediate Hungarian II","r":1.5,"d":["L4"]},{"c":["HIST 017"],"t":"American Indians in Higher Education: Introduction to the Indigenous History of American Education","r":1,"d":["WR","Hu"]},{"c":["HIST 056"],"t":"Women Who Ruled","r":1,"d":["WR","Hu"]},{"c":["HIST 061"],"t":"Information Revolutions: From the Origins of Writing to the Digital Age","r":1,"d":["WR","Hu"]},{"c":["HIST 072"],"t":"The History of World History","r":1,"d":["WR","Hu"]},{"c":["HIST 103"],"t":"The World Circa 1800","r":1,"d":["Hu"]},{"c":["HIST 104J"],"t":"Climate and Environment in America, 1500-1870","r":1,"d":["WR","Hu"]},{"c":["HIST 106J"],"t":"The Monroe Doctrine at 200 Years: History of the United States and Latin America","r":1,"d":["WR","Hu"]},{"c":["HIST 108"],"t":"U.S. Colonial Empire","r":1,"d":["Hu"]},{"c":["HIST 109J","HSHM 489"],"t":"Activism and Advocacy in the History of American Health Care","r":1,"d":["WR","Hu"]},{"c":["HIST 110J","HSHM 496"],"t":"Childbirth in America, 1650-2000","r":1,"d":["WR","Hu"]},{"c":["HIST 118J"],"t":"U.S. Immigration Policy: History, Politics, and Activism, 1607-Present","r":1,"d":["WR","Hu"]},{"c":["HIST 121J"],"t":"The Religious Right and the Religious Left in Postwar America: Faith, Radicalism, and Reaction","r":1,"d":["WR","Hu"]},{"c":["HIST 128J","HSHM 475"],"t":"Race and Disease in American Medicine","r":1,"d":["WR","Hu"]},{"c":["HIST 134J"],"t":"Yale and America: Selected Topics in Social and Cultural History","r":1,"d":["WR","Hu"]},{"c":["HIST 156J"],"t":"Capitalism, Labor, & Class Politics in Modern U.S.","r":1,"d":["WR","Hu"]},{"c":["HIST 181J"],"t":"Time Machines: Reimagining the Past","r":1,"d":["WR","Hu"]},{"c":["HIST 186J","HUMS 329"],"t":"Revolutionary Ideas, 1789-1848","r":1,"d":["Hu"]},{"c":["HIST 193J"],"t":"Seances & Spirits: Science and the Occult during the Long 19th Century","r":1,"d":["WR","Hu"]},{"c":["HIST 197J","HSHM 409"],"t":"Marriage and Medicine in Modern America","r":1,"d":["WR","Hu"]},{"c":["HIST 202"],"t":"European Civilization, 1648\u20131945","r":1,"d":["Hu"]},{"c":["HIST 210J","HUMS 224"],"t":"Hobbes and Galileo: Materialism and the Emergence of Modernity","r":1,"d":["Hu"]},{"c":["HIST 211"],"t":"The Birth of Europe, 1000-1500","r":1,"d":["Hu"]},{"c":["HIST 212J","HUMS 313"],"t":"Philosophy of Dissent in Central and Eastern Europe","r":1,"d":["Hu"]},{"c":["HIST 215J"],"t":"The Art of Biography","r":1,"d":["Hu"]},{"c":["HIST 217J"],"t":"Becoming an Empire: England\u2019s Rise to Power, 1485-1784","r":1,"d":["WR","Hu"]},{"c":["HIST 220","JDST 201","RLST 149"],"t":"Making Jews Modern: HIST 220 WR Section","r":0,"d":["WR","Hu"]},{"c":["HIST 222J","RSEE 222"],"t":"Russia and the Eurasian Steppe","r":1,"d":["WR","Hu"]},{"c":["HIST 226J","JDST 370","RLST 231","HIST 603","JDST 806","MDVL 603","RLST 616"],"t":"Jews and Christians in the Formation of Europe, 500-1500","r":1,"d":["WR","Hu"]},{"c":["HIST 231","HUMS 277"],"t":"What was Enlightenment?","r":1,"d":["Hu"]},{"c":["HIST 231J"],"t":"The Dark Years: Collaboration and Resistance in Vichy France","r":1,"d":["WR","Hu"]},{"c":["HIST 236","HSHM 226"],"t":"The Global Scientific Revolution","r":1,"d":["Hu"]},{"c":["HIST 237J","MGRK 222"],"t":"History of Modern Greece","r":1,"d":["Hu"]},{"c":["HIST 253J","LAST 253"],"t":"Dissidence and Control in Early Modern Spain and its Empire","r":1,"d":["WR","Hu"]},{"c":["HIST 256"],"t":"Europe and the World, 1500-1900","r":1,"d":["Hu"]},{"c":["HIST 256J","HUMS 264"],"t":"Imagining the Body Politic: Constitutional Art and Theory from Antiquity to the Present","r":1,"d":["Hu"]},{"c":["HIST 281","RLST 268"],"t":"Christian Mysticism, 1200\u20131700","r":1,"d":["Hu"]},{"c":["HIST 289J","HSAR 399","HSHM 407","HUMS 220"],"t":"Collecting Before the Museum","r":1,"d":["WR","Hu"]},{"c":["HIST 290","RSEE 225"],"t":"Russia from the Ninth Century to 1801","r":1,"d":["Hu"]},{"c":["HIST 310J","LAST 370"],"t":"Continuities and Discontinuities of Violence in Latin America","r":1,"d":["Hu","So"]},{"c":["HIST 312J"],"t":"Colonialism, Nationalism, and Identity in Myanmar","r":1,"d":["WR","Hu"]},{"c":["HIST 316J"],"t":"Material Cultures of the Early Modern Mediterranean","r":1,"d":["WR","Hu"]},{"c":["HIST 328J"],"t":"History of Indonesia","r":1,"d":["WR","Hu"]},{"c":["HIST 339J","HSHM 457","SAST 420"],"t":"Tradition, Modernity, Medicine in South Asia","r":1,"d":["Hu"]},{"c":["HIST 345","JDST 265","MMES 148","RLST 202","HIST 590","JDST 764","MDVL 590","RLST 777"],"t":"Jews in Muslim Lands from the Seventh to the Sixteenth Centuries","r":1,"d":["Hu"]},{"c":["HIST 362J","SAST 331"],"t":"The Economic History of India","r":1,"d":["WR","Hu"]},{"c":["HIST 382"],"t":"Ottoman Empire 1300-1900","r":1,"d":["Hu"]},{"c":["HIST 389"],"t":"History of Islamic World","r":1,"d":["Hu"]},{"c":["HIST 403J","HSHM 473"],"t":"Vaccination in Historical Perspective","r":1,"d":["Hu"]},{"c":["HIST 418J","WGSS 297"],"t":"Gender Expression Before Modernity","r":1,"d":["Hu"]},{"c":["HIST 421J"],"t":"Piracy in Global History","r":1,"d":["WR","Hu"]},{"c":["HIST 423J","HSHM 404"],"t":"Colonialism, Capitalism, and Climate Science","r":1,"d":["WR","Hu"]},{"c":["HIST 424J","HSHM 411"],"t":"Trauma and Healing in Historical Perspective","r":1,"d":["WR","Hu"]},{"c":["HIST 429J","HSHM 412"],"t":"Laboratory Life","r":1,"d":["WR","Hu"]},{"c":["HIST 435J"],"t":"Colonial Cities: A Global Seminar","r":1,"d":["WR","Hu"]},{"c":["HIST 447J","HSHM 467","WGSS 465"],"t":"History of the Body","r":1,"d":["WR","Hu"]},{"c":["HIST 458J","SAST 421"],"t":"Environmentalism from the Global South","r":1,"d":["WR","Hu"]},{"c":["HIST 490J","HSHM 429"],"t":"Decolonizing the Mind","r":1,"d":["WR","Hu","So"]},{"c":["HIST 494"],"t":"Individual Writing Tutorial","r":1,"d":[]},{"c":["HIST 495"],"t":"The Senior Essay","r":1,"d":[]},{"c":["HIST 496"],"t":"The Senior Essay","r":1,"d":[]},{"c":["HIST 497"],"t":"One-Term Senior Essay","r":1,"d":[]},{"c":["HLTH 081"],"t":"Current Issues in Medicine and Public Health","r":1,"d":["Sc"]},{"c":["HLTH 495"],"t":"Interdisciplinary Health Research Topics","r":0.5,"d":[]},{"c":["HMRT 100","PLSC 148"],"t":"Theories, Practices, and Politics of Human Rights","r":1,"d":["So"]},{"c":["HNDI 120"],"t":"Elementary Hindi II","r":1.5,"d":["L2"]},{"c":["HNDI 140"],"t":"Intermediate Hindi II","r":1.5,"d":["L4"]},{"c":["HNDI 142"],"t":"Accelerated Hindi II","r":1,"d":["L4"]},{"c":["HNDI 156","SAST 356"],"t":"Internal Migration and Hindi in Diaspora","r":1,"d":["L5","Hu"]},{"c":["HNDI 198"],"t":"Advanced Tutorial","r":1,"d":[]},{"c":["HSAR 160"],"t":"Art and Technology","r":1,"d":["Hu"]},{"c":["HSAR 255"],"t":"Dutch Art and its Worlds","r":1,"d":["Hu"]},{"c":["HSAR 257"],"t":"Modernism's Social Life","r":1,"d":["Hu"]},{"c":["HSAR 286"],"t":"Renaissance Architecture: A Global History","r":1,"d":["Hu"]},{"c":["HSAR 294"],"t":"Caravaggio","r":1,"d":["Hu"]},{"c":["HSAR 357"],"t":"Arts of Japan I","r":1,"d":["Hu"]},{"c":["HSAR 401"],"t":"Critical Approaches to Art History","r":1,"d":["WR","Hu"]},{"c":["HSAR 436"],"t":"The Art of Crisis","r":1,"d":["Hu"]},{"c":["HSAR 457"],"t":"Japanese Gardens","r":1,"d":["Hu"]},{"c":["HSAR 467"],"t":"Environmental Relations in Pre-Hispanic and Colonial South American Art","r":1,"d":[]},{"c":["HSAR 474"],"t":"Histories and Critiques of the Art Museum","r":1,"d":[]},{"c":["HSAR 476"],"t":"Energy Cultures of Modern Architecture","r":1,"d":["Hu"]},{"c":["HSAR 485","HUMS 318","ITAL 338","LITR 222","WGSS 331"],"t":"Gender & the Avant-Garde","r":1,"d":["Hu"]},{"c":["HSAR 499"],"t":"The Senior Essay","r":1,"d":[]},{"c":["HSHM 006"],"t":"Making Climate Knowledge","r":1,"d":["WR","Hu"]},{"c":["HSHM 417"],"t":"Before the Anthropocene: Global Environment in the Preindustrial World","r":1,"d":["WR","Hu"]},{"c":["HSHM 470"],"t":"Directed Reading","r":1,"d":[]},{"c":["HSHM 490"],"t":"Yearlong Senior Project","r":1,"d":[]},{"c":["HSHM 491"],"t":"Yearlong Senior Project","r":1,"d":[]},{"c":["HSHM 492"],"t":"One-Term Senior Project","r":1,"d":[]},{"c":["HUMS 029","LITR 028"],"t":"Medicine and the Humanities: Certainty and Unknowing","r":1,"d":["Hu"]},{"c":["HUMS 037","LITR 037"],"t":"The Limits of the Human","r":1,"d":["Hu"]},{"c":["HUMS 130","LITR 130"],"t":"How to Read","r":1,"d":["Hu"]},{"c":["HUMS 133","JDST 110","RLST 145"],"t":"The Bible","r":1,"d":["Hu"]},{"c":["HUMS 189","MUSI 189"],"t":"Music & Jane Austen","r":1,"d":["Hu"]},{"c":["HUMS 196","LITR 401","SPAN 318","CPLT 968","SPAN 618"],"t":"The End of the World","r":1,"d":["L5","Hu"]},{"c":["HUMS 207","RLST 266"],"t":"Possession","r":1,"d":["Hu"]},{"c":["HUMS 210","ITAL 317","LITR 180","WGSS 317"],"t":"Women in the Middle Ages","r":1,"d":["Hu"]},{"c":["HUMS 247","SOCY 352","SOCY 620"],"t":"Material Culture and Iconic Consciousness","r":1,"d":["Hu","So"]},{"c":["HUMS 295","JDST 223","PLSC 307"],"t":"Trials of Uncertainty","r":1,"d":["WR","Hu"]},{"c":["HUMS 297","PLSC 293"],"t":"Modern Liberty","r":1,"d":["Hu","So"]},{"c":["HUMS 298","PHIL 474","RLST 282","SAST 269"],"t":"Philosopher Queens of Hinduism and Buddhism","r":1,"d":["Hu"]},{"c":["HUMS 349","LITR 470"],"t":"Identity in Modern Thought","r":1,"d":["Hu"]},{"c":["HUMS 389","RLST 154"],"t":"Ecstasy","r":1,"d":["Hu"]},{"c":["HUMS 392"],"t":"Computational Representation and the Humanities/Arts","r":1,"d":["Hu"]},{"c":["HUMS 411"],"t":"Life Worth Living","r":1,"d":["Hu"]},{"c":["HUMS 417"],"t":"Thinking Digitally about the Humanities","r":1,"d":["Hu"]},{"c":["HUMS 449","MUSI 476"],"t":"The Secret Life of Radio: Fringe Practices of a Mass Medium","r":1,"d":["Hu"]},{"c":["HUMS 471"],"t":"Special Studies in the Humanities","r":1,"d":[]},{"c":["HUMS 491"],"t":"The Senior Essay","r":1,"d":[]},{"c":["INDN 120"],"t":"Elementary Indonesian II","r":1.5,"d":["L2"]},{"c":["INDN 140"],"t":"Intermediate Indonesian II","r":1.5,"d":["L4"]},{"c":["INDN 180"],"t":"Research and Creative Project on Indonesia","r":1,"d":[]},{"c":["INDN 471"],"t":"Independent Tutorial","r":1,"d":[]},{"c":["ITAL 120"],"t":"Elementary Italian II","r":1.5,"d":["L2"]},{"c":["ITAL 125"],"t":"Intensive Elementary Italian","r":2,"d":["L1","L2"]},{"c":["ITAL 140"],"t":"Intermediate Italian II","r":1.5,"d":["L4"]},{"c":["ITAL 151"],"t":"Advanced Italian Workshop: The Translation Notebooks","r":1,"d":["L5"]},{"c":["ITAL 172"],"t":"Introduction to Italian Literature: From the Baroque to the Present","r":1,"d":["L5","Hu"]},{"c":["ITAL 240"],"t":"Women Intellectuals in Italy","r":1,"d":["Hu"]},{"c":["ITAL 470"],"t":"Special Studies in Italian Literature","r":1,"d":[]},{"c":["ITAL 471"],"t":"Special Studies in Italian Literature","r":1,"d":[]},{"c":["ITAL 491"],"t":"The Senior Essay","r":1,"d":[]},{"c":["JAPN 120"],"t":"Elementary Japanese II","r":1.5,"d":["L2"]},{"c":["JAPN 140"],"t":"Intermediate Japanese II","r":1.5,"d":["L4"]},{"c":["JAPN 151"],"t":"Advanced Japanese II","r":1,"d":["L5"]},{"c":["JAPN 157"],"t":"Advanced Japanese IV","r":1,"d":["L5"]},{"c":["JAPN 171","JAPN 571"],"t":"Readings in Literary Japanese","r":1,"d":["L5"]},{"c":["JDST 128","RLST 232","JDST 708","RLST 738"],"t":"Jews in Early Christian Sources","r":1,"d":["Hu"]},{"c":["JDST 202","RLST 146"],"t":"Jewish Identity in the Pre-Islamic Mediterranean World","r":1,"d":["Hu"]},{"c":["JDST 227","PHIL 306","RLST 304"],"t":"The Problem of Evil and the Book of Job","r":1,"d":["WR","Hu"]},{"c":["JDST 245","RLST 358","RLST 627"],"t":"Humor and Play in Rabbinic Literature","r":1,"d":["Hu"]},{"c":["JDST 272","PHIL 264","RLST 295","RLST 711"],"t":"Al-Ghazali and Maimonides","r":1,"d":["Hu"]},{"c":["JDST 290"],"t":"Contemporary American Judaisms","r":1,"d":["WR","Hu"]},{"c":["JDST 306","MMES 157","NELC 157","NELC 557"],"t":"Israeli Narratives","r":1,"d":["WR","Hu"]},{"c":["JDST 312","LITR 196","MMES 312","NELC 323"],"t":"Hebrew Poetry in Muslim Spain","r":1,"d":["Hu"]},{"c":["JDST 375"],"t":"Two Medieval Jewish Philosophers: Judah Halevi and Maimonides","r":1,"d":["Hu"]},{"c":["JDST 379","RLST 164"],"t":"Jews, Christians, Prayer, and Polemics","r":1,"d":["Hu"]},{"c":["JDST 492"],"t":"The Senior Essay","r":1,"d":[]},{"c":["KHMR 120"],"t":"Elementary Khmer II","r":1.5,"d":["L2"]},{"c":["KHMR 140"],"t":"Intermediate Khmer II","r":1.5,"d":["L4"]},{"c":["KREN 120"],"t":"Elementary Korean II","r":1.5,"d":["L2"]},{"c":["KREN 140"],"t":"Intermediate Korean II","r":1.5,"d":["L4"]},{"c":["KREN 142"],"t":"Intermediate Korean for Advanced Learners II","r":1.5,"d":["L4"]},{"c":["KREN 151"],"t":"Advanced Korean II: Korean Language and Culture through Media","r":1,"d":["L5"]},{"c":["KREN 154"],"t":"Advanced Korean III","r":1,"d":["L5"]},{"c":["LAST 223","SPAN 223"],"t":"Spanish in Film: An Introduction to the New Latin American Cinema","r":1,"d":["L5"]},{"c":["LAST 225","SPAN 225"],"t":"Spanish for the Medical Professions","r":1,"d":["L5"]},{"c":["LAST 243","SPAN 243"],"t":"Advanced Spanish Grammar","r":1,"d":["L5"]},{"c":["LAST 244","SPAN 244"],"t":"Writing in Spanish","r":1,"d":["L5"]},{"c":["LAST 373"],"t":"Feminism and Knowledge in Latin America: Epistemic Injustice, Theorization, and Resistance","r":1,"d":["So"]},{"c":["LAST 491"],"t":"The Senior Essay","r":1,"d":[]},{"c":["LATN 120"],"t":"Beginning Latin: Review of Grammar and Selected Readings","r":1.5,"d":["L2"]},{"c":["LATN 141"],"t":"Latin Poetry: An Introduction","r":1,"d":["L3"]},{"c":["LATN 390","LATN 790"],"t":"Latin Syntax and Stylistics","r":1,"d":["L5","Hu"]},{"c":["LATN 420","EMST 620","LATN 720"],"t":"Latin from Colonial Mexico","r":1,"d":["L5","Hu"]},{"c":["LATN 436","LATN 736"],"t":"Latin Epistolography","r":1,"d":["L5","Hu"]},{"c":["LATN 494"],"t":"Independent Tutorial in Latin Language and Literature","r":1,"d":[]},{"c":["LING 106"],"t":"Illusions of Language: Linguistics in the Real World","r":1,"d":["So"]},{"c":["LING 112","LING 512"],"t":"Historical Linguistics","r":1,"d":["Hu"]},{"c":["LING 125","SKRT 120","LING 525","SKRT 520"],"t":"Introductory Sanskrit II","r":1.5,"d":["L2"]},{"c":["LING 144","REL 918"],"t":"The English Language and Social Justice","r":1,"d":["Hu"]},{"c":["LING 158","SAST 359","SKRT 141","LING 558","SKRT 541"],"t":"Introduction to Vedic Sanskrit","r":1,"d":["L4"]},{"c":["LING 211"],"t":"Grammatical Diversity in U.S. English","r":1,"d":["So"]},{"c":["LING 227","PSYC 327","LING 627"],"t":"Language and Computation I","r":1,"d":["QR","So"]},{"c":["LING 231","PSYC 331","LING 631"],"t":"Neurolinguistics","r":1,"d":["Sc","So"]},{"c":["LING 232","LING 632"],"t":"Phonology I","r":1,"d":["So"]},{"c":["LING 241","LING 641"],"t":"Field Methods","r":1,"d":["So"]},{"c":["LING 254","LING 654"],"t":"Syntax II","r":1,"d":["WR","So"]},{"c":["LING 264","LING 664"],"t":"Semantics II","r":1,"d":["So"]},{"c":["LING 328","LING 728"],"t":"Laboratory Phonology","r":1,"d":["So"]},{"c":["LING 376","PHIL 445","LING 776","PHIL 690"],"t":"Implicature and Pragmatic Theory","r":1,"d":["So"]},{"c":["LING 399","LING 799"],"t":"Variation in Variable-Force Modality","r":1,"d":["So"]},{"c":["LING 471"],"t":"Special Projects","r":1,"d":[]},{"c":["LING 491"],"t":"The Senior Essay","r":1,"d":[]},{"c":["LITR 245","RSEE 254","RUSS 254"],"t":"Tolstoy and Dostoevsky","r":1,"d":["Hu"]},{"c":["LITR 328","MGRK 212"],"t":"Folktales and Fairy Tales","r":1,"d":["WR","Hu"]},{"c":["LITR 331"],"t":"Medieval World Literature, Genres and Geographies","r":1,"d":["Hu"]},{"c":["LITR 434","SPAN 385","CPLT 669","EMST 590","SPAN 916"],"t":"Cervantes & Don Quijote","r":1,"d":["L5","Hu"]},{"c":["LITR 454"],"t":"Neurodiversity and World Literature","r":1,"d":["WR","Hu"]},{"c":["LITR 491"],"t":"The Senior Essay","r":1,"d":[]},{"c":["LITR 493"],"t":"The Yearlong Senior Essay","r":1,"d":[]},{"c":["MATH 107"],"t":"Mathematics in the Real World","r":1,"d":["QR"]},{"c":["MATH 111"],"t":"Introduction to Functions and Calculus II","r":1,"d":["QR"]},{"c":["MATH 112"],"t":"Calculus of Functions of One Variable I","r":1,"d":["QR"]},{"c":["MATH 115"],"t":"Calculus of Functions of One Variable II","r":1,"d":["QR"]},{"c":["MATH 118"],"t":"Introduction to Functions of Several Variables","r":1,"d":["QR"]},{"c":["MATH 120"],"t":"Calculus of Functions of Several Variables","r":1,"d":["QR"]},{"c":["MATH 121"],"t":"Mathematical Models in the Biosciences II: Advanced Techniques","r":1,"d":["QR"]},{"c":["MATH 225"],"t":"Linear Algebra","r":1,"d":["QR"]},{"c":["MATH 240"],"t":"Advanced Linear Algebra","r":1,"d":[]},{"c":["MATH 242","S&DS 242","S&DS 542"],"t":"Theory of Statistics","r":1,"d":["QR"]},{"c":["MATH 246"],"t":"Ordinary Differential Equations","r":1,"d":["QR"]},{"c":["MATH 255"],"t":"Analysis 1","r":1,"d":["QR"]},{"c":["MATH 256"],"t":"Analysis 1 (Intensive)","r":1,"d":["QR"]},{"c":["MATH 305"],"t":"Analysis 2: Lebesgue Integration and Fourier Series","r":1,"d":["QR"]},{"c":["MATH 315","MATH 515"],"t":"Intermediate Complex Analysis","r":1,"d":["QR"]},{"c":["MATH 325","MATH 525"],"t":"Introduction to Functional Analysis","r":1,"d":["QR"]},{"c":["MATH 350"],"t":"Introduction to Abstract Algebra","r":1,"d":["QR"]},{"c":["MATH 353","MATH 533"],"t":"Introduction to Representation Theory","r":1,"d":[]},{"c":["MATH 370"],"t":"Fields and Galois Theory","r":1,"d":["QR"]},{"c":["MATH 430"],"t":"Introduction to Topology","r":1,"d":["QR"]},{"c":["MATH 435"],"t":"Differential Geometry","r":1,"d":["QR"]},{"c":["MATH 470"],"t":"Individual Studies","r":1,"d":[]},{"c":["MATH 475"],"t":"Senior Essay","r":1,"d":[]},{"c":["MATH 480"],"t":"Senior Seminar: Mathematical Topics","r":1,"d":[]},{"c":["MATH 481"],"t":"Senior Seminar: Topics in Economics and Mathematics","r":1,"d":[]},{"c":["MB&B 050"],"t":"Topics in Cancer Biology","r":1,"d":["WR","Sc"]},{"c":["MB&B 099","MCDB 099","MENG 099","PHYS 099","SCIE 099"],"t":"Introduction to Research Methods in Physics and Biology: Preparing for a First Research Experience","r":1,"d":[]},{"c":["MB&B 105","MCDB 105"],"t":"Biology, the World, and Us","r":1,"d":["Sc"]},{"c":["MB&B 200","MCDB 300","MB&B 500","MCDB 500"],"t":"Biochemistry","r":1,"d":["Sc"]},{"c":["MB&B 251L","MCDB 301L"],"t":"Laboratory for Biochemistry","r":0.5,"d":["Sc"]},{"c":["MB&B 268"],"t":"Identity, Society, and STEM","r":0.5,"d":[]},{"c":["MB&B 301","MB&B 601"],"t":"Principles of Biochemistry II","r":1,"d":["Sc"]},{"c":["MB&B 365"],"t":"Biochemistry and Our Changing Climate","r":1,"d":["Sc"]},{"c":["MB&B 443","GENE 743","MB&B 743","MCDB 743"],"t":"Advanced Eukaryotic Molecular Biology","r":1,"d":["Sc"]},{"c":["MB&B 445","MB&B 545"],"t":"Methods and Logic in Molecular Biology","r":1,"d":["Sc"]},{"c":["MB&B 452","MCDB 452","S&DS 352","CB&B 752","CPSC 752","MB&B 752","MB&B 753","MB&B 754","MCDB 752"],"t":"Biomedical Data Science, Mining and Modeling","r":1,"d":["Sc"]},{"c":["MB&B 471"],"t":"Research in Biochemistry and Biophysics for the Major","r":1,"d":["Sc"]},{"c":["MB&B 473"],"t":"Research in Biochemistry and Biophysics","r":1,"d":["Sc"]},{"c":["MB&B 479"],"t":"Intensive Research in Biochemistry and Biophysics for the Major","r":2,"d":[]},{"c":["MB&B 490"],"t":"The Senior Project","r":1,"d":[]},{"c":["MB&B 571"],"t":"Intensive Research for B.S./M.S. Candidates","r":2,"d":[]},{"c":["MCDB 040"],"t":"The Science and Politics of Cancer","r":1,"d":["Sc"]},{"c":["MCDB 103"],"t":"Cancer","r":1,"d":["Sc"]},{"c":["MCDB 109"],"t":"Immunity and Contagion","r":1,"d":["Sc"]},{"c":["MCDB 200","MCDB 700"],"t":"Molecular & Biochemical Principles of Gene Function","r":1,"d":["Sc"]},{"c":["MCDB 201L"],"t":"Molecular Biology Laboratory","r":0.5,"d":["WR","Sc"]},{"c":["MCDB 205"],"t":"Cell Biology","r":1,"d":["Sc"]},{"c":["MCDB 210"],"t":"Developmental Biology","r":1,"d":["Sc"]},{"c":["MCDB 250"],"t":"Biology of Reproduction","r":1,"d":["Sc"]},{"c":["MCDB 251"],"t":"The Lab for Biology of Plants","r":0.5,"d":[]},{"c":["MCDB 251L"],"t":"Laboratory for Biology of Reproduction and Development","r":0.5,"d":["Sc"]},{"c":["MCDB 290"],"t":"Microbiology","r":1,"d":["Sc"]},{"c":["MCDB 291L"],"t":"Laboratory for Microbiology","r":0.5,"d":["Sc"]},{"c":["MCDB 303L"],"t":"Advanced Molecular Biology Laboratory","r":1,"d":["Sc"]},{"c":["MCDB 315"],"t":"Pathobiology","r":1,"d":["Sc"]},{"c":["MCDB 344L"],"t":"Experimental Techniques in Cellular Biology","r":0.5,"d":["Sc"]},{"c":["MCDB 345L"],"t":"Experimental Strategies in Cellular Biology","r":0.5,"d":["Sc"]},{"c":["MCDB 370","MCDB 570"],"t":"Biotechnology","r":1,"d":["Sc"]},{"c":["MCDB 415","C&MP 560","ENAS 570","MCDB 560","PHAR 560"],"t":"Cellular and Molecular Physiology","r":1,"d":["Sc"]},{"c":["MCDB 435"],"t":"Landmark Papers in Cell Biology","r":1,"d":["Sc"]},{"c":["MCDB 450"],"t":"The Human Genome","r":1,"d":["Sc"]},{"c":["MCDB 470"],"t":"Tutorial in Molecular, Cellular, and Developmental Biology","r":1,"d":[]},{"c":["MCDB 474"],"t":"Independent Research","r":1,"d":[]},{"c":["MCDB 475"],"t":"Senior Independent Research","r":1,"d":[]},{"c":["MCDB 485"],"t":"Senior Research","r":1,"d":[]},{"c":["MCDB 486"],"t":"Senior Research","r":1,"d":[]},{"c":["MCDB 495"],"t":"Senior Research Intensive","r":2,"d":[]},{"c":["MCDB 496"],"t":"Senior Research Intensive","r":2,"d":[]},{"c":["MENG 185"],"t":"Mechanical Design","r":1,"d":["Sc"]},{"c":["MENG 211"],"t":"Thermodynamics for Mechanical Engineers","r":1,"d":["QR","Sc"]},{"c":["MENG 286L"],"t":"Solid Mechanics and Materials Science Laboratory","r":1,"d":["Sc"]},{"c":["MENG 363L"],"t":"Fluid Mechanics and Thermodynamics Laboratory","r":1,"d":["WR","Sc"]},{"c":["MENG 383"],"t":"Mechanical Engineering III: Dynamics","r":1,"d":["QR","Sc"]},{"c":["MENG 389"],"t":"Mechanical Engineering IV: Fluid and Thermal Energy Science","r":1,"d":["QR","Sc"]},{"c":["MENG 390L","ENAS 994"],"t":"Mechatronics Laboratory","r":1,"d":[]},{"c":["MENG 400","ENAS 600"],"t":"Computer-Aided Engineering","r":1,"d":["QR"]},{"c":["MENG 425"],"t":"Advanced Design and Analysis of Machines","r":1,"d":[]},{"c":["MENG 464","ENAS 787"],"t":"Forces on the Nanoscale","r":1,"d":["Sc"]},{"c":["MENG 472"],"t":"Special Projects I","r":1,"d":[]},{"c":["MENG 474"],"t":"Special Projects II","r":1,"d":[]},{"c":["MENG 488L"],"t":"Mechanical Design: Process and Implementation II","r":0.5,"d":[]},{"c":["MENG 492","ENAS 755"],"t":"Electronic and Optical Properties of Energy Materials","r":1,"d":["QR","Sc"]},{"c":["MENG 493","ENAS 770"],"t":"Introduction to Soft Robotics","r":1,"d":[]},{"c":["MGRK 120"],"t":"Elementary Modern Greek II","r":1.5,"d":["L2"]},{"c":["MGRK 140"],"t":"Intermediate Modern Greek II","r":1.5,"d":["L4"]},{"c":["MMES 173","PHIL 355","RLST 172"],"t":"Ethics in Islam","r":1,"d":["Hu"]},{"c":["MMES 243"],"t":"Health, Medicine, and Politics in the Middle East","r":1,"d":["So"]},{"c":["MMES 287","RLST 142"],"t":"Science, Knowledge, and Medicine in and beyond the Middle East and South Asia","r":1,"d":["Hu"]},{"c":["MMES 491"],"t":"Senior Essay","r":1,"d":[]},{"c":["MTBT 120"],"t":"Elementary Modern Tibetan II","r":1.5,"d":["L2"]},{"c":["MTBT 140"],"t":"Intermediate Modern Tibetan II","r":1.5,"d":["L4"]},{"c":["MTBT 160"],"t":"Advanced Modern Tibetan II","r":1,"d":["L5"]},{"c":["MUSI 051"],"t":"Rockin' the Revolution: The Politics of Rock in Communist Europe and Eurasia","r":1,"d":["WR","Hu"]},{"c":["MUSI 110"],"t":"Elements of Musical Pitch and Time","r":1,"d":[]},{"c":["MUSI 138"],"t":"Transatlantic Ireland: Race, Place, and Global Popular Music","r":1,"d":["Hu"]},{"c":["MUSI 169"],"t":"One Thousand Years of Love Songs","r":1,"d":["Hu"]},{"c":["MUSI 207"],"t":"Commercial and Popular Music Theory","r":1,"d":["Hu"]},{"c":["MUSI 208"],"t":"Commercial and Popular Music Theory II","r":1,"d":["Hu"]},{"c":["MUSI 210"],"t":"Counterpoint, Harmony, and Form: 1500\u20131800","r":1,"d":["Hu"]},{"c":["MUSI 217"],"t":"Keyboard Skills for Tonal Music","r":1,"d":[]},{"c":["MUSI 218"],"t":"Aural Skills for Tonal Music","r":1,"d":["Hu"]},{"c":["MUSI 221"],"t":"The Performance of Chamber Music","r":0.5,"d":[]},{"c":["MUSI 223"],"t":"Near Eastern and Balkan Ensemble","r":1,"d":[]},{"c":["MUSI 229","THST 226"],"t":"Musical Theater Performance II","r":1,"d":[]},{"c":["MUSI 232"],"t":"Central Javanese Gamelan Ensemble","r":1,"d":[]},{"c":["MUSI 233"],"t":"Cultures and Performing Arts of Central Java","r":1,"d":[]},{"c":["MUSI 238"],"t":"Contemporary Chamber Music Performance","r":0.5,"d":[]},{"c":["MUSI 240"],"t":"The Performance of Early Music","r":1,"d":["Hu"]},{"c":["MUSI 280","SAST 259"],"t":"Music of South Asia","r":1,"d":["Hu"]},{"c":["MUSI 321"],"t":"Composition Seminar II","r":1,"d":[]},{"c":["MUSI 325"],"t":"British and American Art Song","r":1,"d":["Hu"]},{"c":["MUSI 329","MUS 530"],"t":"Intermediate Conducting","r":1,"d":[]},{"c":["MUSI 330"],"t":"Musical Theater Composition II","r":1,"d":["Hu"]},{"c":["MUSI 340","THST 318"],"t":"Analyzing, Directing, and Performing Early Opera","r":1,"d":["Hu"]},{"c":["MUSI 345"],"t":"Lessons","r":1,"d":[]},{"c":["MUSI 352"],"t":"The Western Art-Music Tradition, 1800-2020","r":1,"d":["Hu"]},{"c":["MUSI 378"],"t":"American Neighborhood Musics","r":1,"d":["Hu"]},{"c":["MUSI 406","SAST 473"],"t":"Exploring South Indian Rhythmic Design","r":1,"d":[]},{"c":["MUSI 414"],"t":"Instrumentation and Orchestration","r":1,"d":[]},{"c":["MUSI 418"],"t":"Advanced Musicianship","r":1,"d":[]},{"c":["MUSI 421"],"t":"Composition Seminar IV","r":1,"d":[]},{"c":["MUSI 445"],"t":"Advanced Lessons","r":1,"d":[]},{"c":["MUSI 449","MUS 659"],"t":"Jazz Improvisation","r":0.5,"d":[]},{"c":["MUSI 463","MUS 591"],"t":"Scat, Cyborgs, and Sirens: the 20th/21st Century Voice","r":1,"d":["Hu"]},{"c":["MUSI 472","THST 333"],"t":"Stephen Sondheim and the American Musical Theater Tradition","r":1,"d":["Hu"]},{"c":["MUSI 483","REL 948"],"t":"The Gospel Imagination","r":1,"d":["Hu"]},{"c":["MUSI 485","RLST 244"],"t":"Sacred Musics of the Middle East","r":1,"d":["Hu"]},{"c":["MUSI 486"],"t":"Diasporic Jewish Music: History, Ritual, and Memory","r":1,"d":["WR","Hu"]},{"c":["MUSI 495"],"t":"Individual Study","r":1,"d":[]},{"c":["MUSI 496"],"t":"The Senior Recital","r":1,"d":[]},{"c":["MUSI 497"],"t":"The Senior Project in Composition","r":1,"d":[]},{"c":["MUSI 498"],"t":"The Senior Project in Musical Theater Composition","r":1,"d":[]},{"c":["MUSI 499"],"t":"The Senior Essay","r":1,"d":[]},{"c":["NAVY 100"],"t":"Naval Science Laboratory","r":0,"d":[]},{"c":["NAVY 112"],"t":"Navigation","r":1,"d":[]},{"c":["NAVY 211"],"t":"Leadership and Management","r":1,"d":[]},{"c":["NAVY 312"],"t":"Naval Systems","r":1,"d":[]},{"c":["NAVY 313"],"t":"Evolution of Warfare","r":1,"d":[]},{"c":["NAVY 412"],"t":"Leadership and Ethics","r":1,"d":[]},{"c":["NAVY 414","USAF 414"],"t":"Ethics and the Profession of Arms","r":1,"d":["Hu"]},{"c":["NELC 153","NELC 638"],"t":"Gender and Identity in Ancient Egypt","r":1,"d":["Hu"]},{"c":["NELC 250","NELC 518"],"t":"Assyria:\u00a0The First Near Eastern Empire","r":1,"d":["Hu"]},{"c":["NELC 360","NELC 860"],"t":"Ancient Egypt and its Neighbors","r":1,"d":["Hu"]},{"c":["NELC 493"],"t":"The Senior Essay","r":1,"d":[]},{"c":["NPLI 120"],"t":"Elementary Nepali II","r":1.5,"d":["L2"]},{"c":["NPLI 140"],"t":"Intermediate Nepali II","r":1.5,"d":["L4"]},{"c":["NPLI 160"],"t":"Advanced Nepali II","r":1,"d":["L5"]},{"c":["NSCI 141","PSYC 141"],"t":"The Criminal Mind","r":1,"d":["So"]},{"c":["NSCI 161","PSYC 161"],"t":"Drugs, Brain, and Behavior","r":1,"d":["Sc"]},{"c":["NSCI 240","PSYC 230"],"t":"Research Methods in Human Neuroscience","r":1,"d":["Sc"]},{"c":["NSCI 258","PSYC 258"],"t":"Computational Methods in Human Neuroscience","r":1,"d":["QR","Sc"]},{"c":["NSCI 471"],"t":"Independent Research","r":1,"d":[]},{"c":["NSCI 481"],"t":"Senior Non-empirical Research","r":1,"d":[]},{"c":["NSCI 491"],"t":"Senior Empirical Research","r":1,"d":[]},{"c":["OTTM 320","OTTM 620"],"t":"Introduction to Ottoman Turkish II","r":1,"d":[]},{"c":["PERS 120","PERS 501"],"t":"Elementary Persian II","r":1.5,"d":["L2"]},{"c":["PERS 140","PERS 503"],"t":"Intermediate Persian II","r":1.5,"d":["L4"]},{"c":["PERS 142","PERS 542"],"t":"Persian for Heritage Learners II","r":1,"d":["L4"]},{"c":["PERS 150","PERS 504"],"t":"Thematic Survey of Modern Persian Literature","r":1,"d":["Hu"]},{"c":["PHIL 040"],"t":"Ethics of Data Science","r":1,"d":["Hu"]},{"c":["PHIL 045"],"t":"Puzzles in Philosophy and Logic","r":1,"d":["Hu"]},{"c":["PHIL 126"],"t":"Introduction to Modern Philosophy from Descartes to Kant","r":1,"d":["Hu"]},{"c":["PHIL 175"],"t":"Introduction to Ethics","r":1,"d":["Hu"]},{"c":["PHIL 267","PHIL 567"],"t":"Mathematical Logic","r":1,"d":["QR"]},{"c":["PHIL 295"],"t":"Al-Ghazali and Maimonides","r":1,"d":["Hu"]},{"c":["PHIL 326","RLST 402","REL 910"],"t":"The Philosophy of Religion","r":1,"d":["Hu"]},{"c":["PHIL 338"],"t":"Happiness and Tragedy","r":1,"d":["Hu"]},{"c":["PHIL 383"],"t":"Critical Perspectives on the Canon","r":1,"d":["Hu"]},{"c":["PHIL 408","PHIL 608"],"t":"The Ethics of Marx, Kierkegaard, and Nietzsche","r":1,"d":["Hu"]},{"c":["PHIL 419","PHIL 619"],"t":"Descartes","r":1,"d":["Hu"]},{"c":["PHIL 423","PHIL 623"],"t":"Philosophy of Probability","r":1,"d":["Hu"]},{"c":["PHIL 425","PHIL 625"],"t":"Topics in Epistemology","r":1,"d":["Hu"]},{"c":["PHIL 427","PHIL 627"],"t":"Computability and Logic","r":1,"d":["QR","Hu"]},{"c":["PHIL 432","WGSS 433"],"t":"Reproductive Ethics","r":1,"d":["Hu"]},{"c":["PHIL 436"],"t":"Medieval Metaphysics","r":1,"d":["Hu"]},{"c":["PHIL 478","PHIL 678"],"t":"Nonclassical Logics","r":1,"d":["Hu"]},{"c":["PHIL 480"],"t":"Tutorial","r":1,"d":[]},{"c":["PHIL 487","PHIL 687"],"t":"The Philosophy of the Ordinary and the Extraordinary","r":1,"d":["Hu"]},{"c":["PHIL 491"],"t":"The Senior Essay","r":1,"d":[]},{"c":["PHIL 494"],"t":"Topics in Kant","r":1,"d":["WR","Hu"]},{"c":["PHYS 120"],"t":"Quantum Physics and Beyond","r":1,"d":["Sc"]},{"c":["PHYS 166L"],"t":"General Physics Laboratory","r":0.5,"d":["Sc"]},{"c":["PHYS 171"],"t":"University Physics for the Life Sciences","r":1,"d":["QR","Sc"]},{"c":["PHYS 181"],"t":"University Physics","r":1,"d":["QR","Sc"]},{"c":["PHYS 201"],"t":"Fundamentals of Physics","r":1,"d":["QR","Sc"]},{"c":["PHYS 205"],"t":"Modern Physical Measurement","r":0.5,"d":["Sc"]},{"c":["PHYS 206"],"t":"Modern Physical Measurement","r":0.5,"d":["Sc"]},{"c":["PHYS 261"],"t":"Intensive Introductory Physics","r":1,"d":["QR","Sc"]},{"c":["PHYS 345"],"t":"Introduction to Quantum Information Processing and Communication","r":1,"d":["Sc"]},{"c":["PHYS 378"],"t":"Introduction to Scientific Computing & Data Science","r":1,"d":["Sc"]},{"c":["PHYS 382L","PHYS 504"],"t":"Advanced Physics Laboratory","r":1,"d":["WR","Sc"]},{"c":["PHYS 402"],"t":"Advanced Classical Physics from Newton to Einstein","r":1,"d":["QR","Sc"]},{"c":["PHYS 430"],"t":"Electromagnetic Fields and Optics","r":1,"d":["QR","Sc"]},{"c":["PHYS 441"],"t":"Quantum Mechanics and Natural Phenomena II","r":1,"d":["QR","Sc"]},{"c":["PHYS 442","PHYS 526"],"t":"Introduction to Nuclear and Elementary Particle Physics","r":1,"d":["QR","Sc"]},{"c":["PHYS 470"],"t":"Independent Research in Physics","r":1,"d":[]},{"c":["PHYS 472"],"t":"Independent Projects in Physics","r":1,"d":[]},{"c":["PLSC 111"],"t":"Introduction to International Relations","r":1,"d":["So"]},{"c":["PLSC 113"],"t":"Introduction to American Politics","r":1,"d":["So"]},{"c":["PLSC 114"],"t":"Intro to Political Philosophy: Writing Requisite Section","r":0,"d":["So"]},{"c":["PLSC 118"],"t":"Moral Foundations of Politics: WRITING REQUISITE SECTION","r":0,"d":["So"]},{"c":["PLSC 123"],"t":"Political Economy of Foreign Aid","r":1,"d":["So"]},{"c":["PLSC 163","E&RS 514"],"t":"U.S.-Russian Relations Since the End of the Cold War","r":1,"d":["So"]},{"c":["PLSC 214"],"t":"The Politics of American Public Policy","r":1,"d":["So"]},{"c":["PLSC 224"],"t":"Political Leadership","r":1,"d":["WR","So"]},{"c":["PLSC 233"],"t":"Constitutional Law","r":1,"d":["So"]},{"c":["PLSC 234"],"t":"Political Participation","r":1,"d":["So"]},{"c":["PLSC 236"],"t":"Presidential Campaigns and the Media","r":1,"d":["So"]},{"c":["PLSC 239"],"t":"Political Representation","r":1,"d":["So"]},{"c":["PLSC 246"],"t":"Twenty-First-Century Political Journalism","r":1,"d":[]},{"c":["PLSC 257"],"t":"Bioethics and Law","r":1,"d":["So"]},{"c":["PLSC 264","PLSC 854"],"t":"American Political Economy: Institutions, Interests, and Inequalities","r":1,"d":["So"]},{"c":["PLSC 285"],"t":"Politics Without Politicians","r":1,"d":["So"]},{"c":["PLSC 296","PLSC 638"],"t":"Political Philosophy in a Time of Crisis: Strauss, Berlin, Oakeshott, and Aron","r":1,"d":["Hu","So"]},{"c":["PLSC 306"],"t":"Might and Right Among Nations","r":1,"d":["Hu","So"]},{"c":["PLSC 327","HIST 970","PLSC 640"],"t":"Advanced Topics in Modern Political Philosophy","r":1,"d":["Hu","So"]},{"c":["PLSC 330"],"t":"Participatory Democracy","r":1,"d":["So"]},{"c":["PLSC 333"],"t":"The Politics of Expertise","r":1,"d":["So"]},{"c":["PLSC 334"],"t":"The New York Intellectuals: Politics, Art, Argument","r":1,"d":["Hu"]},{"c":["PLSC 352","PLSC 523"],"t":"Mixed Methods Research","r":1,"d":["So"]},{"c":["PLSC 355"],"t":"Political Economy of China","r":1,"d":["So"]},{"c":["PLSC 377","SAST 344","WGSS 397","PLSC 772"],"t":"Political Economy of Gender in South Asia","r":1,"d":["So"]},{"c":["PLSC 392"],"t":"The State, Conflict, and Political Order","r":1,"d":["So"]},{"c":["PLSC 416"],"t":"Repression and Control in Dictatorships","r":1,"d":["So"]},{"c":["PLSC 437","SOCY 223"],"t":"Nationalism and Ethnic Politics","r":1,"d":["So"]},{"c":["PLSC 441","PLSC 675"],"t":"Peacebuilding","r":1,"d":["So"]},{"c":["PLSC 449","PLSC 765"],"t":"Democracy in the Digital Age","r":1,"d":["So"]},{"c":["PLSC 472"],"t":"Individual Reading for Majors","r":1,"d":[]},{"c":["PLSC 474"],"t":"Directed Reading and Research for Junior Intensive Majors","r":1,"d":[]},{"c":["PLSC 480"],"t":"One-Term Senior Essay","r":1,"d":[]},{"c":["PLSC 490"],"t":"The Senior Colloquium","r":1,"d":[]},{"c":["PLSC 491"],"t":"The Senior Essay","r":1,"d":[]},{"c":["PLSC 493"],"t":"Senior Essay for Intensive Majors","r":1,"d":[]},{"c":["PLSH 120"],"t":"Elementary Polish II","r":1.5,"d":["L2"]},{"c":["PLSH 140"],"t":"Intermediate Polish II","r":1.5,"d":["L4"]},{"c":["PNJB 120"],"t":"Elementary Punjabi II","r":1.5,"d":["L2"]},{"c":["PNJB 140"],"t":"Intermediate Punjabi II","r":1.5,"d":["L4"]},{"c":["PORT 120"],"t":"Elementary Portuguese II","r":1.5,"d":["L2"]},{"c":["PORT 140"],"t":"Intermediate Portuguese II: Portuguese Through the Arts","r":1.5,"d":["L4"]},{"c":["PORT 151"],"t":"Drama as Resistance: From Neoliberalism to the Bolsonarism Crisis","r":1,"d":["L5"]},{"c":["PRAC 472"],"t":"Fieldwork Practicum Analysis","r":0.5,"d":[]},{"c":["PRAC 482"],"t":"Mellon Mays and Edward A. Bouchet Junior Research Practicum","r":0.5,"d":[]},{"c":["PRAC 484"],"t":"Mellon Mays and Edward A. Bouchet Senior Research Practicum","r":0.5,"d":[]},{"c":["PSYC 110"],"t":"Introduction to Psychology","r":1,"d":["So"]},{"c":["PSYC 115"],"t":"History of Psychology: Racism and Colonial Power","r":1,"d":["So"]},{"c":["PSYC 235"],"t":"Research Methods, Writing Intensive","r":1,"d":["WR","So"]},{"c":["PSYC 237"],"t":"Research Methods with Diverse Samples","r":1,"d":["WR","So"]},{"c":["PSYC 307"],"t":"Human Memory","r":1,"d":["Sc"]},{"c":["PSYC 310"],"t":"Psychology and Global Capitalism","r":1,"d":["So"]},{"c":["PSYC 429"],"t":"Psychology of Prejudice, Stereotyping, and Discrimination","r":1,"d":[]},{"c":["PSYC 493"],"t":"Directed Research","r":1,"d":[]},{"c":["PSYC 495"],"t":"Research Topics","r":0.5,"d":[]},{"c":["PSYC 499"],"t":"Senior Essay","r":1,"d":[]},{"c":["RLST 136"],"t":"The History and Contemporary (Ab)uses of the New Testament","r":1,"d":["Hu"]},{"c":["RLST 137"],"t":"Colonial Empire and Orientalism","r":1,"d":["Hu"]},{"c":["RLST 272"],"t":"Mapping Black Christianity","r":1,"d":[]},{"c":["RLST 321","SAST 362"],"t":"Hindus and Muslims in South Asia","r":1,"d":["Hu"]},{"c":["RLST 366"],"t":"Religion and Politics in China, Xinjiang, and Tibet","r":1,"d":["Hu"]},{"c":["RLST 376","RLST 624"],"t":"Enchantment","r":1,"d":["Hu"]},{"c":["RLST 489"],"t":"Individual Tutorial","r":1,"d":[]},{"c":["RLST 490"],"t":"Religion and Society","r":1,"d":[]},{"c":["RLST 492"],"t":"The Senior Essay","r":1,"d":[]},{"c":["RSEE 322","RUSS 324"],"t":"The Master and Margarita: Money, Sex, and Power in Stalin's Russia","r":1,"d":["WR","Hu","So"]},{"c":["RSEE 401","RUSS 401","RSEE 606","RUSS 606"],"t":"Socialist Realism And Its Legacies","r":1,"d":["Hu"]},{"c":["RSEE 491"],"t":"The Senior Essay","r":1,"d":[]},{"c":["RUSS 120"],"t":"First-Year Russian II","r":1.5,"d":["L2"]},{"c":["RUSS 140"],"t":"Second-Year Russian II","r":1.5,"d":["L4"]},{"c":["RUSS 142"],"t":"Russian for Heritage Learners II","r":1,"d":["L3","L4"]},{"c":["RUSS 145"],"t":"Intensive Intermediate Russian","r":2,"d":["L3","L4"]},{"c":["RUSS 151"],"t":"Third-Year Russian II","r":1.5,"d":["L5"]},{"c":["RUSS 152"],"t":"Mastering Oral Communication in Russian","r":1,"d":["L5"]},{"c":["RUSS 161"],"t":"Fourth-Year Russian II","r":1,"d":["L5"]},{"c":["RUSS 173"],"t":"Ecology and Nature in Russian Culture","r":1,"d":["L5"]},{"c":["RUSS 314"],"t":"Science and Literature in Russia","r":1,"d":["Hu"]},{"c":["RUSS 481"],"t":"Directed Reading in Russian Literature","r":1,"d":[]},{"c":["RUSS 491"],"t":"The Senior Essay","r":1,"d":[]},{"c":["S&DS 100","S&DS 500"],"t":"Introductory Statistics","r":1,"d":["QR"]},{"c":["S&DS 220","S&DS 520"],"t":"Introductory Statistics, Intensive","r":1,"d":["QR"]},{"c":["S&DS 230","ENV 757","PLSC 530","S&DS 530"],"t":"Data Exploration and Analysis","r":1,"d":["QR"]},{"c":["S&DS 363","ENV 758","S&DS 563"],"t":"Multivariate Statistics for Social Sciences","r":1,"d":["QR"]},{"c":["S&DS 425","S&DS 625"],"t":"Statistical Case Studies","r":1,"d":["QR"]},{"c":["S&DS 432","S&DS 632"],"t":"Advanced Optimization Techniques","r":1,"d":[]},{"c":["S&DS 480"],"t":"Individual Studies","r":1,"d":[]},{"c":["S&DS 492"],"t":"Senior Project","r":1,"d":[]},{"c":["SAST 486"],"t":"Directed Study","r":1,"d":[]},{"c":["SAST 492"],"t":"Senior Essay","r":0.5,"d":[]},{"c":["SBCR 120"],"t":"Elementary Bosnian-Croatian-Serbian II","r":1.5,"d":["L2"]},{"c":["SBCR 140"],"t":"Intermediate Bosnian Croatian Serbian II","r":1.5,"d":["L4"]},{"c":["SCIE 011"],"t":"Perspectives on Biological Research","r":0.5,"d":["WR","Sc"]},{"c":["SCIE 021"],"t":"Perspectives on Research in the Mathematical and Physical Sciences","r":0.5,"d":["WR","Sc"]},{"c":["SCIE 031"],"t":"Current Topics in Science","r":0.5,"d":["Sc"]},{"c":["SNHL 120"],"t":"Elementary Sinhala II","r":1.5,"d":["L2"]},{"c":["SNHL 140"],"t":"Intermediate Sinhala II","r":1.5,"d":["L4"]},{"c":["SOCY 101"],"t":"Introduction to Sociology","r":1,"d":["So"]},{"c":["SOCY 105","WGSS 106"],"t":"Prison Nation, Race, Gender, Crime, and Abolition Politics","r":1,"d":["So"]},{"c":["SOCY 141"],"t":"Sociology of Crime and Deviance","r":1,"d":["So"]},{"c":["SOCY 160","URBN 369"],"t":"Methods of Inquiry","r":1,"d":["So"]},{"c":["SOCY 202","SOCY 534"],"t":"Cultural Sociology","r":1,"d":["So"]},{"c":["SOCY 209"],"t":"The Sociological Imagination","r":1,"d":["So"]},{"c":["SOCY 227"],"t":"Contemporary Anti-Semitism and Holocaust Memory","r":1,"d":["Hu","So"]},{"c":["SOCY 228"],"t":"Norms and Deviance","r":1,"d":["So"]},{"c":["SOCY 234"],"t":"Inequality, Economic Mobility & Public Policy","r":1,"d":["So"]},{"c":["SOCY 351","SOCY 545"],"t":"Race, Medicine, and Technology","r":1,"d":["WR","So"]},{"c":["SOCY 472"],"t":"Individual Study","r":1,"d":[]},{"c":["SOCY 492"],"t":"Senior Essay and Colloquium for Nonintensive Majors","r":1,"d":[]},{"c":["SOCY 494"],"t":"Senior Essay and Colloquium for Intensive Majors","r":1,"d":[]},{"c":["SPAN 110"],"t":"Elementary Spanish I","r":1.5,"d":["L1"]},{"c":["SPAN 120"],"t":"Elementary Spanish II","r":1.5,"d":["L2"]},{"c":["SPAN 130"],"t":"Intermediate Spanish I","r":1.5,"d":["L3"]},{"c":["SPAN 140"],"t":"Intermediate Spanish II","r":1.5,"d":["L4"]},{"c":["SPAN 142"],"t":"Spanish for Heritage Speakers II","r":1,"d":["L4"]},{"c":["SPAN 145"],"t":"Intensive Intermediate Spanish","r":2,"d":["L3","L4"]},{"c":["SPAN 150"],"t":"Advanced Oral and Written Communication in Spanish","r":1,"d":["L5"]},{"c":["SPAN 221"],"t":"Spanish Language and Culture through Art","r":1,"d":["L5","Hu"]},{"c":["SPAN 317"],"t":"The Spanish Inquisition: Literature, Material Culture and Visual Studies","r":1,"d":["L5","Hu"]},{"c":["SPAN 479"],"t":"Directed Readings and/or Individual Research","r":1,"d":[]},{"c":["SPAN 491"],"t":"The Senior Essay","r":1,"d":[]},{"c":["SPEC 492"],"t":"The Senior Project","r":1,"d":[]},{"c":["SWAH 120","SWAH 620"],"t":"Beginning Kiswahili II","r":1.5,"d":["L2"]},{"c":["SWAH 140","SWAH 640"],"t":"Intermediate Kiswahili II","r":1.5,"d":["L4"]},{"c":["SWAH 160","SWAH 660"],"t":"Advanced Kiswahili II","r":1,"d":["L5"]},{"c":["SWAH 171"],"t":"Topics in Kiswahili Literature","r":1,"d":["L5","Hu"]},{"c":["SWED 120"],"t":"Elementary Swedish II","r":1.5,"d":["L2"]},{"c":["TAML 120"],"t":"Introductory Tamil II","r":1.5,"d":["L2"]},{"c":["TBTN 120"],"t":"Elementary Classical Tibetan II","r":1,"d":["L2"]},{"c":["TBTN 140"],"t":"Intermediate Classical Tibetan II","r":1.5,"d":["L4"]},{"c":["TBTN 160"],"t":"Advanced Classical Tibetan II","r":1,"d":["L5"]},{"c":["THST 093"],"t":"Creativity, Collaboration, and the Art of Making Theater","r":1,"d":[]},{"c":["THST 111"],"t":"Modes of Performance","r":1,"d":["Hu"]},{"c":["THST 205"],"t":"Building Theatrical Worlds","r":1,"d":["Hu"]},{"c":["THST 210"],"t":"Performance Concepts","r":1,"d":[]},{"c":["THST 211"],"t":"Intermediate Acting","r":1,"d":[]},{"c":["THST 213"],"t":"The Process of New Play Development in American Theater","r":1,"d":[]},{"c":["THST 230"],"t":"Advanced Acting","r":1,"d":[]},{"c":["THST 324"],"t":"Playwright-Director Laboratory","r":1,"d":[]},{"c":["THST 345"],"t":"Dance and Arts Activism in Southeast Asia","r":1,"d":["Hu"]},{"c":["THST 347"],"t":"Stanislavsky: His Rebellious Prot\u00e9g\u00e9s (and some Americans)","r":1,"d":[]},{"c":["THST 379"],"t":"Advanced Topics in Theatrical Violence","r":1,"d":[]},{"c":["THST 396"],"t":"Moving Sites and Structures","r":1,"d":["Hu"]},{"c":["THST 412"],"t":"Libretto Writing for Musical Theater","r":1,"d":[]},{"c":["THST 471"],"t":"Directed Independent Study","r":1,"d":[]},{"c":["THST 491"],"t":"Senior Project in Theater Studies","r":1,"d":[]},{"c":["TKSH 120","TKSH 501"],"t":"Elementary Modern Turkish II","r":1.5,"d":["L2"]},{"c":["TKSH 140","TKSH 503"],"t":"Intermediate Turkish II","r":1.5,"d":["L4"]},{"c":["TWI 140"],"t":"Intermediate Twi Language Course II","r":1.5,"d":["L4"]},{"c":["UKRN 120"],"t":"Elementary Ukrainian II","r":1.5,"d":["L2"]},{"c":["UKRN 140"],"t":"Intermediate Ukrainian II","r":1.5,"d":["L4"]},{"c":["UKRN 160"],"t":"Advanced Ukrainian II","r":1,"d":[]},{"c":["URBN 352"],"t":"Urban Lab: Citymaking and Food Policy","r":1.5,"d":["So"]},{"c":["USAF 102"],"t":"Heritage and Values of the U.S. Air Force II","r":1,"d":[]},{"c":["USAF 202"],"t":"Leadership and Followership in USAF Teams","r":1,"d":[]},{"c":["USAF 302"],"t":"Leading People and Effective Communication II","r":1,"d":[]},{"c":["VIET 120"],"t":"Elementary Vietnamese II","r":1.5,"d":["L2"]},{"c":["VIET 142"],"t":"Accelerated Vietnamese II","r":1,"d":["L4"]}] \ No newline at end of file diff --git a/results3.txt b/results3.txt new file mode 100644 index 0000000..62595c8 --- /dev/null +++ b/results3.txt @@ -0,0 +1 @@ +[{"c":["VIET 471"],"t":"Independent Tutorial","r":1,"d":[]},{"c":["WGSS 030"],"t":"Neoliberalism and Sexuality","r":1,"d":["So"]},{"c":["WGSS 032"],"t":"History of Sexuality","r":1,"d":["WR","Hu"]},{"c":["WGSS 205"],"t":"Bodies and Pleasures, Sex and Genders","r":1,"d":["So"]},{"c":["WGSS 240"],"t":"Women Intellectuals in Italy","r":1,"d":["Hu"]},{"c":["WGSS 340"],"t":"Feminist and Queer Theory","r":1,"d":["WR","Hu"]},{"c":["WGSS 398"],"t":"Junior Research Seminar","r":1,"d":["WR","So"]},{"c":["WGSS 471"],"t":"Independent Directed Study","r":1,"d":[]},{"c":["WGSS 491"],"t":"The Senior Essay","r":1,"d":[]},{"c":["WLOF 120"],"t":"Elementary Wolof II","r":1.5,"d":["L2"]},{"c":["WLOF 140"],"t":"Intermediate Wolof Language II","r":1.5,"d":["L4"]},{"c":["WLOF 160"],"t":"Advanced Wolof II","r":1,"d":["L5"]},{"c":["YDSH 120"],"t":"Elementary Yiddish II","r":1.5,"d":["L2"]},{"c":["YDSH 140"],"t":"Intermediate Yiddish II","r":1.5,"d":["L4"]},{"c":["YORU 120","YORU 620"],"t":"Beginning Yor\u00f9b\u00e1 II","r":1.5,"d":["L2"]},{"c":["YORU 140","YORU 640"],"t":"Intermediate Yor\u00f9b\u00e1 II","r":1.5,"d":["L4"]},{"c":["YORU 160","YORU 660"],"t":"Advanced Yor\u00f9b\u00e1 II","r":1,"d":["L5"]},{"c":["ZULU 120","ZULU 620"],"t":"Beginning isiZulu II","r":1.5,"d":["L2"]},{"c":["ZULU 140","ZULU 640"],"t":"Intermediate isiZulu II","r":1.5,"d":["L4"]},{"c":["ZULU 160","ZULU 660"],"t":"Advanced isiZulu II","r":1,"d":["L5"]},{"c":["AFAM 584","SOCY 584"],"t":"Inequality, Race, and the City","r":1,"d":[]},{"c":["AFAM 764","AMST 715","HIST 715"],"t":"Readings in Nineteenth-Century America","r":1,"d":[]},{"c":["AFAM 777","AMST 707","WGSS 741"],"t":"Race, Colorblindness, and the Academic Disciplines","r":1,"d":[]},{"c":["AFAM 778","PSYC 728"],"t":"Research Topics in Racial Justice in Public Safety","r":1,"d":[]},{"c":["AFAM 790"],"t":"Research and Writing a Dissertation in African American History","r":1,"d":[]},{"c":["AFAM 880"],"t":"Directed Reading","r":1,"d":[]},{"c":["AFAM 896"],"t":"Dissertation Prospectus Workshop","r":0,"d":[]},{"c":["AFAM 997"],"t":"Pedagogy Seminar","r":0,"d":[]},{"c":["AFST 629","GLBL 6190"],"t":"Reopening and Reimagining Africa","r":1,"d":[]},{"c":["AFST 731","GLBL 7310"],"t":"Policy Challenges in the Sahel","r":1,"d":[]},{"c":["AFST 740","REL 739"],"t":"Pentecostalism in Africa: Perspectives, Practice, and Prospects","r":1,"d":[]},{"c":["AFST 752","GLBL 7525"],"t":"Mass Atrocities in Global Politics","r":1,"d":[]},{"c":["AFST 837","HIST 837"],"t":"Decolonization and Independence in Africa","r":1,"d":[]},{"c":["AFST 885","CPLT 735","FREN 885"],"t":"Modern French Poetry in the Maghreb","r":1,"d":[]},{"c":["AFST 900"],"t":"Master\u2019s Thesis","r":1,"d":[]},{"c":["AFST 951"],"t":"Directed Reading and Research","r":1,"d":[]},{"c":["AKKD 506"],"t":"Selected Mesopotamian Texts: Bilingual","r":1,"d":[]},{"c":["AMST 613","ANTH 770","HIST 918","HSHM 777"],"t":"Nature and the Modern Museum","r":1,"d":[]},{"c":["AMST 623","CPLT 822"],"t":"Working Group on Globalization and Culture","r":1,"d":[]},{"c":["AMST 667"],"t":"Critical Human Geography","r":1,"d":[]},{"c":["AMST 692","HSAR 730","JDST 799","REL 967","RLST 788"],"t":"Religion and the Performance of Space","r":1,"d":[]},{"c":["AMST 719","ANTH 739","RLST 703"],"t":"Interrogating the Crisis of Islam","r":1,"d":[]},{"c":["AMST 724","PLSC 868","WGSS 724"],"t":"Gender and Sexuality in American Politics and Policy","r":1,"d":[]},{"c":["AMST 768","HIST 768"],"t":"Asian American History and Historiography","r":1,"d":[]},{"c":["AMST 798","WGSS 800"],"t":"Methods in Gender and Sexuality Studies","r":1,"d":[]},{"c":["AMST 807","REL 781"],"t":"Readings in US Law and Religion","r":1,"d":[]},{"c":["AMST 866","HIST 775","WGSS 712"],"t":"Readings in the History of Sexuality","r":1,"d":[]},{"c":["AMST 900"],"t":"Independent Research","r":1,"d":[]},{"c":["AMST 901"],"t":"Directed Reading","r":1,"d":[]},{"c":["AMST 902"],"t":"Prospectus Workshop","r":1,"d":[]},{"c":["AMST 903","HIST 746","PHUM 903"],"t":"Introduction to Public Humanities","r":1,"d":[]},{"c":["AMST 904","PHUM 904"],"t":"Practicum","r":1,"d":[]},{"c":["AMST 905","PHUM 905"],"t":"Public Humanities Capstone Project","r":1,"d":[]},{"c":["AMTH 525"],"t":"Seminar in Applied Mathematics","r":1,"d":[]},{"c":["AMTH 640","CPSC 640"],"t":"Topics in Numerical Computation","r":1,"d":[]},{"c":["AMTH 710","MATH 710"],"t":"Harmonic Analysis on Graphs and Applications","r":1,"d":[]},{"c":["AMTH 865","MATH 865"],"t":"Inverse Problems","r":1,"d":[]},{"c":["AMTH 999"],"t":"Directed Reading","r":1,"d":[]},{"c":["ANTH 514","ARCG 515","CLSS 878","CPLT 671","HIST 515","JDST 657","NELC 570","RLST 672"],"t":"Corrupting Seas: Premodern Maritime Ecologies (Archaia Seminar)","r":1,"d":[]},{"c":["ANTH 530"],"t":"Ethnography and Social Theory","r":0.5,"d":[]},{"c":["ANTH 579","ARCG 579"],"t":"Directing Archaeological Excavations","r":1,"d":[]},{"c":["ANTH 600"],"t":"Anthropological Imaginations","r":1,"d":[]},{"c":["ANTH 607","SBS 580"],"t":"Qualitative Research Methods in Public Health","r":1,"d":[]},{"c":["ANTH 710","ARCG 710"],"t":"Settlement Patterns and Landscape Archaeology","r":1,"d":[]},{"c":["ANTH 726","ARCG 726"],"t":"Ancient Civilizations of the Eurasian Steppes","r":1,"d":[]},{"c":["ANTH 736","ARCG 736"],"t":"Advanced Topics in Asian Archaeology","r":1,"d":[]},{"c":["ANTH 776","ARCG 776"],"t":"GIS and Spatial Analysis for Archaeology","r":1,"d":[]},{"c":["ANTH 830"],"t":"Topics and Issues in Human Life History Evolution","r":1,"d":[]},{"c":["ANTH 950"],"t":"Directed Research: Preparation for Qualifying Exam","r":1,"d":[]},{"c":["ANTH 951"],"t":"Directed Research in Ethnology and Social Anthropology","r":1,"d":[]},{"c":["ANTH 953"],"t":"Directed Research in Archaeology and Prehistory","r":1,"d":[]},{"c":["ANTH 954"],"t":"Dir Research Biological Anthro: AdvLabMthdslnEndocrin","r":1,"d":[]},{"c":["ANTH 964","HIST 964","HSAR 842","HSHM 692"],"t":"Topics in the Environmental Humanities","r":0.5,"d":[]},{"c":["APHY 590","PHYS 590"],"t":"Responsible Conduct in Research for Physical Scientists","r":1,"d":[]},{"c":["APHY 610","PHYS 610"],"t":"Quantum Many-Body Theory","r":1,"d":[]},{"c":["APHY 816","PHYS 816"],"t":"Techniques of Microwave Measurement and RF Design","r":1,"d":[]},{"c":["APHY 990"],"t":"Special Investigations","r":1,"d":[]},{"c":["ARBC 560"],"t":"Graduate Arabic Seminar: Mu'allaqat","r":1,"d":[]},{"c":["ARCH 1012"],"t":"Architectural Design 2","r":0,"d":[]},{"c":["ARCH 1022"],"t":"Architectural Design 4","r":0,"d":[]},{"c":["ARCH 1111"],"t":"Advanced Design Studio","r":0,"d":[]},{"c":["ARCH 1112"],"t":"Advanced Design Studio","r":0,"d":[]},{"c":["ARCH 1113"],"t":"Advanced Design Studio","r":0,"d":[]},{"c":["ARCH 1114"],"t":"Advanced Design Studio","r":0,"d":[]},{"c":["ARCH 1115"],"t":"Advanced Design Studio","r":0,"d":[]},{"c":["ARCH 1116"],"t":"Advanced Design Studio","r":0,"d":[]},{"c":["ARCH 1117"],"t":"Advanced Design Studio","r":0,"d":[]},{"c":["ARCH 1118"],"t":"Advanced Design Studio","r":0,"d":[]},{"c":["ARCH 1119"],"t":"Advanced Design Studio","r":0,"d":[]},{"c":["ARCH 1121"],"t":"Design Research Studio","r":0,"d":[]},{"c":["ARCH 1224"],"t":"The Chair","r":0,"d":[]},{"c":["ARCH 1225"],"t":"Formal Analysis II","r":0,"d":[]},{"c":["ARCH 1227"],"t":"Drawing Projects","r":0,"d":[]},{"c":["ARCH 1228"],"t":"Ruins, Ruination and Reuse","r":0,"d":[]},{"c":["ARCH 1233"],"t":"Composition and Form","r":0,"d":[]},{"c":["ARCH 1241"],"t":"Altered States of Architecture","r":0,"d":[]},{"c":["ARCH 1243"],"t":"Graphic Inquiry","r":0,"d":[]},{"c":["ARCH 1299"],"t":"Independent Course Work","r":0,"d":[]},{"c":["ARCH 2012"],"t":"Structures II","r":0,"d":[]},{"c":["ARCH 2016"],"t":"Building Project I: Research and Design","r":0,"d":[]},{"c":["ARCH 2022"],"t":"Systems Integration and Development in Design","r":0,"d":[]},{"c":["ARCH 2223"],"t":"Structuring Architecture: Form and Space","r":0,"d":[]},{"c":["ARCH 2226"],"t":"Design Computation","r":0,"d":[]},{"c":["ARCH 2230"],"t":"Exploring New Values in Design Practice","r":0,"d":[]},{"c":["ARCH 2238"],"t":"The Mechanical Artifact","r":0,"d":[]},{"c":["ARCH 2240"],"t":"The Architect As: Recasting the Role of the Architect in the Development Lifecycle","r":0,"d":[]},{"c":["ARCH 2241"],"t":"Building Disasters: When Things Go Wrong","r":0,"d":[]},{"c":["ARCH 2246"],"t":"Introduction to Architectural Robotics","r":0,"d":[]},{"c":["ARCH 2247"],"t":"Soil Sisters","r":0,"d":[]},{"c":["ARCH 2299"],"t":"Independent Course Work","r":0,"d":[]},{"c":["ARCH 3011"],"t":"Architecture and Modernity I: Sites and Spaces","r":0,"d":[]},{"c":["ARCH 3091"],"t":"Methods and Research Workshop","r":0,"d":[]},{"c":["ARCH 3092"],"t":"Independent M.E.D. Research","r":0,"d":[]},{"c":["ARCH 3205"],"t":"Critical Approaches to the History of Architecture","r":0,"d":[]},{"c":["ARCH 3264"],"t":"XS: \"micro\" in Japanese Architecture and Urbanism","r":0,"d":[]},{"c":["ARCH 3297"],"t":"From Shigeru Ban to Ikea: Designing Refugee Camps","r":0,"d":[]},{"c":["ARCH 3299"],"t":"Independent Course Work","r":0,"d":[]},{"c":["ARCH 3317","HSAR 571"],"t":"Architectural Drawing in the Expanded Field","r":0,"d":[]},{"c":["ARCH 3319"],"t":"Architecture, the State, and Racial Formation","r":0,"d":[]},{"c":["ARCH 3320"],"t":"Thinking Race, Reading Architecture","r":0,"d":[]},{"c":["ARCH 3321"],"t":"Architecture and Participation","r":0,"d":[]},{"c":["ARCH 3323"],"t":"Architecture and Machine Intelligence in Theory & Practice","r":0,"d":[]},{"c":["ARCH 3326","HSAR 708"],"t":"Museum and Nation","r":0,"d":[]},{"c":["ARCH 3328"],"t":"Latin American Modernity: Architecture, Art, and Utopia","r":0,"d":[]},{"c":["ARCH 3329"],"t":"Writing and Criticism: Architect as Author, Architect as Subject","r":0,"d":[]},{"c":["ARCH 3330"],"t":"Feral Surfaces and Multi-species Architecture: Rethinking Posthuman Territory","r":0,"d":[]},{"c":["ARCH 4220"],"t":"Port Cities","r":0,"d":[]},{"c":["ARCH 4221"],"t":"Introduction to Commercial Real Estate","r":0,"d":[]},{"c":["ARCH 4223"],"t":"Introduction to British Landscape and Architectural History: 1500 to 1900","r":0,"d":[]},{"c":["ARCH 4253"],"t":"Labs and Landscapes of the Green Revolution","r":0,"d":[]},{"c":["ARCH 4254","ENV 643"],"t":"The Environmental Project: Research, Methods & Discourse","r":0,"d":[]},{"c":["ARCH 4297"],"t":"Historic Preservation in the 21st Century","r":0,"d":[]},{"c":["ARCH 4298"],"t":"Agroecological Urban Constellations","r":0,"d":[]},{"c":["ARCH 4299"],"t":"Independent Course Work","r":0,"d":[]},{"c":["ARCH 4301"],"t":"Global Artscapes: Project Miami","r":0,"d":[]},{"c":["ARCH 4303"],"t":"(Im) Material Artifacts: Matters, Environments, and their Techniques","r":0,"d":[]},{"c":["ARCH 552"],"t":"Ph.D. Seminar: History/Theory II","r":1,"d":[]},{"c":["ARCH 554"],"t":"Ph.D. Seminar: History/Theory IV","r":1,"d":[]},{"c":["ARCH 555"],"t":"PhD Independent Study","r":1,"d":[]},{"c":["ARCH 559"],"t":"Ph.D. Seminar: Ecosystems in Architecture II","r":1,"d":[]},{"c":["ARCH 569"],"t":"Ph.D. Seminar: Ecosystems in Architecture IV","r":1,"d":[]},{"c":["ART 511"],"t":"Pit Crit","r":0,"d":[]},{"c":["ART 513"],"t":"Thesis 2023","r":0,"d":[]},{"c":["ART 515"],"t":"Color Space","r":0,"d":[]},{"c":["ART 543"],"t":"The Narrative Figure","r":0,"d":[]},{"c":["ART 545"],"t":"Individual Criticism: Painting","r":0,"d":[]},{"c":["ART 555"],"t":"On the Surface","r":0,"d":[]},{"c":["ART 560"],"t":"Attention Economies","r":0,"d":[]},{"c":["ART 616"],"t":"Eden is Burning","r":0,"d":[]},{"c":["ART 622"],"t":"PlayPleasurePain","r":0,"d":[]},{"c":["ART 631"],"t":"Studio Seminar: Sculpture","r":0,"d":[]},{"c":["ART 645"],"t":"Individual Criticism: Sculpture","r":0,"d":[]},{"c":["ART 711"],"t":"Preliminary Studio: Graphic Design","r":0,"d":[]},{"c":["ART 721"],"t":"First-Year Graduate Studio: Graphic Design","r":0,"d":[]},{"c":["ART 731"],"t":"Second-Year Graduate Studio: Graphic Design","r":0,"d":[]},{"c":["ART 739"],"t":"Degree Presentation in Graphic Design","r":0,"d":[]},{"c":["ART 743"],"t":"Letterform Design","r":0,"d":[]},{"c":["ART 745"],"t":"T for Typographies","r":0,"d":[]},{"c":["ART 751"],"t":"Print to Screen","r":0,"d":[]},{"c":["ART 753"],"t":"Collage Poetics","r":0,"d":[]},{"c":["ART 762"],"t":"Exhibition Design","r":0,"d":[]},{"c":["ART 806"],"t":"The Practice of Black and White Photography","r":0,"d":[]},{"c":["ART 808"],"t":"Insider/Outside","r":0,"d":[]},{"c":["ART 810"],"t":"Image Culture","r":0,"d":[]},{"c":["ART 812"],"t":"The Assignment: Photography, Context, and Response from Classrooms to Commissions","r":0,"d":[]},{"c":["ART 825"],"t":"What Makes a Book Work?","r":0,"d":[]},{"c":["ART 829"],"t":"Issues in Contemporary Photography","r":0,"d":[]},{"c":["ART 845"],"t":"Individual Criticism: Photography","r":0,"d":[]},{"c":["ART 919"],"t":"Digital Love Languages","r":0,"d":[]},{"c":["ART 935"],"t":"The Artist as Curator","r":0,"d":[]},{"c":["ART 984"],"t":"Interdisciplinary Typography Workshop","r":0,"d":[]},{"c":["ASTR 560"],"t":"Interstellar Matter and Star Formation","r":1,"d":[]},{"c":["ASTR 580"],"t":"Research","r":1,"d":[]},{"c":["ASTR 595"],"t":"Astrophysical Flows","r":1,"d":[]},{"c":["ASTR 620"],"t":"Advanced Programming Tutorial for Astronomy","r":1,"d":[]},{"c":["ASTR 711"],"t":"Professional Seminar","r":1,"d":[]},{"c":["B&BS 501"],"t":"Responsible Conduct of Research","r":0,"d":[]},{"c":["B&BS 503","IBIO 503"],"t":"RCR Refresher for Senior BBS Students","r":1,"d":[]},{"c":["B&BS 680","IMED 680"],"t":"Topics in Human Investigation","r":1,"d":[]},{"c":["BIS 505"],"t":"Biostatistics in Public Health II","r":0,"d":[]},{"c":["BIS 526"],"t":"Seminar in Biostatistics and Journal Club","r":0,"d":[]},{"c":["BIS 536"],"t":"Measurement Error and Missing Data","r":0,"d":[]},{"c":["BIS 543E"],"t":"Topics in Biomedical Informatics and Data Science","r":0,"d":[]},{"c":["BIS 550","CB&B 750"],"t":"Topics in Biomedical Informatics and Data Science","r":0,"d":[]},{"c":["BIS 575"],"t":"Introduction to Regulatory Affairs","r":0,"d":[]},{"c":["BIS 600"],"t":"Independent Study or Directed Readings","r":0,"d":[]},{"c":["BIS 610"],"t":"Applied Area Readings for Qualifying Exams","r":0,"d":[]},{"c":["BIS 628"],"t":"Longitudinal and Multilevel Data Analysis","r":0,"d":[]},{"c":["BIS 630"],"t":"Applied Survival Analysis","r":0,"d":[]},{"c":["BIS 631"],"t":"Advanced Topics in Causal Inference Methods","r":0,"d":[]},{"c":["BIS 640","MGT 642","SBS 640"],"t":"User-Centered Design of Digital Health Tools","r":0,"d":[]},{"c":["BIS 643"],"t":"Theory of Survival Analysis","r":0,"d":[]},{"c":["BIS 645","CB&B 647","GENE 645"],"t":"Statistical Methods in Human Genetics","r":0,"d":[]},{"c":["BIS 646"],"t":"Nonparametric Statistical Methods and Their Applications","r":0,"d":[]},{"c":["BIS 650"],"t":"Master\u2019s Thesis Research","r":0,"d":[]},{"c":["BIS 681"],"t":"Statistical Practice II","r":0,"d":[]},{"c":["BIS 686"],"t":"Capstone in Health Informatics","r":0,"d":[]},{"c":["BIS 687"],"t":"Data Science Capstone","r":0,"d":[]},{"c":["BIS 691"],"t":"Theory of Generalized Linear Models","r":0,"d":[]},{"c":["BIS 695"],"t":"Summer Internship in Biostatistical Research","r":0,"d":[]},{"c":["C&MP 580"],"t":"Mitochondrial Bioenergetics and Intermediary Metabolism","r":1,"d":[]},{"c":["C&MP 600"],"t":"Medical Physiology Case Conferences","r":1,"d":[]},{"c":["C&MP 601"],"t":"Medical Physiology Case Conferences","r":1,"d":[]},{"c":["C&MP 611"],"t":"Medical Research Scholars Program: Mentored Clinical Experience","r":1,"d":[]},{"c":["C&MP 630","PATH 680","PHAR 502"],"t":"Seminar in Molecular Medicine, Pharmacology, and Physiology","r":1,"d":[]},{"c":["C&MP 650","PATH 660","PHAR 580"],"t":"The Responsible Conduct of Research","r":1,"d":[]},{"c":["C&MP 710","MB&B 710"],"t":"Electron Cryo-Microscopy for Protein Structure Determination","r":0.5,"d":[]},{"c":["C&MP 711","MB&B 711"],"t":"Practical cryo-EM Workshop","r":0.5,"d":[]},{"c":["CAND 999"],"t":"Prep: Admission to Candidacy","r":0,"d":[]},{"c":["CB&B 601","IBIO 601","MBIO 601"],"t":"Fundamentals of Research: Responsible Conduct of Research","r":1,"d":[]},{"c":["CB&B 712"],"t":"Lab Rotations","r":1,"d":[]},{"c":["CB&B 713"],"t":"Lab Rotations","r":1,"d":[]},{"c":["CBIO 502"],"t":"Molecules to Systems","r":1,"d":[]},{"c":["CBIO 601"],"t":"Science at the Frontiers of Medicine","r":1,"d":[]},{"c":["CBIO 604","PTB 604"],"t":"Physiologic Function and Cellular Structure of Organ Systems","r":1,"d":[]},{"c":["CBIO 606"],"t":"Advanced Topics in Cell Biology","r":1,"d":[]},{"c":["CBIO 701"],"t":"Illuminating Cellular Function","r":1,"d":[]},{"c":["CBIO 901","GENE 901","MCDB 901"],"t":"Research Skills and Ethics II","r":1,"d":[]},{"c":["CBIO 913","GENE 913","MCDB 913"],"t":"Third Laboratory Rotation","r":1,"d":[]},{"c":["CDE 516"],"t":"Principles of Epidemiology II","r":0,"d":[]},{"c":["CDE 520","EHS 520"],"t":"Case-Based Learning for Genetic and Environmental Diseases","r":0,"d":[]},{"c":["CDE 526"],"t":"Seminar in Chronic Disease Epidemiology","r":0,"d":[]},{"c":["CDE 532"],"t":"Epidemiology of Cancer","r":0,"d":[]},{"c":["CDE 534"],"t":"Applied Analytic Methods in Epidemiology","r":0,"d":[]},{"c":["CDE 535"],"t":"Epidemiology of Heart Disease and Stroke","r":0,"d":[]},{"c":["CDE 538"],"t":"Soda Politics: How the Soft Drink Industry Profoundly Influences Social Policy around the World","r":0,"d":[]},{"c":["CDE 543E"],"t":"Systematic Reviews and Meta-analyses: Methodology of Synthesizing Evidence","r":0,"d":[]},{"c":["CDE 545"],"t":"Health Disparities by Race and Social Class: Application to Chronic Disease Epidemiology","r":0,"d":[]},{"c":["CDE 563","EHS 563"],"t":"Biomarkers of Exposure, Effect, and Susceptibility in the Epidemiology of Noncommunicable Disease","r":0,"d":[]},{"c":["CDE 567"],"t":"Injury and Violence as Public Health Issues","r":0,"d":[]},{"c":["CDE 570"],"t":"Humanities, Arts, and Public Health","r":0,"d":[]},{"c":["CDE 600"],"t":"Independent Study or Directed Readings","r":0,"d":[]},{"c":["CDE 610"],"t":"Applied Area Readings for Qualifying Exams","r":0,"d":[]},{"c":["CDE 670"],"t":"Advanced Field Methods in Public Health","r":0,"d":[]},{"c":["CHEM 511"],"t":"Fundamentals of Diffraction for Small Molecule Crystallography","r":0.5,"d":[]},{"c":["CHEM 512"],"t":"The Refinement of Small Molecule Crystal Structures","r":0.5,"d":[]},{"c":["CHEM 514"],"t":"Molecular Materials: Design, Synthesis, and Properties","r":0.5,"d":[]},{"c":["CHEM 528"],"t":"Natural Products Synthesis","r":0.5,"d":[]},{"c":["CHEM 529"],"t":"Total Synthesis","r":0.5,"d":[]},{"c":["CHEM 535"],"t":"Fundamental Medicinal Chemistry","r":0.5,"d":[]},{"c":["CHEM 536"],"t":"Computer Simulations of Organic and Biomolecular Systems","r":0.5,"d":[]},{"c":["CHEM 562L","PHYS 762"],"t":"Laboratory in Instrument Design and the Mechanical Arts","r":0.5,"d":[]},{"c":["CHEM 564L"],"t":"Advanced Mechanical Instrumentation","r":1,"d":[]},{"c":["CHEM 565L"],"t":"Introduction to Glass Blowing","r":0.5,"d":[]},{"c":["CHEM 584"],"t":"Machine Learning and Quantum Computing in Chemistry and Materials Science","r":0.5,"d":[]},{"c":["CHEM 588"],"t":"Optical Spectroscopy: Applications in Biophysics","r":0.5,"d":[]},{"c":["CHEM 593"],"t":"Biochemical Rates and Mechanisms II","r":0.5,"d":[]},{"c":["CHEM 600"],"t":"Research Seminar","r":1,"d":[]},{"c":["EPH 525"],"t":"Thesis","r":0,"d":[]},{"c":["CHEM 721"],"t":"Current Topics in Organic Chemistry","r":1,"d":[]},{"c":["CHEM 731"],"t":"Theoretical Chemistry Seminar","r":1,"d":[]},{"c":["CHEM 741"],"t":"Seminar in Chemical Biology","r":1,"d":[]},{"c":["CHEM 751"],"t":"Biophysical and Physical Chemistry Seminar","r":1,"d":[]},{"c":["CHEM 761"],"t":"Seminar in Inorganic Chemistry","r":1,"d":[]},{"c":["CHEM 981"],"t":"Introduction to Research for Long Rotations","r":1,"d":[]},{"c":["CHEM 984"],"t":"Introduction to Research for Short Rotations","r":1,"d":[]},{"c":["CHEM 990"],"t":"Research","r":1,"d":[]},{"c":["CLSS 624","EMST 621","ENGL 521","HIST 532","MDVL 621"],"t":"Advanced Manuscript Studies","r":1,"d":[]},{"c":["CLSS 820","PHIL 790"],"t":"Plato Sophist","r":1,"d":[]},{"c":["CLSS 864","HSAR 563"],"t":"Art and Ritual in Greek Antiquity","r":1,"d":[]},{"c":["CLSS 868"],"t":"Roman Narratives","r":1,"d":[]},{"c":["CLSS 897"],"t":"History of Greek Literature II","r":1,"d":[]},{"c":["CLSS 900"],"t":"Directed Reading","r":1,"d":[]},{"c":["CPLT 516"],"t":"Narrative in Law and Literature","r":1,"d":[]},{"c":["CPLT 605","ENGL 905","NELC 689"],"t":"Edward Said as Public Intellectual","r":1,"d":[]},{"c":["CPLT 658","ENGL 699","ITAL 946","MDVL 946"],"t":"Early Modern Ecologies: Representing Peasants, Animals, Labor, Land","r":1,"d":[]},{"c":["CPLT 802","EALL 804","ENGL 804"],"t":"Transpacific Performance in the Cold War","r":1,"d":[]},{"c":["CPLT 821","ENGL 999"],"t":"Dissertation Workshop","r":1,"d":[]},{"c":["CPLT 980"],"t":"I and Thou: Dialogue and Miscommunication in Theory and Literature","r":1,"d":[]},{"c":["CPSC 568"],"t":"Computational Complexity","r":1,"d":[]},{"c":["CPSC 612"],"t":"Topics in Algorithmic Game Theory","r":1,"d":[]},{"c":["CPSC 664"],"t":"Modern Probability in Theoretical Computer Science","r":1,"d":[]},{"c":["CPSC 666"],"t":"Secure Decentralized Systems","r":1,"d":[]},{"c":["CPSC 669"],"t":"LinearPrgmg,Convexity&Applctns","r":1,"d":[]},{"c":["CPSC 670"],"t":"Topics in Natural Language Processing","r":1,"d":[]},{"c":["CPSC 677"],"t":"Advanced Natural Language Processing","r":1,"d":[]},{"c":["CPSC 679"],"t":"Physics Simulation for Movies and Games","r":1,"d":[]},{"c":["CPSC 680"],"t":"Trustworthy Deep Learning","r":1,"d":[]},{"c":["CPSC 690"],"t":"Independent Project I","r":1,"d":[]},{"c":["CPSC 691"],"t":"Independent Project II","r":1,"d":[]},{"c":["CPSC 692"],"t":"Independent Project","r":1,"d":[]},{"c":["CPSC 993"],"t":"Great Presentations","r":0,"d":[]},{"c":["DISR 999"],"t":"Diss Research - in Residence","r":0,"d":[]},{"c":["DRAM 109"],"t":"Structural Design for the Stage","r":0,"d":[]},{"c":["DRAM 115"],"t":"Introduction to Costume Design","r":0,"d":[]},{"c":["DRAM 124"],"t":"Introduction to Lighting Design","r":0,"d":[]},{"c":["DRAM 125"],"t":"The History of Costume","r":0,"d":[]},{"c":["DRAM 129"],"t":"History of Theater Architecture","r":0,"d":[]},{"c":["DRAM 141"],"t":"Law and the Arts","r":0,"d":[]},{"c":["DRAM 152"],"t":"Scene Painting","r":0,"d":[]},{"c":["DRAM 158"],"t":"Recording Arts","r":0,"d":[]},{"c":["DRAM 161"],"t":"Principles of Development","r":0,"d":[]},{"c":["DRAM 172"],"t":"Digital Technology for Designers","r":0,"d":[]},{"c":["DRAM 191"],"t":"Managing the Production Process","r":0,"d":[]},{"c":["DRAM 219"],"t":"Lighting Production Process","r":0,"d":[]},{"c":["DRAM 224"],"t":"Introduction to Projection Design","r":0,"d":[]},{"c":["DRAM 231"],"t":"Advanced Topics in Marketing and Branding","r":0,"d":[]},{"c":["DRAM 244"],"t":"Motion Graphics and Film Production","r":0,"d":[]},{"c":["DRAM 258"],"t":"Music Production for Drama","r":0,"d":[]},{"c":["DRAM 331"],"t":"Managing Crisis and Recovery","r":0,"d":[]},{"c":["DRAM 334"],"t":"Advanced Projection Design","r":0,"d":[]},{"c":["DRAM 350"],"t":"The Choreographic Imagination","r":0,"d":[]},{"c":["DRAM 381"],"t":"Human Resources Management, Recruiting and Managing Today","r":0,"d":[]},{"c":["DRAM 406","FILM 804","MUSI 837"],"t":"Opera, Media, Technologies","r":0,"d":[]},{"c":["DRAM 428"],"t":"Auditory Culture","r":0,"d":[]},{"c":["DRAM 476"],"t":"Hot Topics","r":0,"d":[]},{"c":["DRAM 559"],"t":"Imagining an Anti-Racist Production Process","r":0,"d":[]},{"c":["DRAM 6"],"t":"Survey of Theater and Drama","r":0,"d":[]},{"c":["DRAM 686"],"t":"Black Women Playwrights","r":0,"d":[]},{"c":["DRAM 786"],"t":"Offending the Audience","r":0,"d":[]},{"c":["E&EB 501"],"t":"Advanced Topics in Ecology and Evolutionary Biology","r":1,"d":[]},{"c":["E&EB 545"],"t":"Responsible Conduct of Research","r":0,"d":[]},{"c":["E&EB 713"],"t":"From Biodiversity Science to Conservation Impact","r":1,"d":[]},{"c":["E&EB 725"],"t":"Scientific Writing for Ecology and Evolutionary Biology","r":1,"d":[]},{"c":["E&EB 854"],"t":"The Behavioral Immune System","r":1,"d":[]},{"c":["E&EB 865"],"t":"Evolutionary Architects: Organisms as Targets and Agents of Natural Selection","r":1,"d":[]},{"c":["E&EB 872"],"t":"Speciation & Adaptation Genomics","r":1,"d":[]},{"c":["E&EB 901"],"t":"Research Rotation I","r":1,"d":[]},{"c":["E&EB 902"],"t":"Research Rotation II","r":1,"d":[]},{"c":["E&RS 570","GLBL 6135"],"t":"European Union Law","r":1,"d":[]},{"c":["E&RS 618","RUSS 670"],"t":"Empire in Russian Culture","r":1,"d":[]},{"c":["E&RS 940"],"t":"Independent Study","r":1,"d":[]},{"c":["E&RS 950"],"t":"Master\u2019s Thesis","r":1,"d":[]},{"c":["EALL 504","RLST 860"],"t":"Religion in Japanese Literary Arts","r":1,"d":[]},{"c":["EALL 564"],"t":"Digital China","r":1,"d":[]},{"c":["EALL 600","EAST 640"],"t":"Sinological Methods","r":1,"d":[]},{"c":["EALL 651"],"t":"Advanced Readings: Modern Chinese Literature","r":1,"d":[]},{"c":["EALL 745"],"t":"Readings in Medieval Chinese Thought","r":1,"d":[]},{"c":["EALL 753","EMST 960","MDVL 975","RLST 955"],"t":"Proseminar for Jobseekers in Premodern Fields","r":1,"d":[]},{"c":["EALL 900"],"t":"Directed Readings","r":1,"d":[]},{"c":["EALL 990"],"t":"Directed Research","r":1,"d":[]},{"c":["EAST 507","HSAR 786"],"t":"The Dutch in Japan (1600-1868)","r":1,"d":[]},{"c":["EAST 594","HSAR 594"],"t":"Chinese Paintings at the YUAG","r":1,"d":[]},{"c":["EAST 889","HIST 889"],"t":"Research in Japanese History","r":1,"d":[]},{"c":["EAST 900"],"t":"Master\u2019s Thesis","r":1,"d":[]},{"c":["EAST 910"],"t":"Independent Study","r":1,"d":[]},{"c":["ECON 501"],"t":"General Economic Theory: Microeconomics","r":1,"d":[]},{"c":["ECON 511"],"t":"General Economic Theory: Macroeconomics","r":1,"d":[]},{"c":["ECON 521"],"t":"Advanced Microeconomic Theory II","r":1,"d":[]},{"c":["ECON 523"],"t":"Microeconomic Theory Lunch","r":1,"d":[]},{"c":["ECON 526"],"t":"Advanced Macroeconomics II","r":1,"d":[]},{"c":["ECON 531"],"t":"Mathematical Economics II","r":1,"d":[]},{"c":["ECON 538"],"t":"Microeconomic Theory Workshop","r":1,"d":[]},{"c":["ECON 541"],"t":"Student Workshop in Macroeconomics","r":1,"d":[]},{"c":["ECON 543"],"t":"Macroeconomics Workshop","r":1,"d":[]},{"c":["ECON 548","PLSC 721"],"t":"Political Economy of Development","r":1,"d":[]},{"c":["ECON 551"],"t":"Econometrics II","r":1,"d":[]},{"c":["ECON 552"],"t":"Econometrics III","r":1,"d":[]},{"c":["ECON 553"],"t":"Econometrics IV: Time Series Econometrics","r":1,"d":[]},{"c":["ECON 554"],"t":"Econometrics V","r":1,"d":[]},{"c":["ECON 559"],"t":"Development Econometrics (IDE)","r":1,"d":[]},{"c":["ECON 568"],"t":"Econometrics Workshop","r":1,"d":[]},{"c":["ECON 571"],"t":"Prospectus Workshop in Econometrics","r":1,"d":[]},{"c":["ECON 581"],"t":"American Economic History","r":1,"d":[]},{"c":["ECON 589"],"t":"Economic History Workshop","r":1,"d":[]},{"c":["ECON 601"],"t":"Industrial Organization II","r":1,"d":[]},{"c":["ECON 607"],"t":"Prospectus Workshop in Industrial Organization","r":1,"d":[]},{"c":["ECON 609"],"t":"Industrial Organization Seminar","r":1,"d":[]},{"c":["ECON 631"],"t":"Labor Economics","r":1,"d":[]},{"c":["ECON 639"],"t":"Labor and Population Workshop","r":1,"d":[]},{"c":["ECON 640"],"t":"Prospectus Workshop in Labor Economics and Public Finance","r":1,"d":[]},{"c":["ECON 672","MGMT 745"],"t":"Behavioral Finance","r":1,"d":[]},{"c":["ECON 675","MGMT 720"],"t":"Models of Operations Research and Management","r":0.5,"d":[]},{"c":["ECON 679"],"t":"Financial Economics Student Lunch","r":1,"d":[]},{"c":["ECON 707"],"t":"Prospectus Workshop in International Economics","r":1,"d":[]},{"c":["ECON 721"],"t":"International Trade II","r":1,"d":[]},{"c":["ECON 729"],"t":"Workshop: International Trade","r":1,"d":[]},{"c":["ECON 731"],"t":"Economic Development II","r":1,"d":[]},{"c":["ECON 732"],"t":"Advanced Economic Development","r":1,"d":[]},{"c":["ECON 750"],"t":"Trade and Development Workshop","r":1,"d":[]},{"c":["ECON 756"],"t":"Prospectus Workshop in Development","r":1,"d":[]},{"c":["ECON 794"],"t":"International Trade Policy","r":1,"d":[]},{"c":["ECON 899"],"t":"Individual Reading and Research","r":1,"d":[]},{"c":["EHS 500"],"t":"Independent Study in Environmental Health Sciences","r":0,"d":[]},{"c":["EHS 503","ENV 896"],"t":"Public Health Toxicology","r":0,"d":[]},{"c":["EHS 511","ENV 893"],"t":"Principles of Risk Assessment","r":0,"d":[]},{"c":["EHS 526"],"t":"Seminar and Journal Club in Environmental Health","r":0,"d":[]},{"c":["EHS 530","ENV 608"],"t":"Our Air, Our Health","r":0,"d":[]},{"c":["EHS 542E"],"t":"Risk Assessment and Policy","r":0,"d":[]},{"c":["EHS 545"],"t":"Molecular Epidemiology","r":0,"d":[]},{"c":["EHS 547"],"t":"Climate Change and Public Health","r":0,"d":[]},{"c":["EHS 567","ENV 771"],"t":"Fundamentals of Green Chemistry and Green Engineering","r":0,"d":[]},{"c":["EHS 569"],"t":"Advanced GIS Workshop","r":0,"d":[]},{"c":["EHS 573"],"t":"Epidemiological Issues in Occupational and Environmental Medicine","r":0,"d":[]},{"c":["EHS 581"],"t":"Public Health Emergencies: Disaster Planning and Response","r":0,"d":[]},{"c":["EHS 600"],"t":"Independent Study or Directed Readings","r":0,"d":[]},{"c":["EHS 620"],"t":"Research Rotation","r":0,"d":[]},{"c":["ELP 504"],"t":"Speaking Fluently 1","r":0,"d":[]},{"c":["ELP 506"],"t":"Academic Writing 1","r":0,"d":[]},{"c":["ELP 507"],"t":"Academic Writing 2","r":0,"d":[]},{"c":["ELP 508"],"t":"Pronunciation 1","r":0,"d":[]},{"c":["ELP 514"],"t":"Speaking Fluently 2","r":0,"d":[]},{"c":["ELP 515"],"t":"Teaching in the American Classroom","r":0,"d":[]},{"c":["ELP 524"],"t":"Professional Communication Skills","r":0,"d":[]},{"c":["EMD 518"],"t":"Principles of Infectious Diseases II","r":0,"d":[]},{"c":["EMD 526"],"t":"Seminar in Epidemiology of Microbial Diseases","r":0,"d":[]},{"c":["EMD 530"],"t":"Health Care Epidemiology: Improving Health Care Quality through Infection Prevention","r":0,"d":[]},{"c":["EMD 531"],"t":"Genomic Epidemiology of Infectious Diseases","r":0,"d":[]},{"c":["EMD 536"],"t":"Outbreak Investigations: Principles and Practice","r":0,"d":[]},{"c":["EMD 539"],"t":"Introduction to Public Health Surveillance","r":0,"d":[]},{"c":["EMD 541"],"t":"Health in Humanitarian Crises","r":0,"d":[]},{"c":["EMD 553"],"t":"Transmission Dynamic Models for Understanding Infectious Diseases","r":0,"d":[]},{"c":["EMD 563"],"t":"Laboratory and Field Studies in Infectious Diseases","r":0,"d":[]},{"c":["EMD 600"],"t":"Independent Study or Directed Readings","r":0,"d":[]},{"c":["EMD 625"],"t":"How to Develop, Write, and Evaluate an NIH Proposal","r":0,"d":[]},{"c":["EMD 671"],"t":"Advanced Research Laboratories","r":0,"d":[]},{"c":["EMST 572","ENGL 722"],"t":"Transatlantic Literature, 1688\u20131818","r":1,"d":[]},{"c":["EMST 678","HIST 578","RLST 677"],"t":"The Catholic Reformation","r":1,"d":[]},{"c":["EMST 701"],"t":"Workshop in Early Modern Studies","r":0.5,"d":[]},{"c":["EMST 739","HSAR 539"],"t":"Early Modern England","r":1,"d":[]},{"c":["EMST 745","HSAR 585","MDVL 595"],"t":"Art and Race in Medieval Europe","r":1,"d":[]},{"c":["EMST 801"],"t":"Early Modern Colloquium","r":0.5,"d":[]},{"c":["EMST 816","HIST 936","HSHM 716"],"t":"Early Modern Science and Medicine","r":1,"d":[]},{"c":["ENAS 500"],"t":"Mathematical Methods I","r":1,"d":[]},{"c":["ENAS 508"],"t":"Responsible Conduct of Research","r":0,"d":[]},{"c":["ENAS 517","MB&B 517","MCDB 517","PHYS 517"],"t":"Methods and Logic in Interdisciplinary Research","r":0.5,"d":[]},{"c":["ENAS 519"],"t":"Responsible Conduct of Research","r":0,"d":[]},{"c":["ENAS 532"],"t":"Industry-Sponsored 3D Design Project","r":1,"d":[]},{"c":["ENAS 602"],"t":"Chemical Reaction Engineering","r":1,"d":[]},{"c":["ENAS 642"],"t":"Environmental Physicochemical Processes","r":1,"d":[]},{"c":["ENAS 700"],"t":"Research Seminars in Mechanical Engineering & Materials Science","r":0,"d":[]},{"c":["MGT 672","GLBL 5070"],"t":"Practicum Data Analysis","r":1,"d":[]},{"c":["ENAS 800"],"t":"Science and Technology of the Internet of Things","r":1,"d":[]},{"c":["ENAS 925"],"t":"Special Topics in Computer Systems","r":1,"d":[]},{"c":["ENAS 990"],"t":"Special Investigations","r":1,"d":[]},{"c":["ENGL 526","MDVL 623"],"t":"History and Theory of the Lyric, Medieval and Modern","r":1,"d":[]},{"c":["ENGL 540","MDVL 752","REL 743"],"t":"Staging Mysteries: The Legacy of Medieval Biblical Drama, Past and Present","r":1,"d":[]},{"c":["ENGL 597"],"t":"Writing Identity","r":1,"d":[]},{"c":["ENGL 809"],"t":"The Badness of Victorian Poetry","r":1,"d":[]},{"c":["ENGL 919","FILM 919"],"t":"Elemental Media","r":1,"d":[]},{"c":["ENGL 990"],"t":"The Teaching of English","r":1,"d":[]},{"c":["ENGL 995"],"t":"Directed Reading","r":1,"d":[]},{"c":["ENV 1008"],"t":"Project Course","r":0,"d":[]},{"c":["ENV 1010"],"t":"Project Course","r":0,"d":[]},{"c":["ENV 1020"],"t":"Project Course","r":0,"d":[]},{"c":["ENV 1030"],"t":"Project Course","r":0,"d":[]},{"c":["ENV 1035"],"t":"Project Course","r":0,"d":[]},{"c":["ENV 1040"],"t":"Project Course","r":0,"d":[]},{"c":["ENV 1050"],"t":"Project Course","r":0,"d":[]},{"c":["ENV 1052"],"t":"Project Course","r":0,"d":[]},{"c":["ENV 1054"],"t":"Project Course","r":0,"d":[]},{"c":["ENV 1072"],"t":"Project Course","r":0,"d":[]},{"c":["ENV 1110"],"t":"Project Course","r":0,"d":[]},{"c":["ENV 1130"],"t":"Project Course","r":0,"d":[]},{"c":["ENV 1140"],"t":"Project Course","r":0,"d":[]},{"c":["ENV 1143"],"t":"Project Course","r":0,"d":[]},{"c":["ENV 1147"],"t":"Project Course","r":0,"d":[]},{"c":["ENV 1153"],"t":"Project Course","r":0,"d":[]},{"c":["ENV 1158"],"t":"Project Course","r":0,"d":[]},{"c":["ENV 1160"],"t":"Project Course","r":0,"d":[]},{"c":["ENV 1175"],"t":"Project Course","r":0,"d":[]},{"c":["ENV 1185"],"t":"Project Course","r":0,"d":[]},{"c":["ENV 1195"],"t":"Project Course","r":0,"d":[]},{"c":["ENV 1210"],"t":"Project Course","r":0,"d":[]},{"c":["ENV 1215"],"t":"Project Course","r":0,"d":[]},{"c":["ENV 1230"],"t":"Project Course","r":0,"d":[]},{"c":["ENV 1240"],"t":"Project Course","r":0,"d":[]},{"c":["ENV 1242"],"t":"Project Course","r":0,"d":[]},{"c":["ENV 1253"],"t":"Project Course","r":0,"d":[]},{"c":["ENV 1255"],"t":"Project Course","r":0,"d":[]},{"c":["ENV 1257"],"t":"Project Course","r":0,"d":[]},{"c":["ENV 1259"],"t":"Project Course","r":0,"d":[]},{"c":["ENV 1260"],"t":"Project Course","r":0,"d":[]},{"c":["ENV 1261"],"t":"Project Course","r":0,"d":[]},{"c":["ENV 1263"],"t":"Project Course","r":0,"d":[]},{"c":["ENV 1270"],"t":"Project Course","r":0,"d":[]},{"c":["ENV 1290"],"t":"Project Course","r":0,"d":[]},{"c":["ENV 1300"],"t":"Project Course","r":0,"d":[]},{"c":["ENV 1320"],"t":"Project Course","r":0,"d":[]},{"c":["ENV 1325"],"t":"Project Course","r":0,"d":[]},{"c":["ENV 1330"],"t":"Project Course","r":0,"d":[]},{"c":["ENV 1345"],"t":"Project Course","r":0,"d":[]},{"c":["ENV 1350"],"t":"Project Course","r":0,"d":[]},{"c":["ENV 1363"],"t":"Project Course","r":0,"d":[]},{"c":["ENV 1364"],"t":"Project Course","r":0,"d":[]},{"c":["ENV 1390"],"t":"Project Course","r":0,"d":[]},{"c":["ENV 1393"],"t":"Project Course","r":0,"d":[]},{"c":["ENV 1400"],"t":"Project Course","r":0,"d":[]},{"c":["ENV 1408"],"t":"Project Course","r":0,"d":[]},{"c":["ENV 1420"],"t":"Project Course","r":0,"d":[]},{"c":["ENV 1427"],"t":"Project Course","r":0,"d":[]},{"c":["ENV 1450"],"t":"Project Course","r":0,"d":[]},{"c":["ENV 1462"],"t":"Project Course","r":0,"d":[]},{"c":["ENV 1469"],"t":"Project Course","r":0,"d":[]},{"c":["ENV 1470"],"t":"Project Course","r":0,"d":[]},{"c":["ENV 1473"],"t":"Project Course","r":0,"d":[]},{"c":["ENV 1475"],"t":"Project Course","r":0,"d":[]},{"c":["ENV 1488"],"t":"Project Course","r":0,"d":[]},{"c":["ENV 1500"],"t":"Project Course","r":0,"d":[]},{"c":["ENV 3010"],"t":"MESc/MFS Research Thesis","r":0,"d":[]},{"c":["ENV 3020"],"t":"MESc/MFS Research Thesis","r":0,"d":[]},{"c":["ENV 3035"],"t":"MESc/MFS Research Thesis","r":0,"d":[]},{"c":["ENV 3040"],"t":"MESc/MFS Research Thesis","r":0,"d":[]},{"c":["ENV 3054"],"t":"MESc/MFS Research Thesis","r":0,"d":[]},{"c":["ENV 3072"],"t":"MESc/MFS Research Thesis","r":0,"d":[]},{"c":["ENV 3073"],"t":"MESc/MFS Research Thesis","r":0,"d":[]},{"c":["ENV 3110"],"t":"MESc/MFS Research Thesis","r":0,"d":[]},{"c":["ENV 3130"],"t":"MESc/MFS Research Thesis","r":0,"d":[]},{"c":["ENV 3140"],"t":"MESc/MFS Research Thesis","r":0,"d":[]},{"c":["ENV 3143"],"t":"MESc/MFS Research Thesis","r":0,"d":[]},{"c":["ENV 3158"],"t":"MESc/MFS Research Thesis","r":0,"d":[]},{"c":["ENV 3160"],"t":"MESc/MFS Research Thesis","r":0,"d":[]},{"c":["ENV 3175"],"t":"MESc/MFS Research Thesis","r":0,"d":[]},{"c":["ENV 3185"],"t":"MESc/MFS Research Thesis","r":0,"d":[]},{"c":["ENV 3215"],"t":"MESc/MFS Research Thesis","r":0,"d":[]},{"c":["ENV 3240"],"t":"MESc/MFS Research Thesis","r":0,"d":[]},{"c":["ENV 3246"],"t":"MESc/MFS Research Thesis","r":0,"d":[]},{"c":["ENV 3257"],"t":"MESc/MFS Research Thesis","r":0,"d":[]},{"c":["ENV 3260"],"t":"MESc/MFS Research Thesis","r":0,"d":[]},{"c":["ENV 3261"],"t":"MESc/MFS Research Thesis","r":0,"d":[]},{"c":["ENV 3263"],"t":"MESc/MFS Research Thesis","r":0,"d":[]},{"c":["ENV 3290"],"t":"MESc/MFS Research Thesis","r":0,"d":[]},{"c":["ENV 3300"],"t":"MESc/MFS Research Thesis","r":0,"d":[]},{"c":["ENV 3320"],"t":"MESc/MFS Research Thesis","r":0,"d":[]},{"c":["ENV 3345"],"t":"MESc/MFS Research Thesis","r":0,"d":[]},{"c":["ENV 3350"],"t":"MESc/MFS Research Thesis","r":0,"d":[]},{"c":["ENV 3363"],"t":"MESc/MFS Research Thesis","r":0,"d":[]},{"c":["ENV 3364"],"t":"MESc/MFS Research Thesis","r":0,"d":[]},{"c":["ENV 3390"],"t":"MESc/MFS Research Thesis","r":0,"d":[]},{"c":["ENV 3393"],"t":"MESc/MFS Research Thesis","r":0,"d":[]},{"c":["ENV 3400"],"t":"MESc/MFS Research Thesis","r":0,"d":[]},{"c":["ENV 3408"],"t":"MESc/MFS Research Thesis","r":0,"d":[]},{"c":["ENV 3420"],"t":"MESc/MFS Research Thesis","r":0,"d":[]},{"c":["ENV 3450"],"t":"MESc/MFS Research Thesis","r":0,"d":[]},{"c":["ENV 3462"],"t":"MESc/MFS Research Thesis","r":0,"d":[]},{"c":["ENV 3469"],"t":"MESc/MFS Research Thesis","r":0,"d":[]},{"c":["ENV 3470"],"t":"MESc/MFS Research Thesis","r":0,"d":[]},{"c":["ENV 3488"],"t":"MESc/MFS Research Thesis","r":0,"d":[]},{"c":["ENV 3500"],"t":"MESc/MFS Research Thesis","r":0,"d":[]},{"c":["ENV 552"],"t":"Master Student Research Conf.","r":0,"d":[]},{"c":["ENV 564"],"t":"Yale Forest Forum: Voluntary Carbon Markets and Tropical Forests","r":0,"d":[]},{"c":["ENV 577"],"t":"Environmental Communicator","r":0,"d":[]},{"c":["ENV 586"],"t":"Topics in Applied Aquatic Ecology","r":0,"d":[]},{"c":["ENV 595"],"t":"Yale Environment Review","r":0,"d":[]},{"c":["ENV 603"],"t":"Environmental Data Visualization for Communication","r":0,"d":[]},{"c":["ENV 604","GLBL 6520","HPM 631","MGT 631"],"t":"Public Health Entrepreneurship & Intrapraneurship","r":0,"d":[]},{"c":["ENV 609"],"t":"Advanced Industrial Ecology Seminar: Global Approaches to Industrial Symbiosis","r":0,"d":[]},{"c":["ENV 613"],"t":"Writing as a Public Scholar","r":0,"d":[]},{"c":["ENV 614"],"t":"GHG Management: Practical Methods","r":0,"d":[]},{"c":["ENV 617"],"t":"Real-World Environmental Data Science","r":0,"d":[]},{"c":["ENV 621"],"t":"The Ministry for the Future: Imagining the Potential for Global Climate Cooperation","r":0,"d":[]},{"c":["ENV 623"],"t":"Seminar: The Role of Methane in Global Climate Disruption: The Search for Solutions","r":0,"d":[]},{"c":["ENV 625"],"t":"Writing Workshop","r":0,"d":[]},{"c":["ENV 634"],"t":"Ecology of Global Drylands","r":0,"d":[]},{"c":["ENV 635","MGT 683"],"t":"Renewable Energy Project Finance","r":0,"d":[]},{"c":["ENV 636"],"t":"Carbon Removal as a Decarbonization Pathway","r":0,"d":[]},{"c":["ENV 637"],"t":"A Toolkit for Communicating Environmental Science","r":0,"d":[]},{"c":["ENV 642"],"t":"Environmental Justice/Climate Justice","r":0,"d":[]},{"c":["ENV 650"],"t":"Seminar in Wildland Fire of the Western United States","r":0,"d":[]},{"c":["ENV 651"],"t":"Seminar in the Biosphere: History, Development, and Consequences","r":0,"d":[]},{"c":["ENV 653"],"t":"Maple: From Tree to Table","r":0,"d":[]},{"c":["ENV 656"],"t":"Tree Physiology and Ecophysiology","r":0,"d":[]},{"c":["ENV 659"],"t":"The Practice of Silviculture: Principles in Applied Forest Ecology","r":0,"d":[]},{"c":["ENV 670"],"t":"Southern Forest and Forestry Field Trip","r":0,"d":[]},{"c":["ENV 685"],"t":"Engaging Landholders and Communities in Conserving and Restoring Tropical Forest Landscapes","r":0,"d":[]},{"c":["ENV 688"],"t":"Forest Management and Operations","r":0,"d":[]},{"c":["ENV 694"],"t":"Invasive Species: Ecology and Management","r":0,"d":[]},{"c":["ENV 696"],"t":"Smallholder, Non-Industrial Planted Forests and Trees: For Climate, Biodiversity, and Livelihoods","r":0,"d":[]},{"c":["ENV 712"],"t":"Water Management","r":0,"d":[]},{"c":["ENV 717"],"t":"Tropical Field Ecology","r":0,"d":[]},{"c":["ENV 725"],"t":"Water, Energy, and Food Interconnections in a Changing Climate","r":0,"d":[]},{"c":["ENV 727"],"t":"Global Food Challenges","r":0,"d":[]},{"c":["ENV 731"],"t":"Tropical Field Botany","r":0,"d":[]},{"c":["ENV 742"],"t":"Fundamentals of Working with People","r":0,"d":[]},{"c":["ENV 744"],"t":"Conservation Science and Landscape Planning","r":0,"d":[]},{"c":["ENV 746"],"t":"Conservation Ethics","r":0,"d":[]},{"c":["ENV 751"],"t":"Sampling Methodology and Practice","r":0,"d":[]},{"c":["ENV 755"],"t":"Modeling Geographic Space","r":0,"d":[]},{"c":["ENV 760"],"t":"Conservation in Practice: An International Perspective","r":0,"d":[]},{"c":["ENV 767"],"t":"Tools for Conservation Project Design and Management","r":0,"d":[]},{"c":["ENV 770"],"t":"Western Lands and Communities Field Clinic: Research to Practice","r":0,"d":[]},{"c":["ENV 775"],"t":"Federal Indian Law","r":0,"d":[]},{"c":["ENV 781","S&DS 674"],"t":"Applied Spatial Statistics","r":0,"d":[]},{"c":["ENV 785"],"t":"Material Flow Analysis for the Circular Economy","r":0,"d":[]},{"c":["ENV 795"],"t":"Nature as Capital: Merging Ecological and Economic Models","r":0,"d":[]},{"c":["ENV 796"],"t":"Biopolitics of Human-Nonhuman Relations","r":0,"d":[]},{"c":["ENV 800"],"t":"Energy Economics and Policy Analysis","r":0,"d":[]},{"c":["ENV 805"],"t":"Seminar on Environmental and Natural Resource Economics","r":0,"d":[]},{"c":["ENV 811","MGT 566"],"t":"Metrics, Tools, and Indicators in Corporate Responsibility","r":0,"d":[]},{"c":["ENV 820"],"t":"Land Use Law and Environmental Planning","r":0,"d":[]},{"c":["ENV 824"],"t":"Environmental Law and Policy","r":0,"d":[]},{"c":["ENV 834"],"t":"Environmental Economics and Policy","r":0,"d":[]},{"c":["ENV 835E"],"t":"Seminar on Land Use Planning","r":0,"d":[]},{"c":["ENV 838"],"t":"Life-Cycle Assessment","r":0,"d":[]},{"c":["ENV 839"],"t":"Power in Conservation","r":0,"d":[]},{"c":["ENV 852"],"t":"Food Systems and Environmental Law","r":0,"d":[]},{"c":["ENV 861"],"t":"Sustainable Development Law and Governance","r":0,"d":[]},{"c":["ENV 865","GLBL 7045"],"t":"Law of the Sea","r":0,"d":[]},{"c":["ENV 902"],"t":"Environmental Anthropology Colloquy","r":0,"d":[]},{"c":["ENV 910"],"t":"Survival Skills for Finishing Doctoral Students","r":0,"d":[]},{"c":["ENV 951"],"t":"Strategic Environmental Communication","r":0,"d":[]},{"c":["ENV 953","MGT 687"],"t":"Sustainable Business Capstone Consulting Clinic","r":0,"d":[]},{"c":["ENV 955"],"t":"Seminar in Research Analysis and Communication in Forest Ecology","r":0,"d":[]},{"c":["ENV 956"],"t":"Strategies for Land Conservation","r":0,"d":[]},{"c":["ENV 959","EPH 555"],"t":"Clinic in Climate Justice, Law, and Public Health","r":0,"d":[]},{"c":["ENV 962","MGT 682"],"t":"Tribal Resources and Sovereignty-Clinic","r":0,"d":[]},{"c":["ENV 968"],"t":"Strategy and Grand Strategy in Large Scale Conservation","r":0,"d":[]},{"c":["ENV 971"],"t":"Land Use Clinic","r":0,"d":[]},{"c":["ENV 985"],"t":"Capstone: Neighborhood Planning Workshop","r":0,"d":[]},{"c":["ENV 990"],"t":"Climate, Animals, Food, and Environment Law and Policy Lab","r":0,"d":[]},{"c":["ENV 991"],"t":"Advanced Climate, Animals, Food, and Environment Law and Policy","r":0,"d":[]},{"c":["ENV 999"],"t":"Directed Research-Doctoral","r":1,"d":[]},{"c":["EPH 101"],"t":"Professional Skills Series","r":0,"d":[]},{"c":["EPH 500"],"t":"Public Health Practicum","r":0,"d":[]},{"c":["EPH 501"],"t":"U.S. Health Justice Concentration Practicum","r":0,"d":[]},{"c":["EPH 509"],"t":"Fundamentals of Epidemiology","r":0,"d":[]},{"c":["EPH 513"],"t":"Major Health Threats: Ethics and Practice","r":0,"d":[]},{"c":["EPH 529E"],"t":"Executive Communication Skills for Public Health and Healthcare","r":0,"d":[]},{"c":["EPH 536E"],"t":"Evidence-Based Decision-Making in Public Health","r":0,"d":[]},{"c":["EPH 538E"],"t":"Health Policy and Health Care Systems","r":0,"d":[]},{"c":["EPH 541E"],"t":"Executive Online M.P.H. Capstone","r":0,"d":[]},{"c":["EPH 557"],"t":"Evidence-Based Decision-Making in Global Health","r":0,"d":[]},{"c":["EPH 571"],"t":"Seminar in Climate Change and Health","r":0,"d":[]},{"c":["EPH 581"],"t":"Seminar for Modeling in Public Health","r":0,"d":[]},{"c":["EPH 595"],"t":"Global Health Foundations: Principles and Applications","r":0,"d":[]},{"c":["EPS 540"],"t":"Advanced Topics in Geodynamics","r":1,"d":[]},{"c":["EPS 591"],"t":"Master\u2019s Degree Research in Earth and Planetary Sciences","r":1,"d":[]},{"c":["EPS 620"],"t":"Essentials of Earth and Planetary Sciences","r":1,"d":[]},{"c":["EPS 690"],"t":"Directed Research in Earth and Planetary Sciences","r":1,"d":[]},{"c":["EPS 691"],"t":"Independent Research","r":1,"d":[]},{"c":["EPS 730"],"t":"Current Topics in Continental Lithospheric Evolution","r":1,"d":[]},{"c":["EPS 743"],"t":"The Warming Papers\u2014Graduate Edition","r":1,"d":[]},{"c":["EPS 744"],"t":"Seminar in Mantle and Core Processes","r":1,"d":[]},{"c":["EPS 756"],"t":"Seminar in Earth System Science","r":1,"d":[]},{"c":["EPS 775"],"t":"The Evolution of the Global Silica Cycle","r":1,"d":[]},{"c":["EPS 789"],"t":"Current Topics in Metamorphic Processes","r":1,"d":[]},{"c":["EPS 790"],"t":"Colloquium in Earth and Planetary Sciences","r":0.5,"d":[]},{"c":["ER&M 700"],"t":"Introduction to Ethnicity, Race, and Migration: Theories and Methods","r":1,"d":[]},{"c":["ER&M 725","WGSS 825"],"t":"Decolonizing Europe","r":1,"d":[]},{"c":["EXCH 999"],"t":"Exchange Scholar Experience","r":0,"d":[]},{"c":["FILM 606"],"t":"Film and Media Studies Certificate Workshop","r":0.5,"d":[]},{"c":["FILM 900"],"t":"Directed Reading","r":1,"d":[]},{"c":["FILM 901"],"t":"Individual Research","r":1,"d":[]},{"c":["FILM 995"],"t":"Directed Reading","r":1,"d":[]},{"c":["FREN 690"],"t":"Contemporary French Literature in the Making","r":1,"d":[]},{"c":["FREN 815"],"t":"Medieval Lyric","r":1,"d":[]},{"c":["FREN 861"],"t":"Margins of the Enlightenment","r":1,"d":[]},{"c":["FREN 868"],"t":"Printing Wars","r":1,"d":[]},{"c":["FREN 880"],"t":"Le po\u00e8me en prose","r":1,"d":[]},{"c":["FREN 967"],"t":"Aesthetic cartographies of the Sahara","r":1,"d":[]},{"c":["FREN 970"],"t":"Directed Reading","r":1,"d":[]},{"c":["FREN 971"],"t":"Independent Research","r":1,"d":[]},{"c":["GENE 676"],"t":"Graduate Student Seminar: Critical Analysis and Presentation of Scientific Literature","r":1,"d":[]},{"c":["GENE 734","MB&B 734","MBIO 734"],"t":"Molecular Biology of Animal Viruses","r":1,"d":[]}] \ No newline at end of file diff --git a/results4.txt b/results4.txt new file mode 100644 index 0000000..9805d3b --- /dev/null +++ b/results4.txt @@ -0,0 +1 @@ +[{"c":["GENE 760"],"t":"Genomic Methods for Genetic Analysis","r":1,"d":[]},{"c":["GENE 777","MCDB 677"],"t":"Mechanisms of Development","r":1,"d":[]},{"c":["GLBL 5001"],"t":"Disinformation and the Craft of Ethical Persuasion","r":1,"d":[]},{"c":["GLBL 5002"],"t":"Policy Communicator","r":1,"d":[]},{"c":["GLBL 5030"],"t":"History and Global Affairs","r":1,"d":[]},{"c":["GLBL 5050"],"t":"Introduction to Python for Global Affairs","r":1,"d":[]},{"c":["GLBL 6140"],"t":"Education Economics and Policy","r":1,"d":[]},{"c":["GLBL 6150"],"t":"Contemporary Development Issues in Latin America and the Caribbean","r":1,"d":[]},{"c":["GLBL 6175"],"t":"Contemporary China-US Research Seminar","r":1,"d":[]},{"c":["GLBL 6210"],"t":"Arab Spring, Arab Winter, and U.S. Policy in the Middle East and North Africa","r":1,"d":[]},{"c":["GLBL 6295"],"t":"Conflict and Security in South Asia","r":1,"d":[]},{"c":["GLBL 6300"],"t":"Sustainability Transitions: Principles and Practice in India","r":1,"d":[]},{"c":["GLBL 6530","MGT 526"],"t":"Market Failures and Economic Policy in Developing Countries","r":1,"d":[]},{"c":["GLBL 6540"],"t":"Current Issues in International Economics","r":1,"d":[]},{"c":["GLBL 6581","MGT 945"],"t":"Macroprudential Policy II","r":1,"d":[]},{"c":["GLBL 6600"],"t":"Development Economics","r":1,"d":[]},{"c":["GLBL 6611"],"t":"Artificial Intelligence, Emerging Technologies, and National Power II","r":1,"d":[]},{"c":["GLBL 7075"],"t":"National Security Law","r":1,"d":[]},{"c":["GLBL 7220"],"t":"Rethinking Special Operations","r":1,"d":[]},{"c":["GLBL 7240"],"t":"Great Power Competition and Cooperation","r":1,"d":[]},{"c":["GLBL 7270"],"t":"Development in Action","r":1,"d":[]},{"c":["GLBL 7280"],"t":"Leadership","r":1,"d":[]},{"c":["GLBL 7300"],"t":"AI Policy: A Comparative View","r":1,"d":[]},{"c":["GLBL 7510"],"t":"American Power in the Twenty-First Century: Lessons in Diplomacy","r":1,"d":[]},{"c":["GLBL 7545"],"t":"Introduction to International and Transnational Law","r":1,"d":[]},{"c":["GLBL 7560"],"t":"Democracy and Distribution","r":1,"d":[]},{"c":["GLBL 8000"],"t":"Dir Reading with Sr Fellow: Brazil's Prison System","r":1,"d":[]},{"c":["GLBL 9800"],"t":"Directed Reading","r":1,"d":[]},{"c":["GLBL 9991"],"t":"Global Affairs Thesis","r":1,"d":[]},{"c":["GMAN 488"],"t":"Directed Readings","r":0,"d":[]},{"c":["MGT 674"],"t":"Leading Small and Medium Enterprises","r":0,"d":[]},{"c":["GMAN 501"],"t":"Methods of Teaching German as a World Language","r":1,"d":[]},{"c":["GMAN 597"],"t":"I and Thou: Dialogue and Miscommunication in Theory and Literature","r":1,"d":[]},{"c":["GMAN 900"],"t":"Directed Reading","r":1,"d":[]},{"c":["HIST 535","MDVL 585"],"t":"Problems in Church History, 800\u20131500","r":1,"d":[]},{"c":["HIST 568","NELC 619","RLST 608"],"t":"Approaches to the Study of Christianity in Late Antiquity","r":1,"d":[]},{"c":["HIST 641"],"t":"British and Iberian Atlantic","r":1,"d":[]},{"c":["HIST 663"],"t":"Europe and Difference","r":1,"d":[]},{"c":["HIST 680"],"t":"Russian History to 1725","r":1,"d":[]},{"c":["HIST 687"],"t":"Russia, the USSR, and the World, 1855\u20131945","r":1,"d":[]},{"c":["HIST 753"],"t":"Advanced Research in Federal Indian Law","r":1,"d":[]},{"c":["HIST 759"],"t":"Foundations of American Legal Thought","r":1,"d":[]},{"c":["HIST 766"],"t":"Research in Latinx History","r":1,"d":[]},{"c":["HIST 779"],"t":"Global Economies: Readings in Economic History","r":1,"d":[]},{"c":["HIST 793"],"t":"Research in Modern International/Global History","r":1,"d":[]},{"c":["HIST 826"],"t":"Latin America and the World","r":1,"d":[]},{"c":["HIST 851"],"t":"Middle East Field Studies","r":1,"d":[]},{"c":["HIST 881"],"t":"China\u2019s Age of Discovery","r":1,"d":[]},{"c":["HIST 913","HSHM 713"],"t":"Geography and History","r":1,"d":[]},{"c":["HIST 921","HSHM 710"],"t":"Problems in Science Studies","r":1,"d":[]},{"c":["HIST 948","HSHM 780"],"t":"History beyond the Archive","r":1,"d":[]},{"c":["HIST 994"],"t":"Oral Exam Tutorial: African History","r":1,"d":[]},{"c":["HIST 995"],"t":"Prospectus Tutorial","r":1,"d":[]},{"c":["HIST 998"],"t":"Directed Reading: Colonial Latin America","r":1,"d":[]},{"c":["HIST 999"],"t":"Directed Research","r":1,"d":[]},{"c":["HNDI 520"],"t":"Elementary Hindi II","r":1,"d":[]},{"c":["HNDI 540"],"t":"Intermediate Hindi II","r":1,"d":[]},{"c":["HNDI 542"],"t":"Accelerated Hindi II","r":1,"d":[]},{"c":["HNDI 598"],"t":"Advanced Tutorial","r":1,"d":[]},{"c":["HPM 500"],"t":"Independent Study in Health Policy and Management","r":0,"d":[]},{"c":["HPM 542"],"t":"Health of Women and Children","r":0,"d":[]},{"c":["HPM 555"],"t":"Health Policy or Health Care Management Practicum","r":0,"d":[]},{"c":["HPM 559"],"t":"Big Data, Privacy, and Public Health Ethics","r":0,"d":[]},{"c":["HPM 560"],"t":"Health Economics and U.S. Health Policy","r":0,"d":[]},{"c":["HPM 564"],"t":"Vaccination Policy and Politics","r":0,"d":[]},{"c":["HPM 573","MGT 681"],"t":"Advanced Topics in Modeling Health Care Decisions","r":0,"d":[]},{"c":["HPM 575"],"t":"Evaluation of Global Health Policies and Programs","r":0,"d":[]},{"c":["HPM 576"],"t":"Comparative Health Care Systems","r":0,"d":[]},{"c":["HPM 583"],"t":"Methods in Health Services Research","r":0,"d":[]},{"c":["HPM 592"],"t":"Mental Health Care Policy in the US","r":0,"d":[]},{"c":["HPM 595"],"t":"Food and Drug Administration Law","r":0,"d":[]},{"c":["HPM 597"],"t":"Capstone Course in Health Policy","r":0,"d":[]},{"c":["HPM 600"],"t":"Independent Study or Directed Readings","r":0,"d":[]},{"c":["HPM 610"],"t":"Applied Area Readings","r":0,"d":[]},{"c":["HPM 618"],"t":"Colloquium in Health Services Research","r":0,"d":[]},{"c":["HPM 620"],"t":"Readings in Health Services Research","r":0,"d":[]},{"c":["HPM 630"],"t":"Advanced Readings in Health Services Research","r":0,"d":[]},{"c":["HPM 688"],"t":"Managing Health Care in Complex Systems","r":0,"d":[]},{"c":["HSAR 512"],"t":"Directed Research","r":1,"d":[]},{"c":["HSAR 605","RUSS 603"],"t":"Russian Realist Literature and Painting","r":1,"d":[]},{"c":["HSAR 631"],"t":"Art Writing after the \"Great Resignation\"","r":1,"d":[]},{"c":["MGT 675"],"t":"Designing Brand Strategy","r":0,"d":[]},{"c":["HSAR 843"],"t":"Evoking Ancestral Memory: Reinterpreting Native American and Indigenous Collections","r":1,"d":[]},{"c":["HSHM 790"],"t":"HSHM Program Seminar","r":0.5,"d":[]},{"c":["HSHM 920"],"t":"Independent Reading","r":1,"d":[]},{"c":["HSHM 930"],"t":"Independent Research","r":1,"d":[]},{"c":["HUMS 500"],"t":"Seminar in Digital and Computational Methods in the Humanities","r":0,"d":[]},{"c":["IBIO 531"],"t":"Advanced Immunology","r":1,"d":[]},{"c":["IBIO 538"],"t":"Immunobiology Seminar: Advances in Immunotherapy: from Cancer to Transplantation","r":1,"d":[]},{"c":["IBIO 613"],"t":"Research Rotation 3","r":1,"d":[]},{"c":["IMED 635"],"t":"Directed Reading in Investigative Medicine","r":1,"d":[]},{"c":["IMED 655"],"t":"Writing Your K- or R-Type Grant Proposal (I)","r":1,"d":[]},{"c":["IMED 662"],"t":"Methods in Clinical Research, Part III","r":1,"d":[]},{"c":["IMED 670"],"t":"Writing Your K- or R-Type Grant Proposal (II)","r":1,"d":[]},{"c":["INDN 570"],"t":"Readings in Indonesian","r":1,"d":[]},{"c":["INP 507"],"t":"Cellular and Molecular Mechanisms of Neurological Disease","r":1,"d":[]},{"c":["INP 512"],"t":"Lab Rotation for First-Year Students","r":1,"d":[]},{"c":["INP 514"],"t":"Second-Year Thesis Research","r":1,"d":[]},{"c":["INP 521"],"t":"Neuroimaging in Neuropsychiatry II: Clinical Applications","r":1,"d":[]},{"c":["INP 542"],"t":"Developing and Writing Fellowship Proposals","r":1,"d":[]},{"c":["INP 554"],"t":"Human Molecular Diversity in the Context of Neuropsychiatric Disorders and Behavioral Traits","r":1,"d":[]},{"c":["INP 558","PSYC 558"],"t":"Computational Methods in Human Neuroscience","r":1,"d":[]},{"c":["INP 580"],"t":"Bioethics in Neuroscience","r":1,"d":[]},{"c":["INP 599"],"t":"Statistics and Data Analysis in Neuroscience","r":1,"d":[]},{"c":["INP 703"],"t":"Foundations of Systems Neuroscience","r":1,"d":[]},{"c":["ITAL 570"],"t":"Methods and Techniques in the Italian-Language Classroom","r":1,"d":[]},{"c":["ITAL 691"],"t":"Directed Reading: Italy and South America","r":1,"d":[]},{"c":["ITAL 721"],"t":"Talking Animals","r":1,"d":[]},{"c":["ITAL 895","REL 925"],"t":"Dante and the Revolution of Poverty","r":1,"d":[]},{"c":["JDST 672","SMTC 535"],"t":"Readings in Babylonian Aramaic Texts","r":1,"d":[]},{"c":["LAST 917","REL 917"],"t":"Political Song and the Catholic Church in Latin America","r":1,"d":[]},{"c":["LAW 21272"],"t":"Living Civil Rights Law","r":0,"d":[]},{"c":["LING 519"],"t":"Perspectives on Grammar","r":0.5,"d":[]},{"c":["LING 810"],"t":"Directed Research in Linguistics","r":1,"d":[]},{"c":["MATH 536"],"t":"Combinatorics","r":1,"d":[]},{"c":["MATH 610"],"t":"Introduction to Arithmetic Geometry","r":1,"d":[]},{"c":["MATH 614"],"t":"Complex Algebraic Geometry","r":1,"d":[]},{"c":["MATH 748"],"t":"Infinite Ergodic Theory","r":1,"d":[]},{"c":["MATH 749"],"t":"Geometric Representation Theory","r":1,"d":[]},{"c":["MATH 750"],"t":"Topics in Group Actions and Ergodic Theory","r":1,"d":[]},{"c":["MATH 751"],"t":"Foliations and Flows in 3-Manifolds","r":1,"d":[]},{"c":["MATH 752"],"t":"Topics in Sparse Analysis","r":1,"d":[]},{"c":["MATH 827"],"t":"Lang Teaching Seminar","r":1,"d":[]},{"c":["MB&B 529","PHAR 529"],"t":"Structural Biology and Drug Discovery","r":1,"d":[]},{"c":["MB&B 630","MCDB 630"],"t":"Biochemical and Biophysical Approaches in Molecular and Cellular Biology","r":1,"d":[]},{"c":["MB&B 651"],"t":"Lab Rotation for BQBS First-Year Students","r":1,"d":[]},{"c":["MB&B 676"],"t":"Responsible Conduct of Research","r":1,"d":[]},{"c":["MBIO 671"],"t":"Laboratory Rotations","r":1,"d":[]},{"c":["MBIO 672"],"t":"Laboratory Rotations","r":1,"d":[]},{"c":["MBIO 674"],"t":"Laboratory Rotations","r":1,"d":[]},{"c":["MBIO 685"],"t":"The Biology of Bacterial Pathogens II","r":1,"d":[]},{"c":["MBIO 700"],"t":"Seminal Papers on the Foundations of Modern Microbiology","r":0,"d":[]},{"c":["MBIO 702"],"t":"Research in Progress","r":1,"d":[]},{"c":["MBIO 704"],"t":"Microbiology Seminar Series","r":1,"d":[]},{"c":["MCDB 504"],"t":"Responsible Conduct of Research","r":1,"d":[]},{"c":["MCDB 585"],"t":"Research in MCDB for B.S./M.S. Candidates","r":2,"d":[]},{"c":["MCDB 595"],"t":"Intensive Research in MCDB for B.S./M.S. Candidates","r":2,"d":[]},{"c":["MCDB 596"],"t":"Intensive Research in MCDB for B.S./M.S. Candidates","r":2,"d":[]},{"c":["MCDB 903"],"t":"Advanced Graduate Seminar","r":1,"d":[]},{"c":["MCDB 951"],"t":"Second-Year Research","r":1,"d":[]},{"c":["MD 657"],"t":"CreatngHlthcareLifeSciVentures","r":0,"d":[]},{"c":["MDVL 560"],"t":"Master's Project","r":1,"d":[]},{"c":["MDVL 664","REL 713"],"t":"History of Medieval Christianity: Learning, Faith, and Conflict","r":1,"d":[]},{"c":["MDVL 677","REL 777"],"t":"Preaching in the Middle Ages: Authority, Virtue, and Persuasion","r":1,"d":[]},{"c":["MEDC 999"],"t":"Courses in School of Medicine","r":0,"d":[]},{"c":["MEDR 999"],"t":"Clinical Clerkships","r":0,"d":[]},{"c":["MESO 531"],"t":"Beginning Sumerian II","r":1,"d":[]},{"c":["MESO 559"],"t":"Directed Readings in Assyriology","r":1,"d":[]},{"c":["MGMT 701"],"t":"Seminar in Accounting Research II","r":1,"d":[]},{"c":["MGMT 736"],"t":"Organizations and Management I: Inside Organizations","r":1,"d":[]},{"c":["MGMT 737"],"t":"Applied Empirical Methods","r":1,"d":[]},{"c":["MGMT 741"],"t":"Financial Economics of Climate and Sustainability","r":0.5,"d":[]},{"c":["MGMT 743"],"t":"Continuous Time Finance","r":1,"d":[]},{"c":["MGMT 752"],"t":"Marketing Workshop","r":1,"d":[]},{"c":["MGMT 758"],"t":"Foundations of Behavioral Economics","r":1,"d":[]},{"c":["MGMT 759"],"t":"Moral Consumer Decision Making","r":0.5,"d":[]},{"c":["MGMT 781"],"t":"PhD Seminar: PhD Seminar: Accounting","r":1,"d":[]},{"c":["MGMT 782"],"t":"PhD PreSeminar: PhD PreSeminar: Accounting","r":1,"d":[]},{"c":["MGMT 791"],"t":"Independent Reading and Research","r":1,"d":[]},{"c":["MGT 510"],"t":"Data Analysis and Causal Inference","r":0,"d":[]},{"c":["MGT 523"],"t":"Monetary Policy","r":0,"d":[]},{"c":["MGT 525"],"t":"Competitive Strategy","r":0,"d":[]},{"c":["MGT 528"],"t":"The Firm in the Social World","r":0,"d":[]},{"c":["MGT 529"],"t":"GlblSocialEntrprneurship:India","r":0,"d":[]},{"c":["MGT 531"],"t":"Interpersonal Dynamics","r":0,"d":[]},{"c":["MGT 532"],"t":"Business Ethics","r":0,"d":[]},{"c":["MGT 537"],"t":"Inequality & Social Mobility","r":0,"d":[]},{"c":["MGT 541"],"t":"Corporate Finance","r":0,"d":[]},{"c":["MGT 544"],"t":"Investment Management","r":0,"d":[]},{"c":["MGT 548"],"t":"Real Estate Finance","r":0,"d":[]},{"c":["MGT 553"],"t":"Strategic Communication: Delivering Effective Presentations\n","r":0,"d":[]},{"c":["MGT 555"],"t":"Pricing Strategy","r":0,"d":[]},{"c":["MGT 556"],"t":"Big Data & Customer Analytics","r":0,"d":[]},{"c":["MGT 561"],"t":"Product Management","r":0,"d":[]},{"c":["MGT 575"],"t":"Social Media Analytics","r":0,"d":[]},{"c":["MGT 581"],"t":"Education Policy","r":0,"d":[]},{"c":["MGT 621"],"t":"Managing Social Enterprises","r":0,"d":[]},{"c":["MGT 623"],"t":"Strategic Leadership Across Sectors","r":0,"d":[]},{"c":["MGT 624"],"t":"Human Capital Strategy","r":0,"d":[]},{"c":["MGT 626","MUS 673"],"t":"LeaderStrategies/MusPresenters","r":0,"d":[]},{"c":["MGT 636"],"t":"Global Leadership: Increasing Personal and Interpersonal Effectiveness","r":0,"d":[]},{"c":["MGT 641"],"t":"Behavioral Finance","r":0,"d":[]},{"c":["MGT 646"],"t":"Start-up Founder Practicum","r":0,"d":[]},{"c":["MGT 650"],"t":"CustomerInsights&Applications","r":0,"d":[]},{"c":["MGT 657"],"t":"Creating Healthcare and Life Science Ventures","r":0,"d":[]},{"c":["MGT 668"],"t":"Narratives in Health Media on the Social Internet","r":0,"d":[]},{"c":["MGT 671"],"t":"Entrepreneurship through Acquisition","r":0,"d":[]},{"c":["MGT 698"],"t":"Healthcare Policy, Finance, and Economics","r":0,"d":[]},{"c":["MGT 699"],"t":"ColloquiumHealthcareLeadership","r":0,"d":[]},{"c":["MGT 806"],"t":"PrivateEquity:Value Creation","r":0,"d":[]},{"c":["MGT 809"],"t":"Advanced Business Analytics with Spreadsheets","r":0,"d":[]},{"c":["MGT 811"],"t":"Taxes, Business & Strategy","r":0,"d":[]},{"c":["MGT 812"],"t":"Financial Statement Analysis","r":0,"d":[]},{"c":["MGT 819"],"t":"Big Data","r":0,"d":[]},{"c":["MGT 822"],"t":"Game Theory and Market Design","r":0,"d":[]},{"c":["MGT 823"],"t":"Insurance and Finance for the Poor","r":0,"d":[]},{"c":["MGT 826"],"t":"Inclusive Economic Development Lab: Opportunity Zones in New Haven","r":0,"d":[]},{"c":["MGT 828"],"t":"Creativity & Innovation","r":0,"d":[]},{"c":["MGT 829"],"t":"MacroeconImplicatnsofGlblztion","r":0,"d":[]},{"c":["MGT 830"],"t":"Leading and Managing Organizations","r":0,"d":[]},{"c":["MGT 832"],"t":"Leadership Lab","r":0,"d":[]},{"c":["MGT 833"],"t":"Power and Politics","r":0,"d":[]},{"c":["MGT 836"],"t":"The Global Macroeconomy","r":0,"d":[]},{"c":["MGT 839"],"t":"Program Evaluation","r":0,"d":[]},{"c":["MGT 842"],"t":"Financing Green Technologies","r":0,"d":[]},{"c":["MGT 843"],"t":"The Digitalization of Money","r":0,"d":[]},{"c":["MGT 845"],"t":"PortfolioManagementinPractice","r":0,"d":[]},{"c":["MGT 846"],"t":"Introduction to Private Equity","r":0,"d":[]},{"c":["MGT 848"],"t":"A History of Financial Market Fraud: A Forensic Approach","r":0,"d":[]},{"c":["MGT 854"],"t":"Behavioral Economics: The Psychology and Behavior of Individuals, Organizations, and Markets","r":0,"d":[]},{"c":["MGT 855"],"t":"How to Design and Run Business Experiments","r":0,"d":[]},{"c":["MGT 856"],"t":"Managing Marketing Programs","r":0,"d":[]},{"c":["MGT 858"],"t":"Database Systems","r":0,"d":[]},{"c":["MGT 861"],"t":"Race&MoneyinAmerica","r":0,"d":[]},{"c":["MGT 863"],"t":"PoliticalEthics&IssuesforOrgs","r":0,"d":[]},{"c":["MGT 864"],"t":"BehavioralScience&SocialGood","r":0,"d":[]},{"c":["MGT 865"],"t":"Global Social Entrepreneurship","r":0,"d":[]},{"c":["MGT 866"],"t":"Build a Metaverse Strategy","r":0,"d":[]},{"c":["MGT 868"],"t":"Education in the Economy","r":0,"d":[]},{"c":["MGT 871"],"t":"Financial Reporting","r":0,"d":[]},{"c":["MGT 872"],"t":"Managing Sustainable Operations","r":0,"d":[]},{"c":["MGT 873"],"t":"Supply Chain Management","r":0,"d":[]},{"c":["MGT 875"],"t":"Service Management","r":0,"d":[]},{"c":["MGT 879"],"t":"Healthcare Operations","r":0,"d":[]},{"c":["MGT 880"],"t":"BrandStrat&CommunicatinAfrica","r":0,"d":[]},{"c":["MGT 887"],"t":"Negotiations","r":0,"d":[]},{"c":["MGT 891"],"t":"Private Capital and Impact Investing","r":0,"d":[]},{"c":["MGT 892"],"t":"Introduction to Financial Crisis Communications","r":0,"d":[]},{"c":["MGT 893"],"t":"Nonmarket Strategy","r":0,"d":[]},{"c":["MGT 896"],"t":"America\u2019s Future Role in the Global Economy","r":0,"d":[]},{"c":["MGT 897"],"t":"Entrepreneurial Finance","r":0,"d":[]},{"c":["MGT 898"],"t":"FinancialCrisis:PolicyResponse","r":0,"d":[]},{"c":["MGT 913"],"t":"EntVenturesinConsumerProducts","r":0,"d":[]},{"c":["MGT 920"],"t":"GNAM: Natural Capital","r":0,"d":[]},{"c":["MGT 921"],"t":"Asset Management Colloquium","r":0,"d":[]},{"c":["MGT 926"],"t":"AM in RegulatoryEnvironment","r":0,"d":[]},{"c":["MGT 928"],"t":"AssetMgt Practical Expriecence","r":0,"d":[]},{"c":["MGT 929"],"t":"ESG Investing","r":0,"d":[]},{"c":["MGT 936"],"t":"Fixed Income Strategies","r":0,"d":[]},{"c":["MGT 937"],"t":"Hedge Fund Strategies","r":0,"d":[]},{"c":["MGT 938"],"t":"Macroeconomic Strategies","r":0,"d":[]},{"c":["MGT 939"],"t":"Risky Credit","r":0,"d":[]},{"c":["MGT 943"],"t":"Financial Stability Regulation","r":0,"d":[]},{"c":["MGT 949"],"t":"Systemic-Risk Colloquium","r":0,"d":[]},{"c":["MGT 995"],"t":"Sustainable Innovation in Healthcare","r":0,"d":[]},{"c":["MGT 997"],"t":"VentureCapital&PrivateEquity","r":0,"d":[]},{"c":["MHHR 701"],"t":"Theory and Praxis of Material Histories","r":0.5,"d":[]},{"c":["MRES 999"],"t":"Master's Thesis Research","r":0,"d":[]},{"c":["MUS 502"],"t":"Analysis and Musicianship II","r":0,"d":[]},{"c":["MUS 505"],"t":"Orchestration through Contemporary Score Study","r":0,"d":[]},{"c":["MUS 506"],"t":"LyricDiction/Singers: LyricDiction/Singers-ITALIAN","r":0,"d":[]},{"c":["MUS 507","MUS 607"],"t":"Vocal Repertoire for Singers","r":0,"d":[]},{"c":["MUS 508","MUS 608"],"t":"Opera Workshop","r":0,"d":[]},{"c":["MUS 509"],"t":"Art Song Coaching for Singers","r":0,"d":[]},{"c":["MUS 511"],"t":"Music before 1750","r":0,"d":[]},{"c":["MUS 512"],"t":"Music from 1750 to 1900","r":0,"d":[]},{"c":["MUS 513"],"t":"Music since 1900","r":0,"d":[]},{"c":["MUS 515","MUS 615","MUS 715","MUS 815"],"t":"Improvisation at the Organ I","r":0,"d":[]},{"c":["MUS 519","MUS 619","MUS 719","REL 3910"],"t":"ISM Colloquium","r":0,"d":[]},{"c":["MUS 531","MUS 631","MUS 731"],"t":"Repertory Chorus\u2014Voice","r":0,"d":[]},{"c":["MUS 532","MUS 632"],"t":"Repertory Chorus\u2014Conducting","r":0,"d":[]},{"c":["MUS 533","MUS 633","MUS 733"],"t":"Seminar in Piano Literature and Interpretation","r":0,"d":[]},{"c":["MUS 534"],"t":"Collaborative Piano\u2014Instrumental","r":0,"d":[]},{"c":["MUS 535","MUS 635","MUS 735"],"t":"Recital Chorus\u2014Voice","r":0,"d":[]},{"c":["MUS 536","MUS 636","MUS 736"],"t":"Recital Chorus\u2014Conducting","r":0,"d":[]},{"c":["MUS 537"],"t":"Collaborative Piano\u2014Voice","r":0,"d":[]},{"c":["MUS 538","MUS 638","MUS 738"],"t":"Cello Ensemble","r":0,"d":[]},{"c":["MUS 540","MUS 640","MUS 740"],"t":"Indiv Instrctn--: Indiv Instrctn--BASS","r":0,"d":[]},{"c":["MUS 541"],"t":"Secndry Instrmnt--: Secndry Instrmnt--BASS","r":0,"d":[]},{"c":["MUS 542","MUS 642","MUS 742","MUS 842"],"t":"The Yale Philharmonia and New Music New Haven","r":0,"d":[]},{"c":["MUS 543","MUS 643","MUS 743","MUS 843"],"t":"Chamber Music","r":0,"d":[]},{"c":["MUS 544","MUS 644","MUS 744"],"t":"Seminar, Major--: Seminar, Major--BASS","r":0,"d":[]},{"c":["MUS 546","MUS 646"],"t":"Yale Camerata","r":0,"d":[]},{"c":["MUS 551"],"t":"Studio Techniques and Contemporary Popular Music","r":0,"d":[]},{"c":["MUS 555"],"t":"Composition for Performers","r":0,"d":[]},{"c":["MUS 571"],"t":"Yale Schola Cantorum","r":0,"d":[]},{"c":["MUS 574"],"t":"Bruckner: The Music of Anton Bruckner","r":0,"d":[]},{"c":["MUS 590"],"t":"Analyzing Contemporary Chamber Music for Winds & Brass","r":0,"d":[]},{"c":["MUS 594"],"t":"Vocal Chamber Music","r":0,"d":[]},{"c":["MUS 595","MUS 695"],"t":"Performance Practice for Singers","r":0,"d":[]},{"c":["MUS 606"],"t":"LyricDiction/Singers: LyricDiction/Singers-FRENCH","r":0,"d":[]},{"c":["MUS 609"],"t":"Art Song Coaching for Singers","r":0,"d":[]},{"c":["MUS 612"],"t":"The Music of Igor Stravinsky","r":0,"d":[]},{"c":["MUS 618"],"t":"Intimacy, Love, and Devotion in Seventeenth-Century Music","r":0,"d":[]},{"c":["MUS 622"],"t":"Acting for Singers: Acting for Singers-ISM","r":0,"d":[]},{"c":["MUS 623"],"t":"Early Music Coaching for Singers","r":0,"d":[]},{"c":["MUS 626"],"t":"Performance Practice before 1750","r":0,"d":[]},{"c":["MUS 641"],"t":"Secndry Instrmnt--: Secndry Instrmnt--BASS","r":0,"d":[]},{"c":["MUS 648"],"t":"Approaches to Fin-de-si\u00e8cle Song","r":0,"d":[]},{"c":["MUS 654"],"t":"Radical Piano Miniatures","r":0,"d":[]},{"c":["MUS 669"],"t":"The Literary Voice of Langston Hughes in American Music","r":0,"d":[]},{"c":["MUS 671"],"t":"Yale Schola Cantorum","r":0,"d":[]},{"c":["MUS 674"],"t":"Analysis of Western Music (1199\u20131939) from the Composer\u2019s Perspective","r":0,"d":[]},{"c":["MUS 678"],"t":"Advanced Continuo Realization and Performance","r":0,"d":[]},{"c":["MUS 710"],"t":"Score Reading and Analysis II","r":0,"d":[]},{"c":["MUS 732"],"t":"Repertory Chorus\u2014Conducting","r":0,"d":[]},{"c":["MUS 741"],"t":"Secndry Instrmnt--: Secndry Instrmnt--BASS","r":0,"d":[]},{"c":["MUS 746"],"t":"Yale Camerata","r":0,"d":[]},{"c":["MUS 840"],"t":"Indiv Instrctn: Indiv Instrctn--PIANO","r":0,"d":[]},{"c":["MUS 844"],"t":"Seminar, Major: Seminar, Major--VIOLIN","r":0,"d":[]},{"c":["MUS 852"],"t":"D.M.A. Seminar I","r":0,"d":[]},{"c":["MUS 854"],"t":"D.M.A. Colloquium","r":0,"d":[]},{"c":["MUSI 695"],"t":"The Study of African American Music","r":1,"d":[]},{"c":["MUSI 697"],"t":"Proseminar: Ethnomusicology","r":1,"d":[]},{"c":["MUSI 713"],"t":"Topics in Music, Gender, and Sexuality","r":1,"d":[]},{"c":["MUSI 812"],"t":"Directed Studies: Ethnomusicology","r":1,"d":[]},{"c":["MUSI 814"],"t":"Directed Studies: History of Music","r":1,"d":[]},{"c":["MUSI 914"],"t":"Directed Studies: Theory of Music","r":1,"d":[]},{"c":["MUSI 999"],"t":"Dissertation Colloquium","r":1,"d":[]},{"c":["NELC 547"],"t":"Survey of Mesopotamian and Akkadian Literature","r":1,"d":[]},{"c":["NELC 607"],"t":"Mesopotamian History: First Millennium","r":1,"d":[]},{"c":["NELC 950"],"t":"Independent Study in Near Eastern Languages and Civilizations","r":1,"d":[]},{"c":["NURS 5021"],"t":"Nursing Colloquia II","r":0,"d":[]},{"c":["NURS 5031"],"t":"Biomedical Foundations: Health and Illness II","r":0,"d":[]},{"c":["NURS 5051"],"t":"Essentials of Health Assessment and Clinical Skills II","r":0,"d":[]},{"c":["NURS 5080"],"t":"Nursing and the Community I","r":0,"d":[]},{"c":["NURS 5081"],"t":"Nursing and the Community II","r":0,"d":[]},{"c":["NURS 5130"],"t":"Community Health Nursing and Public Health","r":0,"d":[]},{"c":["NURS 5140"],"t":"Clinical Practice Care of Childbearing Families","r":0,"d":[]},{"c":["NURS 5150"],"t":"Care of Childbearing Families","r":0,"d":[]},{"c":["NURS 5171"],"t":"Nursing Care of Adult Patient II","r":0,"d":[]},{"c":["NURS 5180"],"t":"Clinical Practice in Pediatric Nursing","r":0,"d":[]},{"c":["NURS 5190"],"t":"Pediatric Nursing","r":0,"d":[]},{"c":["NURS 5200"],"t":"Clinical Practice in Psychiatric\u2013Mental Health Nursing","r":0,"d":[]},{"c":["NURS 5210"],"t":"Psychiatric\u2013Mental Health Nursing","r":0,"d":[]},{"c":["NURS 6020"],"t":"Advanced Pharmacology","r":0,"d":[]},{"c":["NURS 6040"],"t":"Statistics and Research for Evidence-Based Practice Nursing","r":0,"d":[]},{"c":["NURS 6070"],"t":"Mental Health Management for Advanced Practice Nurses","r":0,"d":[]},{"c":["NURS 6111"],"t":"Clinical Practice in Diabetes Care and Management","r":0,"d":[]},{"c":["NURS 6120"],"t":"Principles of Advanced Oncology Practice","r":0,"d":[]},{"c":["NURS 6131"],"t":"Advanced Management of Clinical Problems in Oncology","r":0,"d":[]},{"c":["NURS 6141"],"t":"Clinical Practicum for Oncology Nurse Practitioners","r":0,"d":[]},{"c":["NURS 6160"],"t":"Research Seminar II","r":0,"d":[]},{"c":["NURS 6180"],"t":"Introduction to Health Disparities in LGBTQI+ People","r":0,"d":[]},{"c":["NURS 6202"],"t":"Gender and Sexuality Health Justice (GSHJ) Clinical","r":0,"d":[]},{"c":["NURS 6211"],"t":"Advanced Primary Care and Community Health","r":0,"d":[]},{"c":["NURS 6230"],"t":"Clinical Practice I for Global Health Track","r":0,"d":[]},{"c":["NURS 7000"],"t":"Advanced Skills and Procedures for the Primary Care Provider","r":0,"d":[]},{"c":["NURS 7040"],"t":"Primary Care II","r":0,"d":[]},{"c":["NURS 7045"],"t":"Primary Care II Clinical Practice AGPCNP","r":0,"d":[]},{"c":["NURS 7050"],"t":"Primary Care II Clinical Practice FNP","r":0,"d":[]},{"c":["NURS 7090"],"t":"Primary Care IV Clinical Practice","r":0,"d":[]},{"c":["NURS 7104"],"t":"Advanced Primary Care of the Older Adult","r":0,"d":[]},{"c":["NURS 7110"],"t":"Advanced FNP/AGPCNP Pharmacology","r":0,"d":[]},{"c":["NURS 7220"],"t":"Women\u2019s Health I and II Advanced Health Assessment and Clinical Practice","r":0,"d":[]},{"c":["NURS 7230"],"t":"Women\u2019s Health III","r":0,"d":[]},{"c":["NURS 7240"],"t":"Women\u2019s Health IV","r":0,"d":[]},{"c":["NURS 7250"],"t":"Women\u2019s Health III and IV Clinical Practice","r":0,"d":[]},{"c":["NURS 7260"],"t":"Childbearing Care II","r":0,"d":[]},{"c":["NURS 7270"],"t":"Childbearing Care II Clinical Practice","r":0,"d":[]},{"c":["NURS 7312"],"t":"Global Midwifery: Uganda","r":0,"d":[]},{"c":["NURS 7314"],"t":"Global Midwifery Clinical: Uganda","r":0,"d":[]},{"c":["NURS 7320"],"t":"Integration of Midwifery Care","r":0,"d":[]},{"c":["NURS 7330"],"t":"Integration of Women\u2019s Health Care","r":0,"d":[]},{"c":["NURS 7335"],"t":"Women\u2019s Health Primary Care Clinical","r":0,"d":[]},{"c":["NURS 7340"],"t":"Midwifery and Women\u2019s Health Pharmacology","r":0,"d":[]},{"c":["NURS 7430"],"t":"Primary Care of Children I Clinical Practice","r":0,"d":[]},{"c":["NURS 7450"],"t":"Primary Care of Adolescents Clinical Practice","r":0,"d":[]},{"c":["NURS 7460"],"t":"Primary Care of Children II","r":0,"d":[]},{"c":["NURS 7470"],"t":"Primary Care of Children II Clinical Practice","r":0,"d":[]},{"c":["NURS 7500"],"t":"Primary Care of Children IV","r":0,"d":[]},{"c":["NURS 7510"],"t":"Primary Care of Children IV Clinical Practice","r":0,"d":[]},{"c":["NURS 7520"],"t":"Chronic Health Conditions in Children and Adolescents","r":0,"d":[]},{"c":["NURS 7530"],"t":"School Health Clinical Practice","r":0,"d":[]},{"c":["NURS 7541"],"t":"Specialty Pediatric Primary Care Clinical Practice II","r":0,"d":[]},{"c":["NURS 7550"],"t":"Advanced Pediatric Pharmacology","r":0,"d":[]},{"c":["NURS 7560"],"t":"Specialty Pediatric Acute Care Clinical","r":0,"d":[]},{"c":["NURS 7620"],"t":"Psychopathology across the Lifespan II","r":0,"d":[]},{"c":["NURS 7631"],"t":"Psychiatric\u2013Mental Health Clinical Practice across the Lifespan II","r":0,"d":[]},{"c":["NURS 7660"],"t":"Individual Psychotherapy II","r":0,"d":[]},{"c":["NURS 7670"],"t":"Clinical Psychopharmacology across the Lifespan","r":0,"d":[]},{"c":["NURS 7690"],"t":"Group Psychotherapy","r":0,"d":[]},{"c":["NURS 7710"],"t":"Psychiatric\u2013Mental Health Clinical Practice across the Lifespan IV","r":0,"d":[]},{"c":["NURS 7720"],"t":"Applied Psychopharmacology across the Lifespan","r":0,"d":[]},{"c":["NURS 7830"],"t":"Pathophysiology and Management of Adult/Gerontology Acute Care Health Problems I","r":0,"d":[]},{"c":["NURS 7840"],"t":"Adult/Gerontology Acute Care Clinical Practice I","r":0,"d":[]},{"c":["NURS 7870"],"t":"Adult/Gerontology Acute Care Clinical Practice III","r":0,"d":[]},{"c":["NURS 7880"],"t":"Advanced Acute Care Pharmacology","r":0,"d":[]},{"c":["NURS 7916"],"t":"Acute Care of Children II","r":0,"d":[]},{"c":["NURS 7918"],"t":"Acute Care of Children II Clinical","r":0,"d":[]},{"c":["NURS 902"],"t":"Qualitative Methods for Health Research","r":1,"d":[]},{"c":["NURS 903"],"t":"Measurement of Biobehavioral Phenomena","r":1,"d":[]},{"c":["NURS 904"],"t":"Mixed Methods Research","r":1,"d":[]},{"c":["NURS 907"],"t":"Dissertation Seminar II","r":1,"d":[]},{"c":["NURS 913"],"t":"Chronic Conditions: Risk Factors, Prevention, and Management of Adverse Outcomes","r":1,"d":[]},{"c":["NURS 915"],"t":"Nurse Scientist and Grant Writing","r":1,"d":[]},{"c":["NURS 929"],"t":"Responsible Conduct of Research","r":1,"d":[]},{"c":["NURS 9515"],"t":"Clinical DNP Practicum I","r":0,"d":[]},{"c":["NURS 9540"],"t":"Clinical D.N.P. Practicum IV","r":0,"d":[]},{"c":["NURS 9601"],"t":"Clinical Inquiry Seminar I","r":0,"d":[]},{"c":["NURS 9660"],"t":"Clinical Innovation Seminar","r":0,"d":[]},{"c":["NURS 9670"],"t":"Quality and Safety in Health Care Organizations","r":0,"d":[]},{"c":["NURS 9710"],"t":"Health Care Policy, Politics, and Process","r":0,"d":[]},{"c":["NURS 9770"],"t":"The Business of Health Care","r":0,"d":[]},{"c":["NURS 985"],"t":"Achieving Population Health Equity","r":1,"d":[]},{"c":["NURS 9890"],"t":"D.N.P. Project: Part 1","r":0,"d":[]},{"c":["NURS 9981"],"t":"Leadership Immersion Practicum","r":0,"d":[]},{"c":["NURS 9991"],"t":"D.N.P. Project: Evidence-Based Practice Change","r":0,"d":[]},{"c":["OTTM 562"],"t":"Ottoman Text Reading II","r":1,"d":[]},{"c":["PA 2110"],"t":"Human Anatomy II","r":0,"d":[]},{"c":["PA 2120"],"t":"Basic Science II","r":0,"d":[]},{"c":["PA 2130"],"t":"Patient Assessment II","r":0,"d":[]},{"c":["PA 2140"],"t":"Diagnostic Studies II","r":0,"d":[]},{"c":["PA 2150"],"t":"Clinical Medicine II","r":0,"d":[]},{"c":["PA 2160"],"t":"Pharmacology II","r":0,"d":[]},{"c":["PA 2170"],"t":"Behavioral Medicine II","r":0,"d":[]},{"c":["PA 2180"],"t":"Practice, Policy, Ethics II","r":0,"d":[]},{"c":["PA 2190"],"t":"Research II","r":0,"d":[]},{"c":["PATH 622"],"t":"Laboratory Rotations in Experimental Pathology","r":1,"d":[]},{"c":["PATH 650"],"t":"Biology of Cancer","r":1,"d":[]},{"c":["PERS 602"],"t":"Introduction to Classical Persian Literature: The Epic","r":1,"d":[]},{"c":["PHAR 515"],"t":"Current Topics in Pharmacology","r":1,"d":[]},{"c":["PHAR 528"],"t":"Principles of Signal Transduction","r":1,"d":[]},{"c":["PHAR 530"],"t":"Targeted Use of Structural Biology in Drug Discovery","r":0.5,"d":[]},{"c":["PHAR 531"],"t":"Concepts of Structural Pharmacology","r":0.5,"d":[]},{"c":["PHIL 706"],"t":"Work in Progress I","r":1,"d":[]},{"c":["PHIL 715"],"t":"Philosophy of Law: Normative Jurisprudence","r":1,"d":[]},{"c":["PHIL 750"],"t":"Tutorial","r":1,"d":[]},{"c":["PHIL 761"],"t":"Normative, Legal, and Empirical Analyses of Discrimination","r":1,"d":[]},{"c":["PHIL 765","REL 960"],"t":"Free Will, Human and Divine","r":1,"d":[]},{"c":["PHIL 775"],"t":"Causation","r":1,"d":[]},{"c":["PHIL 850"],"t":"Prospectus Tutorial","r":1,"d":[]},{"c":["PHYS 502"],"t":"Electromagnetic Theory I","r":1,"d":[]},{"c":["PHYS 510"],"t":"Quantum Mechanics II","r":1,"d":[]},{"c":["PHYS 512"],"t":"Statistical Physics I","r":1,"d":[]},{"c":["PHYS 522"],"t":"Introduction to Atomic Physics","r":1,"d":[]},{"c":["PHYS 630"],"t":"Relativistic Field Theory II","r":1,"d":[]},{"c":["PHYS 663"],"t":"Special Topics in Particle Theory","r":1,"d":[]},{"c":["PHYS 678"],"t":"Computing for Scientific Research","r":1,"d":[]},{"c":["PHYS 990"],"t":"Special Investigations","r":1,"d":[]},{"c":["PLSC 503"],"t":"Theory and Practice of Quantitative Methods","r":1,"d":[]},{"c":["PLSC 505","SOCY 508"],"t":"Qualitative Field Research","r":1,"d":[]},{"c":["PLSC 511","S&DS 617"],"t":"Applied Machine Learning and Causal Inference Research Seminar","r":1,"d":[]},{"c":["PLSC 519"],"t":"Formal Models of Domestic Politics","r":1,"d":[]},{"c":["PLSC 541"],"t":"Research and Writing","r":1,"d":[]},{"c":["PLSC 546"],"t":"Prospectus Writing Workshop","r":0,"d":[]},{"c":["PLSC 698"],"t":"International Political Economy","r":1,"d":[]},{"c":["PLSC 709"],"t":"Comparative Constitutional Law","r":1,"d":[]},{"c":["PLSC 728"],"t":"Democracy and Executive Power: Policymaking Accountability in Comparative Perspective","r":1,"d":[]},{"c":["PLSC 734","SOCY 560"],"t":"Comparative Research Workshop","r":1,"d":[]},{"c":["PLSC 777"],"t":"Comparative Politics I: Research Design","r":1,"d":[]},{"c":["PLSC 782"],"t":"Political Institutions","r":1,"d":[]},{"c":["PLSC 859"],"t":"Reconstructing the American Constitution","r":1,"d":[]},{"c":["PLSC 862"],"t":"American Elections with Comparative Perspective","r":1,"d":[]},{"c":["PLSC 928"],"t":"ISS Workshop","r":1,"d":[]},{"c":["PLSC 931"],"t":"American Politics Workshop","r":1,"d":[]},{"c":["PLSC 933"],"t":"Comparative Politics Workshop","r":1,"d":[]},{"c":["PLSC 935"],"t":"Political Theory Workshop","r":1,"d":[]},{"c":["PLSC 939"],"t":"Leitner Political Economy Seminar Series","r":1,"d":[]},{"c":["PLSC 941"],"t":"International Relations Workshop","r":1,"d":[]},{"c":["PLSC 943"],"t":"Political Violence and Its Legacies Workshop","r":1,"d":[]},{"c":["PLSC 990"],"t":"Directed Reading","r":1,"d":[]},{"c":["PORT 910"],"t":"Expanded Brazilian Poetry","r":1,"d":[]},{"c":["PSYC 501"],"t":"Foundations of Psychology II: Social, Developmental, and Clinical Psychology","r":1,"d":[]},{"c":["PSYC 541"],"t":"Research Methods in Psychology","r":1,"d":[]},{"c":["PSYC 685"],"t":"Introduction to Psychotherapy","r":1,"d":[]},{"c":["PSYC 690"],"t":"Ethics, Diversity, Supervision, Consultation, and Professional Practice","r":1,"d":[]},{"c":["PSYC 702"],"t":"Current Work in Cognition","r":1,"d":[]},{"c":["PSYC 704"],"t":"Current Work in Behavior, Genetics, and Neuroscience","r":1,"d":[]},{"c":["PSYC 708"],"t":"Current Work in Developmental Psychology","r":1,"d":[]},{"c":["PSYC 710"],"t":"Current Work in Social Psychology and Personality","r":1,"d":[]},{"c":["PSYC 720"],"t":"Current Work in Clinical Psychology","r":1,"d":[]},{"c":["PSYC 724"],"t":"Research Topics in Cognition, Emotion, and Psychopathology","r":1,"d":[]},{"c":["PSYC 725"],"t":"Research Topics in Human Neuroscience","r":1,"d":[]},{"c":["PSYC 727"],"t":"Research Topics in Clinical Neuroscience","r":1,"d":[]},{"c":["PSYC 731"],"t":"Research Topics in Cognition and Development","r":1,"d":[]},{"c":["PSYC 733"],"t":"Research Topics in Social Cognitive Development","r":1,"d":[]},{"c":["PSYC 735"],"t":"Research Topics in Thinking and Reasoning","r":1,"d":[]},{"c":["PSYC 737"],"t":"Research Topics in Clinical and Affective Neuroscience","r":1,"d":[]},{"c":["PSYC 739"],"t":"Research Topics in Autism and Related Disorders","r":1,"d":[]},{"c":["PSYC 741"],"t":"Research Topics in Emotion and Relationships","r":1,"d":[]},{"c":["PSYC 742"],"t":"Research Topics in Computation and Cognition","r":1,"d":[]},{"c":["PSYC 744"],"t":"Research Topics in Philosophical Psychology","r":1,"d":[]},{"c":["PSYC 745"],"t":"Research Topics in Disinhibitory Psychopathology","r":1,"d":[]},{"c":["PSYC 752"],"t":"Research Topics in Social Neuroscience","r":1,"d":[]},{"c":["PSYC 753"],"t":"Research Topics in Legal Psychology","r":1,"d":[]},{"c":["PSYC 754"],"t":"Research Topics in Clinical Affective Neuroscience and Development","r":1,"d":[]},{"c":["PSYC 755"],"t":"Research Topics in Intergroup Relations","r":1,"d":[]},{"c":["PSYC 758"],"t":"Research Topics in Cognitive Neuroscience","r":1,"d":[]},{"c":["PSYC 759"],"t":"Research Topics in Affective Science and Culture","r":1,"d":[]},{"c":["PSYC 760"],"t":"Research Topics in Cognitive and Neural Computation","r":1,"d":[]},{"c":["PSYC 761"],"t":"Research Topics in Computational Decision and Affective Neuroscience","r":1,"d":[]},{"c":["PSYC 762"],"t":"Research Topics in Skill Learning","r":1,"d":[]},{"c":["PSYC 763"],"t":"Research Topics in Implicit Social Cognition","r":1,"d":[]},{"c":["PSYC 764"],"t":"Research Topics in Children\u2019s Learning and Motivation","r":1,"d":[]},{"c":["PSYC 765"],"t":"Research Topics in Philosophy and Cognitive Science","r":1,"d":[]},{"c":["PSYC 766"],"t":"Research Topics in Perception and Cognition","r":1,"d":[]},{"c":["PSYC 775"],"t":"Research Topics in Animal Cognition","r":1,"d":[]},{"c":["PSYC 778"],"t":"Research Topics in Clinical and Affective Neuropsychology","r":1,"d":[]},{"c":["PSYC 801"],"t":"Clinical Internship (Child)","r":1,"d":[]},{"c":["PSYC 802"],"t":"Clinical Internship (Adult)","r":1,"d":[]},{"c":["PSYC 803"],"t":"Cognitive and Social Bases of Behavior","r":1,"d":[]},{"c":["PSYC 805"],"t":"Affective and Developmental Bases of Behavior","r":1,"d":[]},{"c":["PSYC 811"],"t":"Mood and Anxiety Disorders Practicum","r":1,"d":[]},{"c":["PSYC 817"],"t":"Other Clinical Practica","r":1,"d":[]},{"c":["PSYC 920"],"t":"First-Year Research","r":1,"d":[]},{"c":["PSYC 923"],"t":"Individual Study: Theme Essay","r":1,"d":[]},{"c":["PSYC 925"],"t":"Individual Tutorial","r":1,"d":[]},{"c":["PSYC 930"],"t":"Pre-Dissertation Research: Domain-specific Psychophysical","r":1,"d":[]},{"c":["QUAL 999"],"t":"Preparing for Qualifying Exams","r":0,"d":[]},{"c":["REL 3604"],"t":"Elementary Biblical Hebrew II","r":0,"d":[]},{"c":["REL 3606"],"t":"Elementary New Testament Greek II","r":0,"d":[]},{"c":["REL 3610"],"t":"Medieval Latin: The Calamitous Life of Peter Abelard","r":0,"d":[]},{"c":["REL 3630"],"t":"Church Music Skills","r":0,"d":[]},{"c":["REL 3699"],"t":"Reading Course","r":0,"d":[]},{"c":["REL 3794"],"t":"Colloquium on Ministry Formation/Anglican","r":0,"d":[]},{"c":["REL 3795"],"t":"Colloquium on Ministry Formation/Lutheran","r":0,"d":[]},{"c":["REL 3798"],"t":"Andover Newton Colloquium II: Ministry in the Making","r":0,"d":[]},{"c":["REL 3799"],"t":"M.Div. Thesis","r":0,"d":[]},{"c":["REL 3805"],"t":"Roman Catholic Lay Ministry Colloquium","r":0,"d":[]},{"c":["REL 3899"],"t":"M.A.R. Thesis or Project","r":0,"d":[]},{"c":["REL 3900"],"t":"Transformational Leadership: TL:Antiracism&TransformtvPower","r":0,"d":[]},{"c":["REL 3903"],"t":"Clinical Pastoral Education Preparation","r":0,"d":[]},{"c":["REL 3905"],"t":"Andover Newton Colloquium V: Mentored Vocational Discernment","r":0,"d":[]},{"c":["REL 3906"],"t":"Andover Newton Colloquium VI: Social Justice Ministries","r":0,"d":[]},{"c":["REL 3971"],"t":"Advanced Practicum II: Reimagining Church Facilitation","r":0,"d":[]},{"c":["REL 3983"],"t":"Advanced Practicum for Non-Profit Internship II","r":0,"d":[]},{"c":["REL 3987"],"t":"Part-time Ministry Internship with Practicum II","r":0,"d":[]},{"c":["REL 3990"],"t":"NegotiatingBoundariesMinRels: NegotiatingBoundaries-April 1","r":0,"d":[]},{"c":["REL 3992"],"t":"Board Fellows Practicum II","r":0,"d":[]},{"c":["REL 3994"],"t":"Part-time Nonprofit Internship with Practicum II","r":0,"d":[]},{"c":["REL 3998"],"t":"Part-time Internship with Advanced Practicum II","r":0,"d":[]},{"c":["REL 3999"],"t":"S.T.M. Thesis or Project","r":0,"d":[]},{"c":["REL 504"],"t":"Hebrew Bible Interpretation II","r":0,"d":[]},{"c":["REL 506"],"t":"New Testament Interpretation II","r":0,"d":[]},{"c":["REL 511"],"t":"Past Tense: Classical Biblical Prophecy","r":0,"d":[]},{"c":["REL 513"],"t":"The Jewish World of Jesus","r":0,"d":[]},{"c":["REL 517"],"t":"\u201cRace\u201d and the New Testament","r":0,"d":[]},{"c":["REL 536"],"t":"Exegesis of the Gospel of Matthew (NT Writing Seminar)","r":0,"d":[]},{"c":["REL 544"],"t":"History and Methods of Old Testament Interpretation I","r":0,"d":[]},{"c":["REL 556"],"t":"Hebrew Exegesis: Exodus","r":0,"d":[]},{"c":["REL 568"],"t":"Women and Gender in Early Christianity","r":0,"d":[]},{"c":["REL 575"],"t":"Intermediate Biblical Hebrew II","r":0,"d":[]},{"c":["REL 578"],"t":"Scribes, Texts, and Textuality at Qumran","r":0,"d":[]},{"c":["REL 583","RLST 861"],"t":"Archaeology of the Roman Empire for the Study of New Testament and Early Christianity","r":0,"d":[]},{"c":["REL 588"],"t":"Greek Exegesis: Paul\u2019s Letter to the Romans","r":0,"d":[]},{"c":["REL 596"],"t":"The Danger of the Single Christian Story: Diversity, Equity, Inclusion, and Belonging in the NT","r":0,"d":[]},{"c":["REL 605"],"t":"Black Theology","r":0,"d":[]},{"c":["REL 612"],"t":"Christ and Being Human","r":0,"d":[]},{"c":["REL 613"],"t":"Christian Hymnody","r":0,"d":[]},{"c":["REL 615"],"t":"Introduction to Christian Ethics","r":0,"d":[]},{"c":["REL 618"],"t":"Disability and Religion","r":0,"d":[]},{"c":["REL 622"],"t":"Sacrifice: Violence, Ritual, and Redemption","r":0,"d":[]},{"c":["REL 624"],"t":"Experience in Ethics","r":0,"d":[]},{"c":["REL 626"],"t":"Systematic Theology","r":0,"d":[]},{"c":["REL 628"],"t":"Eastern Christian Rites and the Syriac Liturgical Year","r":0,"d":[]},{"c":["REL 634"],"t":"Friedrich Schleiermacher\u2019s Christian Faith","r":0,"d":[]},{"c":["REL 654"],"t":"Social Practices and Ethical Formation","r":0,"d":[]},{"c":["REL 655"],"t":"Liturgy and Life","r":0,"d":[]},{"c":["REL 659"],"t":"God in Modern Thought","r":0,"d":[]},{"c":["REL 662"],"t":"The Anglican Way I","r":0,"d":[]},{"c":["REL 675"],"t":"Baptism and Eucharist in Ecumenical Dialogue","r":0,"d":[]},{"c":["REL 677"],"t":"Natural Disasters in the Christian Tradition: Ritual and Theological Responses","r":0,"d":[]},{"c":["REL 680"],"t":"Christianity and the New Spirit of Capitalism","r":0,"d":[]},{"c":["REL 688"],"t":"Catholic Liturgy","r":0,"d":[]},{"c":["REL 691"],"t":"Ecclesiology, Ministry, Polity: Eccles,Minstry,Polity:Baptist","r":0,"d":[]},{"c":["REL 715"],"t":"History of Modern Christianity: American Encounters, Postmodern Transformations","r":0,"d":[]},{"c":["REL 723"],"t":"The Liberation Theology Movement in Latin America: History and Sources","r":0,"d":[]},{"c":["REL 726"],"t":"U.S. Catholic History Remapped","r":0,"d":[]},{"c":["REL 736"],"t":"Gods, Artists, and Celebrities: Black Religion During the Great Migration","r":0,"d":[]},{"c":["REL 737"],"t":"Clement of Alexandria: Culture, Theology, and the Stromateis","r":0,"d":[]},{"c":["REL 738"],"t":"Jonathan Edwards and American Puritanism","r":0,"d":[]},{"c":["REL 740"],"t":"Battle for the Soul of America: Christianity and the Culture Wars","r":0,"d":[]},{"c":["REL 800"],"t":"Introduction to Public Theology, Public Policy, and Moral Fusion Movements in America","r":0,"d":[]},{"c":["REL 800D"],"t":"Sect for Into PublicTheol","r":0,"d":[]},{"c":["REL 801"],"t":"Marquand Chapel Choir","r":0,"d":[]},{"c":["REL 802"],"t":"Marquand Gospel and Inspirational Choir","r":0,"d":[]},{"c":["REL 807"],"t":"Introduction to Pastoral Theology and Care","r":0,"d":[]},{"c":["REL 810"],"t":"My Neighbor\u2019s Faith: Building Interreligious Community","r":0,"d":[]},{"c":["REL 812"],"t":"Principles and Practices of Preaching","r":0,"d":[]},{"c":["REL 823"],"t":"Trauma, Moral Injury, and Crisis Ministry","r":0,"d":[]},{"c":["REL 828"],"t":"Theory and Practice of Faith Development","r":0,"d":[]},{"c":["REL 845"],"t":"Preaching on the Gospel of Matthew","r":0,"d":[]},{"c":["REL 846"],"t":"Mystics and Social Practice","r":0,"d":[]},{"c":["REL 852"],"t":"Women\u2019s Ways of Knowing","r":0,"d":[]},{"c":["REL 856"],"t":"Pastoral Wisdom inside Prison: Fiction, Memoir, and Drama","r":0,"d":[]},{"c":["REL 875"],"t":"Advanced Topics in Educational Ministry in Schools and Colleges","r":0,"d":[]},{"c":["REL 902"],"t":"Literary Appropriations: Writers and Philosophers in Conversation","r":0,"d":[]},{"c":["REL 907"],"t":"Theological Aesthetics","r":0,"d":[]},{"c":["REL 916"],"t":"Themes in World Christianity","r":0,"d":[]},{"c":["REL 930"],"t":"Introduction to American Judaism: Religion, People, Culture","r":0,"d":[]},{"c":["REL 931"],"t":"Ethics, Imagination, and the Art of Living","r":0,"d":[]},{"c":["REL 942"],"t":"Islam at the Intersections: Readings in Liberation, Race, Gender, and Sexuality","r":0,"d":[]},{"c":["REL 956"],"t":"Faith, Doubt, and Redemption in Twentieth\u2013Twenty-First-Century Fiction","r":0,"d":[]},{"c":["REL 961"],"t":"Eco-Theology, Environmental Ethics, and Fiction","r":0,"d":[]},{"c":["REL 962"],"t":"Environmental Ethics","r":0,"d":[]},{"c":["REL 969"],"t":"Latinx Religions and Radical Politics","r":0,"d":[]},{"c":["REL 983"],"t":"China Mission","r":0,"d":[]},{"c":["REL 991"],"t":"Religion, Conflict, and Reconciliation in Southeast Asia","r":0,"d":[]},{"c":["REL 996"],"t":"Worship: The Embodied Moment for Self and Church Community","r":0,"d":[]},{"c":["RLST 537","SAST 561"],"t":"Readings in Indo-Islamic Texts","r":1,"d":[]},{"c":["RLST 574"],"t":"Chinese Buddhist Texts","r":1,"d":[]},{"c":["RLST 839","SMTC 514"],"t":"Elementary Syriac II","r":1,"d":[]},{"c":["RLST 841","SMTC 521"],"t":"Introductory Ugaritic II","r":1,"d":[]},{"c":["RLST 961"],"t":"Directed Readings: American Religious History","r":1,"d":[]},{"c":["RLST 962"],"t":"Directed Readings: EMWAR","r":1,"d":[]},{"c":["RLST 963"],"t":"Directed Readings: Asian Religions","r":1,"d":[]},{"c":["RLST 964"],"t":"Directed Readings: Ethics","r":1,"d":[]},{"c":["RLST 965"],"t":"Directed Readings: Judaic Studies","r":1,"d":[]},{"c":["RLST 966"],"t":"Directed Readings: Islamic Studies","r":1,"d":[]},{"c":["RLST 968"],"t":"Directed Readings: Old Testament/Hebrew Bible","r":1,"d":[]},{"c":["RLST 969"],"t":"Directed Readings: Philosophy of Religion","r":1,"d":[]},{"c":["RLST 970"],"t":"Directed Readings: Religion and Modernity","r":1,"d":[]},{"c":["RLST 971"],"t":"Directed Readings: Theology","r":1,"d":[]},{"c":["RUSS 653"],"t":"Second Sex after the Second World","r":1,"d":[]},{"c":["RUSS 689"],"t":"Russian Symbolist Poetry","r":1,"d":[]},{"c":["S&DS 626"],"t":"Practical Work","r":1,"d":[]},{"c":["S&DS 628"],"t":"Statistical Consulting","r":0.5,"d":[]},{"c":["S&DS 684"],"t":"Statistical Inference on Graphs","r":1,"d":[]},{"c":["S&DS 685"],"t":"Theory of Reinforcement Learning","r":1,"d":[]},{"c":["S&DS 686"],"t":"High-Dimensional Phenomena in Statistics and Learning","r":1,"d":[]},{"c":["S&DS 687"],"t":"Discrimination in Data Science","r":1,"d":[]},{"c":["S&DS 690"],"t":"Independent Study","r":1,"d":[]},{"c":["S&DS 695"],"t":"Summer Internship in Statistics and Data Science","r":1,"d":[]},{"c":["S&DS 700"],"t":"Departmental Seminar","r":0,"d":[]},{"c":["S&DS 731"],"t":"Research Topics in Algorithms, Probability, and Statistics","r":1,"d":[]},{"c":["SBS 500"],"t":"Independent Study in Social and Behavioral Sciences","r":0,"d":[]},{"c":["SBS 537"],"t":"Social and Interpersonal Influences on Health","r":0,"d":[]},{"c":["SBS 540E"],"t":"Monitoring and Evaluation in Public Health: Principles and Applications","r":0,"d":[]},{"c":["SBS 565"],"t":"Trauma and Health","r":0,"d":[]},{"c":["SBS 574"],"t":"Developing a Health Promotion and Disease Prevention Intervention","r":0,"d":[]},{"c":["SBS 587"],"t":"Harm Reduction and Drug Policy Reform","r":0,"d":[]},{"c":["SBS 590"],"t":"Advocacy and Activism","r":0,"d":[]},{"c":["SBS 592"],"t":"Biomedical Justice: Public Health Critiques and Praxis","r":0,"d":[]},{"c":["SBS 593"],"t":"Community-Based Participatory Research in Public Health","r":0,"d":[]},{"c":["SBS 600"],"t":"Independent Study or Directed Readings","r":0,"d":[]},{"c":["SBS 610"],"t":"Applied Area Readings for Qualifying Exams\u00a0","r":0,"d":[]},{"c":["SBS 670"],"t":"Advanced Field Methods in Public Health","r":0,"d":[]},{"c":["SBS 676"],"t":"Questionnaire Development","r":0,"d":[]},{"c":["SLAV 807"],"t":"Pedagogy Seminar","r":1,"d":[]},{"c":["SLAV 900"],"t":"Directed Reading","r":1,"d":[]},{"c":["SOCY 554"],"t":"Research Topics on Human Nature and Social Networks","r":1,"d":[]},{"c":["SOCY 581"],"t":"Intermediate Methods in Quantitative Sociology","r":1,"d":[]},{"c":["SOCY 592","WGSS 592"],"t":"Qualitative Research Methods","r":1,"d":[]},{"c":["SOCY 595"],"t":"Stratification and Inequality Workshop","r":1,"d":[]},{"c":["SOCY 599"],"t":"Independent Study","r":1,"d":[]},{"c":["SOCY 628"],"t":"Workshop in Cultural Sociology","r":1,"d":[]},{"c":["SPAN 790"],"t":"Methodologies of Modern Language Teaching","r":1,"d":[]},{"c":["SPAN 846"],"t":"Introduction to Digital Humanities II: Algorithmic Approaches to Culture","r":1,"d":[]},{"c":["SPAN 984"],"t":"Digital Humanities Practical Workshop Series","r":1,"d":[]},{"c":["SPAN 990"],"t":"Independent Group Study in Digital Humanities","r":1,"d":[]},{"c":["VAIR 999"],"t":"Visiting Assistant in Research","r":0,"d":[]},{"c":["WGSS 630"],"t":"Decolonizing Thought","r":1,"d":[]},{"c":["WGSS 700"],"t":"Feminist and Queer Theories","r":1,"d":[]},{"c":["WGSS 900"],"t":"Colloquium and Working Group","r":0.5,"d":[]}] \ No newline at end of file From 44e928b35e8023d3260acf719401658f5c428ad0 Mon Sep 17 00:00:00 2001 From: RyanGumlia Date: Tue, 8 Oct 2024 21:52:35 -0400 Subject: [PATCH 7/8] slicing and splicing firestore --- backend/main.py | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/backend/main.py b/backend/main.py index 728d5cd..1c74d48 100644 --- a/backend/main.py +++ b/backend/main.py @@ -186,17 +186,31 @@ def getUser(): def getCatalog(): key = request.args.get('key') if not key: + print("Error: Missing 'key' parameter in request.") return jsonify({"Error": "Missing Param"}), 400 - # Access Firestore try: - slices_ref = db.collection("Catalogs").document(key).collection("Slices") - slices_docs = slices_ref.stream() + collections = db.collections() + root_collection_names = [collection.id for collection in collections] + + if 'Catalogs' not in root_collection_names: + return jsonify({"Error": "Catalogs Nonexistent"}), 404 + print(f"Key: {key}") + slices_ref = db.collection("Catalogs").document(key).collection("Slices") + slices_docs = list(slices_ref.stream()) + + print(f"# Slices: {len(slices_docs)}") + combined_list = [] for slice_doc in slices_docs: - slice_data = slice_doc.to_dict().get('list', []) - combined_list.extend(slice_data) + slice_data = slice_doc.to_dict().get('C', "") + + try: + parsed_data = json.loads(slice_data) + combined_list.extend(parsed_data) + except json.JSONDecodeError as e: + return jsonify({"Error": f"Invalid JSON Document {slice_doc.id}"}), 500 if not combined_list: return jsonify({"Error": "Data Not Found"}), 404 @@ -204,8 +218,9 @@ def getCatalog(): return jsonify(combined_list), 200 except Exception as e: + print(f"Error Firestore: {str(e)}") return jsonify({"Error": str(e)}), 500 - + # * * * POST * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * From 55ff8a6573029d53a92ca81bc06a9360851f736e Mon Sep 17 00:00:00 2001 From: RyanGumlia Date: Sun, 13 Oct 2024 11:11:31 -0400 Subject: [PATCH 8/8] new docs --- docs/README.md | 173 +++++++++++++++++++++++++++++++++++-------------- 1 file changed, 126 insertions(+), 47 deletions(-) diff --git a/docs/README.md b/docs/README.md index 9c9e326..0945d30 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,53 +1,132 @@ # MajorAudit -# Repository Layout +## Repository Layout - `/frontend`: The current face of the site, built with React. - `/backend`: The backend logic for the site, built with Flask. -- `/scrapers`: Chrome extensions for web scraping -- `/docs`: Documentation +- `/scrapers`: Chrome extensions for web scraping. +- `/docs`: Documentation. + +## Local Development Environment -# Local DevEnv's We're working fullstack. -* Base Firebase -1. In root directory, run: npm install -g firebase-tools -* Backend Venv -2. Update to python3.12 -3. Navigate to backend -4. Run: python3.12 -m venv venv -5. Run: source venv/bin/activate -6. Run: pip install -r requirements.txt -7. Run: deactivate -* Secrets -8. Make a "secrets" directory in backend -9. Go to Firebase Console -10. Select majoraudit -11. Click on the gear icon next to Project Overview and select Project Settings -12. Select Service Accounts -13. Generate a new Node.js private key -14. Move the file to your secrets directory -15. Update the cred = credentials.Certificate(r'...') line in main.py to path to that file -* Go -16. In frontend directory, run: npm run build -16. In root or frontend directory, run: firebase emulators:start -17. Troubleshoot any errors -* Notes -- Anytime you change the frontend, you need to cut the emulators and rebuild. They only host the most recent build. -- Anyime you change the webscraper, you need to remove and reconfigure the extension in chrome. -- You can change backend code as you go. Whenever you save, the emulators will automatically restart. -* Strategies -- If focused purely frontend development: - 1. Change the useState(auth) value in App.tsx to true - 2. Change the initLocalStorage() method in Graduation.tsx to yield data from MockStudent rather than the getData() API - 3. In frontend directory, run: npm start - 4. The frontend will now update as you go. - -# Contributing -1. Create a branch for your feature. Likely, `git checkout -b /` -2. _make changes_ -3. Create some commits and push your changes to the origin. -4. Create a pull request and add a few reviewers. In the pull request, be sure to reference any relevant issue numbers. -5. Once the pull request has been approved, merge it into the master branch. - -# Roadmap -We use GitHub issues to track bugs and feature requests: [https://github.com/YaleComputerSociety/MajorAudit/issues](https://github.com/YaleComputerSociety/MajorAudit/issues). -We use GitHub projects to manage everything and do planning: [https://github.com/orgs/YaleComputerSociety/projects/2/](https://github.com/orgs/YaleComputerSociety/projects/2/). + +### Requirements +- Access to MajorAudit GitHub repository. +- npm (Node Package Manager). + +### Setup Instructions + +0. Clone the MajorAudit Repository: + ```bash + git clone + ``` + +### Base Firebase Setup +1. In the root directory, run: + ```bash + npm install -g firebase-tools + ``` + _Note: If it throws permission errors, prepend the command with `sudo`:_ + ```bash + sudo npm install -g firebase-tools + ``` + +### Backend Setup (Python Virtual Environment) +2. Update Python to version 3.12. + - You can use [Homebrew](https://brew.sh/) to install the latest version of Python: + ```bash + brew install python@3.12 + ``` + +3. Navigate to the `/backend` directory. +4. Create a virtual environment: + ```bash + python3.12 -m venv venv + ``` +5. Activate the virtual environment: + ```bash + source venv/bin/activate + ``` +6. Install the required dependencies: + ```bash + pip install -r requirements.txt + ``` +7. Deactivate the virtual environment: + ```bash + deactivate + ``` + +### Secrets Setup +8. Create a `secrets` directory in the `/backend` folder: + ```bash + mkdir secrets + ``` +9. Go to the [Firebase Console](https://console.firebase.google.com/). +10. Select the `majoraudit` project. +11. Click the gear icon next to "Project Overview" and select "Project Settings". +12. Navigate to the "Service Accounts" tab. +13. Generate a new Node.js private key. +14. Move the generated key file to your `secrets` directory. +15. Update the path to the key file in `main.py`: + ```python + cred = credentials.Certificate(r'path_to_secrets_file') + ``` + +### Running the Project +1. Install the required frontend dependencies: + ```bash + cd frontend + npm i + ``` + +2. Ensure you have Java version >= 20 installed. + +3. Log in to Firebase: + ```bash + firebase login + ``` + +4. In the `/frontend` directory, build the frontend: + ```bash + npm run build + ``` + +5. In the root or `/frontend` directory, start the Firebase emulators: + ```bash + firebase emulators:start + ``` + +6. Troubleshoot any errors as needed. + +### Notes +- **Frontend Changes**: Anytime you change the frontend code, stop the emulators, rebuild the frontend, and restart the emulators. The emulators only host the most recent build. +- **Web Scraper Changes**: If you modify the web scraper, remove and reconfigure the extension in Chrome. +- **Backend Changes**: You can modify the backend code on the fly. The emulators will automatically restart when you save changes. + +### Strategies for Development +- **Frontend-Only Development**: + 1. Change the `useState(auth)` value in `App.tsx` to `true`. + 2. Modify the `initLocalStorage()` method in `Graduation.tsx` to use `MockStudent` instead of calling the `getData()` API. + 3. Run the frontend in development mode: + ```bash + npm start + ``` + 4. The frontend will now automatically update as you make changes. + +## Contributing +1. Create a branch for your feature: + ```bash + git checkout -b / + ``` +2. Make your changes. +3. Commit and push your changes to the origin: + ```bash + git commit -m "Your commit message" + git push origin + ``` +4. Create a pull request and add reviewers. In the pull request, reference any relevant issue numbers. +5. Once the pull request is approved, merge it into the master branch. + +## Roadmap +- We use GitHub issues to track bugs and feature requests: [GitHub Issues](https://github.com/YaleComputerSociety/MajorAudit/issues). +- We use GitHub projects to manage everything and do planning: [GitHub Projects](https://github.com/orgs/YaleComputerSociety/projects/2/).