diff --git a/apps/spider/crawlers/offerings.py b/apps/spider/crawlers/offerings.py new file mode 100644 index 0000000..2f5aa96 --- /dev/null +++ b/apps/spider/crawlers/offerings.py @@ -0,0 +1,119 @@ +import re +from urllib.parse import urljoin + +from apps.spider.utils import retrieve_soup +from apps.web.models import Course, CourseOffering, Instructor + +BASE_URL = "https://gc.sjtu.edu.cn/" +OFFERINGS_URL = urljoin(BASE_URL, "/academics/courses/present-course-offerings/") + +TERM_CODES = { + "spring": "S", + "summer": "X", + "fall": "F", + "winter": "W", +} + + +def parse_offering_term(text): + match = re.search(r"(Spring|Summer|Fall|Winter)\s+(\d{4})", text, re.I) + if not match: + return None + + season, year = match.groups() + return f"{year[-2:]}{TERM_CODES[season.lower()]}" + + +def normalize_course_code(raw_course_code): + match = re.match( + r"^(?P[A-Z]{2,4})(?P\d{3,4}J?)", + raw_course_code.strip(), + ) + if not match: + return None, None, None + + department = match.group("department") + number_text = match.group("number").removesuffix("J") + return f"{department}{match.group('number')}", department, int(number_text) + + +def parse_instructors(text): + names = re.split(r";|,|,|\band\b", text) + return [name.strip() for name in names if name.strip()] + + +def crawl_offerings(url=OFFERINGS_URL): + soup = retrieve_soup(url) + offering_data = [] + + term_headings = [ + heading + for heading in soup.find_all("h1") + if "Courses Offered in" in heading.get_text(" ", strip=True) + ] + + for heading in term_headings: + term = parse_offering_term(heading.get_text(" ", strip=True)) + table = heading.find_next("table") + if not term or table is None: + continue + + current_record = None + for row in table.find_all("tr")[1:]: + cells = [cell.get_text(" ", strip=True) for cell in row.find_all("td")] + if not cells: + continue + + if len(cells) >= 5: + course_code, department, number = normalize_course_code(cells[0]) + if not course_code: + current_record = None + continue + + current_record = { + "term": term, + "course_code": course_code, + "department": department, + "number": number, + "course_title_zh": cells[1], + "course_title": cells[2], + "course_credits": int(cells[3]) if cells[3].isdigit() else 0, + "instructors": parse_instructors(cells[4]), + } + offering_data.append(current_record) + elif len(cells) == 1 and current_record is not None: + current_record["instructors"].extend(parse_instructors(cells[0])) + + return offering_data + + +def import_offerings(offering_data): + for offering in offering_data: + if not offering: + continue + + course, created = Course.objects.get_or_create( + course_code=offering["course_code"], + defaults={ + "course_title": offering["course_title"][:100], + "department": offering["department"], + "number": offering["number"], + "course_credits": offering["course_credits"], + }, + ) + if not created: + course.course_credits = offering["course_credits"] + course.save(update_fields=["course_credits", "updated_at"]) + + course_offering, _ = CourseOffering.objects.get_or_create( + course=course, + term=offering["term"], + section=1, + defaults={"period": "", "limit": None}, + ) + + instructors = [ + Instructor.objects.get_or_create(name=name)[0] + for name in offering.get("instructors", []) + ] + course_offering.instructors.set(instructors) diff --git a/apps/spider/crawlers/orc.py b/apps/spider/crawlers/orc.py index aba3fdd..73839e9 100644 --- a/apps/spider/crawlers/orc.py +++ b/apps/spider/crawlers/orc.py @@ -5,12 +5,12 @@ from apps.web.models import Course, CourseOffering, Instructor from lib.constants import CURRENT_TERM -BASE_URL = "https://www.ji.sjtu.edu.cn/" +BASE_URL = "https://gc.sjtu.edu.cn/" ORC_BASE_URL = urljoin(BASE_URL, "/academics/courses/courses-by-number/") # ORC_UNDERGRAD_SUFFIX = "Departments-Programs-Undergraduate" # ORC_GRADUATE_SUFFIX = "Departments-Programs-Graduate" COURSE_DETAIL_URL_PREFIX = ( - "https://www.ji.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=" + "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=" ) UNDERGRAD_URL = ORC_BASE_URL INSTRUCTOR_TERM_REGEX = re.compile(r"^(?P\w*)\s?(\((?P\w*)\))?") @@ -68,9 +68,17 @@ def _crawl_course_data(course_url): split_course_heading = course_heading.split(" – ") children = list(soup.find_all(class_="et_pb_text_inner")[3].children) - course_code = split_course_heading[0] - department = re.findall(r"^([A-Z]{2,4})\d+", course_code)[0] - number = re.findall(r"^[A-Z]{2,4}(\d{3})", course_code)[0] + raw_course_code = split_course_heading[0].strip() + course_code_match = re.match( + r"^(?P[A-Z]{2,4})(?P\d{3,4}J?)", raw_course_code + ) + if not course_code_match: + return None + + department = course_code_match.group("department") + number_text = course_code_match.group("number").removesuffix("J") + number = int(number_text) + course_code = f"{department}{course_code_match.group('number')}" course_title = split_course_heading[1] course_credits = 0 @@ -82,7 +90,8 @@ def _crawl_course_data(course_url): for i, child in enumerate(children): text = child.get_text(strip=True) if hasattr(child, "get_text") else "" if "Credits:" in text: - course_credits = int(re.findall(r"\d+", text)[0]) + credits_match = re.search(r"Credits:\s*(\d+)", text) + course_credits = int(credits_match.group(1)) if credits_match else 0 elif "Pre-requisites:" in text: pre_requisites = extract_prerequisites(text) elif "Description:" in text: @@ -138,6 +147,9 @@ def _crawl_course_data(course_url): def import_department(department_data): for course_data in department_data: + if not course_data: + continue + course, created = Course.objects.update_or_create( course_code=course_data["course_code"], defaults={ diff --git a/apps/spider/migrations/0003_add_course_offerings_data_type.py b/apps/spider/migrations/0003_add_course_offerings_data_type.py new file mode 100644 index 0000000..11fb4a3 --- /dev/null +++ b/apps/spider/migrations/0003_add_course_offerings_data_type.py @@ -0,0 +1,26 @@ +# Generated by Codex on 2026-05-13 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("spider", "0002_alter_crawleddata_current_data_and_more"), + ] + + operations = [ + migrations.AlterField( + model_name="crawleddata", + name="data_type", + field=models.CharField( + choices=[ + ("medians", "Medians"), + ("orc_department_courses", "ORC Department Courses"), + ("course_timetable", "Course Timetable"), + ("course_offerings", "Course Offerings"), + ], + default="", + max_length=32, + ), + ), + ] diff --git a/apps/spider/models.py b/apps/spider/models.py index 0b0ff2d..941f999 100644 --- a/apps/spider/models.py +++ b/apps/spider/models.py @@ -45,10 +45,12 @@ class CrawledData(models.Model): MEDIANS = "medians" ORC_DEPARTMENT_COURSES = "orc_department_courses" COURSE_TIMETABLE = "course_timetable" + COURSE_OFFERINGS = "course_offerings" DATA_TYPE_CHOICES = ( (MEDIANS, "Medians"), (ORC_DEPARTMENT_COURSES, "ORC Department Courses"), (COURSE_TIMETABLE, "Course Timetable"), + (COURSE_OFFERINGS, "Course Offerings"), ) objects = CrawledDataManager() @@ -102,4 +104,7 @@ def email_change(self): def approve_change(self): from apps.spider.tasks import import_pending_crawled_data - import_pending_crawled_data.delay(self.pk) + if settings.DEBUG or import_pending_crawled_data.app.conf.task_always_eager: + import_pending_crawled_data(self.pk) + else: + import_pending_crawled_data.delay(self.pk) diff --git a/apps/spider/tasks.py b/apps/spider/tasks.py index 04b3a92..9bd21c1 100644 --- a/apps/spider/tasks.py +++ b/apps/spider/tasks.py @@ -1,8 +1,8 @@ -# from apps.spider.crawlers import medians, orc, timetable +# from apps.spider.crawlers import medians, timetable from celery import shared_task from django.db import transaction -from apps.spider.crawlers import orc +from apps.spider.crawlers import offerings, orc from apps.spider.models import CrawledData from lib import task_utils @@ -20,6 +20,8 @@ def import_pending_crawled_data(crawled_data_pk): # elif if crawled_data.data_type == CrawledData.ORC_DEPARTMENT_COURSES: orc.import_department(crawled_data.pending_data) + elif crawled_data.data_type == CrawledData.COURSE_OFFERINGS: + offerings.import_offerings(crawled_data.pending_data) # else: # assert crawled_data.data_type == CrawledData.COURSE_TIMETABLE # timetable.import_timetable(crawled_data.pending_data) @@ -55,11 +57,32 @@ def crawl_orc(): program_urls = orc.crawl_program_urls() print(f"Found {len(program_urls)} program URLs") # assert len(program_urls) > 50 - for url in program_urls: - crawl_program_url.delay(url) + new_data = [ + course_data + for course_data in (orc._crawl_course_data(url) for url in sorted(program_urls)) + if course_data + ] + CrawledData.objects.handle_new_crawled_data( + new_data, + "orc_department_courses", + CrawledData.ORC_DEPARTMENT_COURSES, + ) return sorted(program_urls) +@shared_task +@task_utils.email_if_fails +def crawl_offerings(): + print("Starting crawl_offerings") + new_data = offerings.crawl_offerings() + CrawledData.objects.handle_new_crawled_data( + new_data, + "present_course_offerings", + CrawledData.COURSE_OFFERINGS, + ) + return new_data + + @shared_task @task_utils.email_if_fails def crawl_program_url(url, program_code=None): diff --git a/apps/web/fixtures/seed_courses.json b/apps/web/fixtures/seed_courses.json new file mode 100644 index 0000000..eac6266 --- /dev/null +++ b/apps/web/fixtures/seed_courses.json @@ -0,0 +1,12392 @@ +[ +{ + "model": "web.instructor", + "pk": 102, + "fields": { + "name": "Joelle Tybon", + "created_at": "2026-05-13T15:31:02.801Z", + "updated_at": "2026-05-13T15:31:02.801Z" + } +}, +{ + "model": "web.instructor", + "pk": 103, + "fields": { + "name": "Ryan Thorpe", + "created_at": "2026-05-13T15:31:02.805Z", + "updated_at": "2026-05-13T15:31:02.805Z" + } +}, +{ + "model": "web.instructor", + "pk": 104, + "fields": { + "name": "Kyung Min Kim", + "created_at": "2026-05-13T15:31:02.808Z", + "updated_at": "2026-05-13T15:31:02.808Z" + } +}, +{ + "model": "web.instructor", + "pk": 105, + "fields": { + "name": "Andrew Yang", + "created_at": "2026-05-13T15:31:02.811Z", + "updated_at": "2026-05-13T15:31:02.811Z" + } +}, +{ + "model": "web.instructor", + "pk": 106, + "fields": { + "name": "Christina Cui", + "created_at": "2026-05-13T15:31:02.814Z", + "updated_at": "2026-05-13T15:31:02.814Z" + } +}, +{ + "model": "web.instructor", + "pk": 107, + "fields": { + "name": "Christopher Linforth", + "created_at": "2026-05-13T15:31:02.817Z", + "updated_at": "2026-05-13T15:31:02.817Z" + } +}, +{ + "model": "web.instructor", + "pk": 108, + "fields": { + "name": "Steve Park", + "created_at": "2026-05-13T15:31:02.820Z", + "updated_at": "2026-05-13T15:31:02.820Z" + } +}, +{ + "model": "web.instructor", + "pk": 109, + "fields": { + "name": "Álvaro Mateos González", + "created_at": "2026-05-13T15:31:02.833Z", + "updated_at": "2026-05-13T15:31:02.833Z" + } +}, +{ + "model": "web.instructor", + "pk": 110, + "fields": { + "name": "Milias Liu", + "created_at": "2026-05-13T15:31:02.845Z", + "updated_at": "2026-05-13T15:31:02.845Z" + } +}, +{ + "model": "web.instructor", + "pk": 111, + "fields": { + "name": "Xi Liu", + "created_at": "2026-05-13T15:31:02.866Z", + "updated_at": "2026-05-13T15:31:02.866Z" + } +}, +{ + "model": "web.instructor", + "pk": 112, + "fields": { + "name": "Heng Qiao", + "created_at": "2026-05-13T15:31:02.877Z", + "updated_at": "2026-05-13T15:31:02.877Z" + } +}, +{ + "model": "web.instructor", + "pk": 113, + "fields": { + "name": "Zhongqiang Ren", + "created_at": "2026-05-13T15:31:02.888Z", + "updated_at": "2026-05-13T15:31:02.888Z" + } +}, +{ + "model": "web.instructor", + "pk": 114, + "fields": { + "name": "Horst Hohberger", + "created_at": "2026-05-13T15:31:02.900Z", + "updated_at": "2026-05-13T15:31:02.900Z" + } +}, +{ + "model": "web.instructor", + "pk": 115, + "fields": { + "name": "Manuel Charlemagne", + "created_at": "2026-05-13T15:31:02.910Z", + "updated_at": "2026-05-13T15:31:02.910Z" + } +}, +{ + "model": "web.instructor", + "pk": 116, + "fields": { + "name": "Bo Tao", + "created_at": "2026-05-13T15:31:02.922Z", + "updated_at": "2026-05-13T15:31:02.922Z" + } +}, +{ + "model": "web.instructor", + "pk": 117, + "fields": { + "name": "Mingjian Li", + "created_at": "2026-05-13T15:31:02.925Z", + "updated_at": "2026-05-13T15:31:02.925Z" + } +}, +{ + "model": "web.instructor", + "pk": 118, + "fields": { + "name": "Xiaodong Wei", + "created_at": "2026-05-13T15:31:02.936Z", + "updated_at": "2026-05-13T15:31:02.936Z" + } +}, +{ + "model": "web.instructor", + "pk": 119, + "fields": { + "name": "Youyi Bi", + "created_at": "2026-05-13T15:31:02.947Z", + "updated_at": "2026-05-13T15:31:02.947Z" + } +}, +{ + "model": "web.instructor", + "pk": 120, + "fields": { + "name": "GC faculty", + "created_at": "2026-05-13T15:31:02.959Z", + "updated_at": "2026-05-13T15:31:02.959Z" + } +}, +{ + "model": "web.instructor", + "pk": 121, + "fields": { + "name": "Ailin Zhang", + "created_at": "2026-05-13T15:31:02.994Z", + "updated_at": "2026-05-13T15:31:02.994Z" + } +}, +{ + "model": "web.instructor", + "pk": 122, + "fields": { + "name": "Xuyang Lu", + "created_at": "2026-05-13T15:31:03.005Z", + "updated_at": "2026-05-13T15:31:03.005Z" + } +}, +{ + "model": "web.instructor", + "pk": 123, + "fields": { + "name": "Li Jin", + "created_at": "2026-05-13T15:31:03.016Z", + "updated_at": "2026-05-13T15:31:03.016Z" + } +}, +{ + "model": "web.instructor", + "pk": 124, + "fields": { + "name": "Wendong Wang", + "created_at": "2026-05-13T15:31:03.036Z", + "updated_at": "2026-05-13T15:31:03.036Z" + } +}, +{ + "model": "web.instructor", + "pk": 125, + "fields": { + "name": "Aline Chevalier", + "created_at": "2026-05-13T15:31:03.048Z", + "updated_at": "2026-05-13T15:31:03.048Z" + } +}, +{ + "model": "web.instructor", + "pk": 126, + "fields": { + "name": "Jie Li", + "created_at": "2026-05-13T15:31:03.077Z", + "updated_at": "2026-05-13T15:31:03.077Z" + } +}, +{ + "model": "web.instructor", + "pk": 127, + "fields": { + "name": "Kwee-Yan Teh", + "created_at": "2026-05-13T15:31:03.089Z", + "updated_at": "2026-05-13T15:31:03.089Z" + } +}, +{ + "model": "web.instructor", + "pk": 128, + "fields": { + "name": "Anna", + "created_at": "2026-05-13T15:31:03.101Z", + "updated_at": "2026-05-13T15:31:03.101Z" + } +}, +{ + "model": "web.instructor", + "pk": 129, + "fields": { + "name": "Kuanyong Qiu", + "created_at": "2026-05-13T15:31:03.104Z", + "updated_at": "2026-05-13T15:31:03.104Z" + } +}, +{ + "model": "web.instructor", + "pk": 130, + "fields": { + "name": "Lixia Hao", + "created_at": "2026-05-13T15:31:03.129Z", + "updated_at": "2026-05-13T15:31:03.129Z" + } +}, +{ + "model": "web.instructor", + "pk": 131, + "fields": { + "name": "Yan Du", + "created_at": "2026-05-13T15:31:03.150Z", + "updated_at": "2026-05-13T15:31:03.150Z" + } +}, +{ + "model": "web.instructor", + "pk": 132, + "fields": { + "name": "Donglai Shi", + "created_at": "2026-05-13T15:31:03.161Z", + "updated_at": "2026-05-13T15:31:03.161Z" + } +}, +{ + "model": "web.instructor", + "pk": 133, + "fields": { + "name": "Lei Han", + "created_at": "2026-05-13T15:31:03.175Z", + "updated_at": "2026-05-13T15:31:03.175Z" + } +}, +{ + "model": "web.instructor", + "pk": 134, + "fields": { + "name": "Irene Wei", + "created_at": "2026-05-13T15:31:03.188Z", + "updated_at": "2026-05-13T15:31:03.188Z" + } +}, +{ + "model": "web.instructor", + "pk": 135, + "fields": { + "name": "Quanbo Xie", + "created_at": "2026-05-13T15:31:03.217Z", + "updated_at": "2026-05-13T15:31:03.217Z" + } +}, +{ + "model": "web.instructor", + "pk": 136, + "fields": { + "name": "Tong Xu", + "created_at": "2026-05-13T15:31:03.229Z", + "updated_at": "2026-05-13T15:31:03.229Z" + } +}, +{ + "model": "web.instructor", + "pk": 137, + "fields": { + "name": "Chan Yang", + "created_at": "2026-05-13T15:31:03.251Z", + "updated_at": "2026-05-13T15:31:03.251Z" + } +}, +{ + "model": "web.instructor", + "pk": 138, + "fields": { + "name": "Zibo Lin", + "created_at": "2026-05-13T15:31:03.264Z", + "updated_at": "2026-05-13T15:31:03.264Z" + } +}, +{ + "model": "web.instructor", + "pk": 139, + "fields": { + "name": "Dmytro Mykhailov", + "created_at": "2026-05-13T15:31:03.278Z", + "updated_at": "2026-05-13T15:31:03.278Z" + } +}, +{ + "model": "web.instructor", + "pk": 140, + "fields": { + "name": "Yun Wu", + "created_at": "2026-05-13T15:31:03.311Z", + "updated_at": "2026-05-13T15:31:03.311Z" + } +}, +{ + "model": "web.instructor", + "pk": 141, + "fields": { + "name": "Richard David Paradorn Grumitt", + "created_at": "2026-05-13T15:31:03.324Z", + "updated_at": "2026-05-13T15:31:03.324Z" + } +}, +{ + "model": "web.instructor", + "pk": 142, + "fields": { + "name": "Erfan Xia", + "created_at": "2026-05-13T15:31:03.336Z", + "updated_at": "2026-05-13T15:31:03.336Z" + } +}, +{ + "model": "web.instructor", + "pk": 143, + "fields": { + "name": "Yana Zuo", + "created_at": "2026-05-13T15:31:03.348Z", + "updated_at": "2026-05-13T15:31:03.348Z" + } +}, +{ + "model": "web.instructor", + "pk": 144, + "fields": { + "name": "Jiong Yao", + "created_at": "2026-05-13T15:31:03.361Z", + "updated_at": "2026-05-13T15:31:03.361Z" + } +}, +{ + "model": "web.instructor", + "pk": 145, + "fields": { + "name": "En-ling Chiao", + "created_at": "2026-05-13T15:31:03.374Z", + "updated_at": "2026-05-13T15:31:03.374Z" + } +}, +{ + "model": "web.instructor", + "pk": 146, + "fields": { + "name": "Runze Cai", + "created_at": "2026-05-13T15:31:03.393Z", + "updated_at": "2026-05-13T15:31:03.393Z" + } +}, +{ + "model": "web.instructor", + "pk": 147, + "fields": { + "name": "Yibo Pi", + "created_at": "2026-05-13T15:31:03.415Z", + "updated_at": "2026-05-13T15:31:03.415Z" + } +}, +{ + "model": "web.instructor", + "pk": 148, + "fields": { + "name": "Jigang Wu", + "created_at": "2026-05-13T15:31:03.428Z", + "updated_at": "2026-05-13T15:31:03.428Z" + } +}, +{ + "model": "web.instructor", + "pk": 149, + "fields": { + "name": "Ting Sun", + "created_at": "2026-05-13T15:31:03.461Z", + "updated_at": "2026-05-13T15:31:03.461Z" + } +}, +{ + "model": "web.instructor", + "pk": 150, + "fields": { + "name": "Mateusz Krzyzosiak", + "created_at": "2026-05-13T15:31:03.519Z", + "updated_at": "2026-05-13T15:31:03.519Z" + } +}, +{ + "model": "web.instructor", + "pk": 151, + "fields": { + "name": "Wenjie Wan", + "created_at": "2026-05-13T15:31:03.531Z", + "updated_at": "2026-05-13T15:31:03.531Z" + } +}, +{ + "model": "web.instructor", + "pk": 152, + "fields": { + "name": "Zijie Qu", + "created_at": "2026-05-13T15:31:03.544Z", + "updated_at": "2026-05-13T15:31:03.544Z" + } +}, +{ + "model": "web.instructor", + "pk": 153, + "fields": { + "name": "Yuxing Wang", + "created_at": "2026-05-13T15:31:03.557Z", + "updated_at": "2026-05-13T15:31:03.557Z" + } +}, +{ + "model": "web.instructor", + "pk": 154, + "fields": { + "name": "Sung-Liang Chen", + "created_at": "2026-05-13T15:31:03.581Z", + "updated_at": "2026-05-13T15:31:03.581Z" + } +}, +{ + "model": "web.instructor", + "pk": 155, + "fields": { + "name": "Yuljae Cho", + "created_at": "2026-05-13T15:31:03.584Z", + "updated_at": "2026-05-13T15:31:03.584Z" + } +}, +{ + "model": "web.instructor", + "pk": 156, + "fields": { + "name": "Gang Zheng", + "created_at": "2026-05-13T15:31:03.597Z", + "updated_at": "2026-05-13T15:31:03.597Z" + } +}, +{ + "model": "web.instructor", + "pk": 157, + "fields": { + "name": "Weikang Qian", + "created_at": "2026-05-13T15:31:03.610Z", + "updated_at": "2026-05-13T15:31:03.610Z" + } +}, +{ + "model": "web.instructor", + "pk": 158, + "fields": { + "name": "Tom Bowden", + "created_at": "2026-05-13T15:31:03.624Z", + "updated_at": "2026-05-13T15:31:03.624Z" + } +}, +{ + "model": "web.instructor", + "pk": 159, + "fields": { + "name": "Yongxing Shen", + "created_at": "2026-05-13T15:31:03.638Z", + "updated_at": "2026-05-13T15:31:03.638Z" + } +}, +{ + "model": "web.instructor", + "pk": 160, + "fields": { + "name": "Qianli Chen", + "created_at": "2026-05-13T15:31:03.662Z", + "updated_at": "2026-05-13T15:31:03.662Z" + } +}, +{ + "model": "web.instructor", + "pk": 161, + "fields": { + "name": "JI faculty", + "created_at": "2026-05-13T15:31:03.674Z", + "updated_at": "2026-05-13T15:31:03.674Z" + } +}, +{ + "model": "web.instructor", + "pk": 162, + "fields": { + "name": "Yuena Liu", + "created_at": "2026-05-13T15:31:03.713Z", + "updated_at": "2026-05-13T15:31:03.713Z" + } +}, +{ + "model": "web.instructor", + "pk": 163, + "fields": { + "name": "Yutong Ban", + "created_at": "2026-05-13T15:31:03.726Z", + "updated_at": "2026-05-13T15:31:03.726Z" + } +}, +{ + "model": "web.instructor", + "pk": 164, + "fields": { + "name": "Yaping Dan", + "created_at": "2026-05-13T15:31:03.750Z", + "updated_at": "2026-05-13T15:31:03.750Z" + } +}, +{ + "model": "web.instructor", + "pk": 165, + "fields": { + "name": "An Zou", + "created_at": "2026-05-13T15:31:03.792Z", + "updated_at": "2026-05-13T15:31:03.792Z" + } +}, +{ + "model": "web.instructor", + "pk": 166, + "fields": { + "name": "Chong Han", + "created_at": "2026-05-13T15:31:03.819Z", + "updated_at": "2026-05-13T15:31:03.819Z" + } +}, +{ + "model": "web.instructor", + "pk": 167, + "fields": { + "name": "Jun Zhang", + "created_at": "2026-05-13T15:31:03.837Z", + "updated_at": "2026-05-13T15:31:03.837Z" + } +}, +{ + "model": "web.instructor", + "pk": 168, + "fields": { + "name": "Zhaoguang Wang Ting Sun", + "created_at": "2026-05-13T15:31:03.858Z", + "updated_at": "2026-05-13T15:31:03.858Z" + } +}, +{ + "model": "web.instructor", + "pk": 169, + "fields": { + "name": "Hong Zhu", + "created_at": "2026-05-13T15:31:03.872Z", + "updated_at": "2026-05-13T15:31:03.872Z" + } +}, +{ + "model": "web.instructor", + "pk": 170, + "fields": { + "name": "Yunlong Guo", + "created_at": "2026-05-13T15:31:03.884Z", + "updated_at": "2026-05-13T15:31:03.885Z" + } +}, +{ + "model": "web.instructor", + "pk": 171, + "fields": { + "name": "Peisen Huang", + "created_at": "2026-05-13T15:31:03.908Z", + "updated_at": "2026-05-13T15:31:03.908Z" + } +}, +{ + "model": "web.instructor", + "pk": 172, + "fields": { + "name": "Rui Yang", + "created_at": "2026-05-13T15:31:03.931Z", + "updated_at": "2026-05-13T15:31:03.931Z" + } +}, +{ + "model": "web.instructor", + "pk": 173, + "fields": { + "name": "Yifei Zhu", + "created_at": "2026-05-13T15:31:03.944Z", + "updated_at": "2026-05-13T15:31:03.944Z" + } +}, +{ + "model": "web.instructor", + "pk": 174, + "fields": { + "name": "Xinfei Guo", + "created_at": "2026-05-13T15:31:03.966Z", + "updated_at": "2026-05-13T15:31:03.966Z" + } +}, +{ + "model": "web.instructor", + "pk": 175, + "fields": { + "name": "Xiaolin Huang", + "created_at": "2026-05-13T15:31:03.999Z", + "updated_at": "2026-05-13T15:31:03.999Z" + } +}, +{ + "model": "web.instructor", + "pk": 176, + "fields": { + "name": "Dezhi Zhou", + "created_at": "2026-05-13T15:31:04.066Z", + "updated_at": "2026-05-13T15:31:04.066Z" + } +}, +{ + "model": "web.instructor", + "pk": 177, + "fields": { + "name": "David Hung", + "created_at": "2026-05-13T15:31:04.077Z", + "updated_at": "2026-05-13T15:31:04.077Z" + } +}, +{ + "model": "web.instructor", + "pk": 178, + "fields": { + "name": "Lei Shao", + "created_at": "2026-05-13T15:31:04.089Z", + "updated_at": "2026-05-13T15:31:04.089Z" + } +}, +{ + "model": "web.instructor", + "pk": 179, + "fields": { + "name": "Yujun Xie", + "created_at": "2026-05-13T15:31:04.160Z", + "updated_at": "2026-05-13T15:31:04.160Z" + } +}, +{ + "model": "web.instructor", + "pk": 180, + "fields": { + "name": "Qiong Yu", + "created_at": "2026-05-13T15:31:04.311Z", + "updated_at": "2026-05-13T15:31:04.311Z" + } +}, +{ + "model": "web.instructor", + "pk": 181, + "fields": { + "name": "YAN Xu 闫旭", + "created_at": "2026-05-13T15:31:04.344Z", + "updated_at": "2026-05-13T15:31:04.344Z" + } +}, +{ + "model": "web.instructor", + "pk": 182, + "fields": { + "name": "En-Ling Chiao", + "created_at": "2026-05-13T15:31:04.355Z", + "updated_at": "2026-05-13T15:31:04.355Z" + } +}, +{ + "model": "web.instructor", + "pk": 183, + "fields": { + "name": "Saulo Mendes", + "created_at": "2026-05-13T15:31:04.404Z", + "updated_at": "2026-05-13T15:31:04.404Z" + } +}, +{ + "model": "web.instructor", + "pk": 184, + "fields": { + "name": "Yulian He", + "created_at": "2026-05-13T15:31:04.460Z", + "updated_at": "2026-05-13T15:31:04.460Z" + } +}, +{ + "model": "web.instructor", + "pk": 185, + "fields": { + "name": "Yanfeng Shen", + "created_at": "2026-05-13T15:31:04.465Z", + "updated_at": "2026-05-13T15:31:04.465Z" + } +}, +{ + "model": "web.instructor", + "pk": 186, + "fields": { + "name": "Yong Long", + "created_at": "2026-05-13T15:31:04.513Z", + "updated_at": "2026-05-13T15:31:04.513Z" + } +}, +{ + "model": "web.instructor", + "pk": 187, + "fields": { + "name": "Mo-Yuen Chow", + "created_at": "2026-05-13T15:31:04.525Z", + "updated_at": "2026-05-13T15:31:04.525Z" + } +}, +{ + "model": "web.instructor", + "pk": 188, + "fields": { + "name": "Nana Liu", + "created_at": "2026-05-13T15:31:04.538Z", + "updated_at": "2026-05-13T15:31:04.538Z" + } +}, +{ + "model": "web.instructor", + "pk": 189, + "fields": { + "name": "Robert Parker", + "created_at": "2026-05-13T15:31:04.606Z", + "updated_at": "2026-05-13T15:31:04.606Z" + } +}, +{ + "model": "web.instructor", + "pk": 190, + "fields": { + "name": "L. Jay Guo", + "created_at": "2026-05-13T15:31:04.720Z", + "updated_at": "2026-05-13T15:31:04.720Z" + } +}, +{ + "model": "web.instructor", + "pk": 191, + "fields": { + "name": "Lipo Wang", + "created_at": "2026-05-13T15:31:04.732Z", + "updated_at": "2026-05-13T15:31:04.732Z" + } +}, +{ + "model": "web.instructor", + "pk": 192, + "fields": { + "name": "Jaehyung Ju", + "created_at": "2026-05-13T15:31:04.745Z", + "updated_at": "2026-05-13T15:31:04.745Z" + } +}, +{ + "model": "web.instructor", + "pk": 193, + "fields": { + "name": "Zhaoguang Wang", + "created_at": "2026-05-13T15:31:04.775Z", + "updated_at": "2026-05-13T15:31:04.775Z" + } +}, +{ + "model": "web.instructor", + "pk": 194, + "fields": { + "name": "Yanming Wang", + "created_at": "2026-05-13T15:31:04.797Z", + "updated_at": "2026-05-13T15:31:04.797Z" + } +}, +{ + "model": "web.instructor", + "pk": 195, + "fields": { + "name": "Jennifer Royston", + "created_at": "2026-05-13T15:31:04.856Z", + "updated_at": "2026-05-13T15:31:04.856Z" + } +}, +{ + "model": "web.instructor", + "pk": 196, + "fields": { + "name": "Nathaniel Murray", + "created_at": "2026-05-13T15:31:04.859Z", + "updated_at": "2026-05-13T15:31:04.859Z" + } +}, +{ + "model": "web.instructor", + "pk": 197, + "fields": { + "name": "Sarah Burcon", + "created_at": "2026-05-13T15:31:04.862Z", + "updated_at": "2026-05-13T15:31:04.862Z" + } +}, +{ + "model": "web.instructor", + "pk": 198, + "fields": { + "name": "Paramveer Dhillon", + "created_at": "2026-05-13T15:31:04.951Z", + "updated_at": "2026-05-13T15:31:04.951Z" + } +}, +{ + "model": "web.instructor", + "pk": 199, + "fields": { + "name": "Viva Du", + "created_at": "2026-05-13T15:31:05.096Z", + "updated_at": "2026-05-13T15:31:05.096Z" + } +}, +{ + "model": "web.instructor", + "pk": 200, + "fields": { + "name": "YAN Xu", + "created_at": "2026-05-13T15:31:05.218Z", + "updated_at": "2026-05-13T15:31:05.218Z" + } +}, +{ + "model": "web.instructor", + "pk": 201, + "fields": { + "name": "Zuo Yana", + "created_at": "2026-05-13T15:31:05.228Z", + "updated_at": "2026-05-13T15:31:05.228Z" + } +}, +{ + "model": "web.course", + "pk": 611, + "fields": { + "course_code": "PHYS1400J", + "course_title": "Physics I", + "department": "PHYS", + "number": 1400, + "course_credits": 0, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=221", + "created_at": "2026-05-13T15:31:00.876Z", + "updated_at": "2026-05-13T15:31:00.876Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 612, + "fields": { + "course_code": "PHYS3900J", + "course_title": "Modern Physics", + "department": "PHYS", + "number": 3900, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=223", + "created_at": "2026-05-13T15:31:00.882Z", + "updated_at": "2026-05-13T15:31:03.317Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 613, + "fields": { + "course_code": "PHYS1600J", + "course_title": "Honors Physics I", + "department": "PHYS", + "number": 1600, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=225", + "created_at": "2026-05-13T15:31:00.886Z", + "updated_at": "2026-05-13T15:31:04.420Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 614, + "fields": { + "course_code": "ENGL1530J", + "course_title": "Novel into Film", + "department": "ENGL", + "number": 1530, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=226", + "created_at": "2026-05-13T15:31:00.891Z", + "updated_at": "2026-05-13T15:31:05.113Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 615, + "fields": { + "course_code": "ENGL1240J", + "course_title": "Fashion, Fiction and Feminism", + "department": "ENGL", + "number": 1240, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=227", + "created_at": "2026-05-13T15:31:00.895Z", + "updated_at": "2026-05-13T15:31:00.895Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 616, + "fields": { + "course_code": "POL1400J", + "course_title": "Comparative Government and Politics", + "department": "POL", + "number": 1400, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=228", + "created_at": "2026-05-13T15:31:00.899Z", + "updated_at": "2026-05-13T15:31:00.899Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 617, + "fields": { + "course_code": "POL1600J", + "course_title": "Introduction to World Politics", + "department": "POL", + "number": 1600, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=229", + "created_at": "2026-05-13T15:31:00.903Z", + "updated_at": "2026-05-13T15:31:00.903Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 618, + "fields": { + "course_code": "MATH1150J", + "course_title": "Calculus I", + "department": "MATH", + "number": 1150, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=230", + "created_at": "2026-05-13T15:31:00.907Z", + "updated_at": "2026-05-13T15:31:03.380Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 619, + "fields": { + "course_code": "MATH1160J", + "course_title": "Calculus II", + "department": "MATH", + "number": 1160, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=231", + "created_at": "2026-05-13T15:31:00.912Z", + "updated_at": "2026-05-13T15:31:02.827Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 620, + "fields": { + "course_code": "MATH1560J", + "course_title": "Honors Calculus II", + "department": "MATH", + "number": 1560, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=232", + "created_at": "2026-05-13T15:31:00.916Z", + "updated_at": "2026-05-13T15:31:03.388Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 621, + "fields": { + "course_code": "MATH1860J", + "course_title": "Honors Mathematics II", + "department": "MATH", + "number": 1860, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=233", + "created_at": "2026-05-13T15:31:00.921Z", + "updated_at": "2026-05-13T15:31:03.397Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 622, + "fields": { + "course_code": "ENGL1000J", + "course_title": "Academic Writing I", + "department": "ENGL", + "number": 1000, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=234", + "created_at": "2026-05-13T15:31:00.925Z", + "updated_at": "2026-05-13T15:31:03.468Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 623, + "fields": { + "course_code": "CHN1020J", + "course_title": "Introduction to Chinese Culture", + "department": "CHN", + "number": 1020, + "course_credits": 2, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=235", + "created_at": "2026-05-13T15:31:00.931Z", + "updated_at": "2026-05-13T15:31:05.089Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 624, + "fields": { + "course_code": "CHEM2090J", + "course_title": "Chemistry", + "department": "CHEM", + "number": 2090, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=237", + "created_at": "2026-05-13T15:31:00.935Z", + "updated_at": "2026-05-13T15:31:03.445Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 625, + "fields": { + "course_code": "CHEM2100J", + "course_title": "Chemistry", + "department": "CHEM", + "number": 2100, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=238", + "created_at": "2026-05-13T15:31:00.940Z", + "updated_at": "2026-05-13T15:31:03.454Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 626, + "fields": { + "course_code": "CHEM2110J", + "course_title": "Chemistry Laboratory", + "department": "CHEM", + "number": 2110, + "course_credits": 1, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=239", + "created_at": "2026-05-13T15:31:00.944Z", + "updated_at": "2026-05-13T15:31:02.838Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 627, + "fields": { + "course_code": "MATH2030J", + "course_title": "Discrete Mathematics", + "department": "MATH", + "number": 2030, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=241", + "created_at": "2026-05-13T15:31:00.948Z", + "updated_at": "2026-05-13T15:31:04.497Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 628, + "fields": { + "course_code": "ECE2150J", + "course_title": "Introduction to Circuits", + "department": "ECE", + "number": 2150, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=242", + "created_at": "2026-05-13T15:31:00.952Z", + "updated_at": "2026-05-13T15:31:04.576Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 629, + "fields": { + "course_code": "ECE2160J", + "course_title": "Introduction to Signals and Systems", + "department": "ECE", + "number": 2160, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=243", + "created_at": "2026-05-13T15:31:00.957Z", + "updated_at": "2026-05-13T15:31:04.507Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 630, + "fields": { + "course_code": "ECE2300J", + "course_title": "Electromagnetics I", + "department": "ECE", + "number": 2300, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=244", + "created_at": "2026-05-13T15:31:00.961Z", + "updated_at": "2026-05-13T15:31:04.531Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 631, + "fields": { + "course_code": "ECE2700J", + "course_title": "Introduction to Logic Design", + "department": "ECE", + "number": 2700, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=245", + "created_at": "2026-05-13T15:31:00.965Z", + "updated_at": "2026-05-13T15:31:04.519Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 632, + "fields": { + "course_code": "ECE2800J", + "course_title": "Programming and Introductory Data Structures", + "department": "ECE", + "number": 2800, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=246", + "created_at": "2026-05-13T15:31:00.970Z", + "updated_at": "2026-05-13T15:31:04.543Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 633, + "fields": { + "course_code": "MSE2420J", + "course_title": "Physics of Materials", + "department": "MSE", + "number": 2420, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=248", + "created_at": "2026-05-13T15:31:00.975Z", + "updated_at": "2026-05-13T15:31:04.623Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 634, + "fields": { + "course_code": "MSE2500J", + "course_title": "Principles of Engineering Materials", + "department": "MSE", + "number": 2500, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=249", + "created_at": "2026-05-13T15:31:00.979Z", + "updated_at": "2026-05-13T15:31:03.654Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 635, + "fields": { + "course_code": "ME0801J", + "course_title": "Machineshop Training", + "department": "ME", + "number": 801, + "course_credits": 1, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=250", + "created_at": "2026-05-13T15:31:00.984Z", + "updated_at": "2026-05-13T15:31:02.915Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 636, + "fields": { + "course_code": "ME2110J", + "course_title": "Introduction to Solid Mechanics", + "department": "ME", + "number": 2110, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=251", + "created_at": "2026-05-13T15:31:00.988Z", + "updated_at": "2026-05-13T15:31:03.631Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 637, + "fields": { + "course_code": "ME2400J", + "course_title": "Introduction to Dynamics and Vibrations", + "department": "ME", + "number": 2400, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=253", + "created_at": "2026-05-13T15:31:00.993Z", + "updated_at": "2026-05-13T15:31:04.598Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 638, + "fields": { + "course_code": "ME2500J", + "course_title": "Design and Manufacturing I", + "department": "ME", + "number": 2500, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=254", + "created_at": "2026-05-13T15:31:00.997Z", + "updated_at": "2026-05-13T15:31:04.613Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 639, + "fields": { + "course_code": "PHYS2400J", + "course_title": "Physics II", + "department": "PHYS", + "number": 2400, + "course_credits": 0, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=255", + "created_at": "2026-05-13T15:31:01.001Z", + "updated_at": "2026-05-13T15:31:01.001Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 640, + "fields": { + "course_code": "PHYS2410J", + "course_title": "Physics Lab II", + "department": "PHYS", + "number": 2410, + "course_credits": 1, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=256", + "created_at": "2026-05-13T15:31:01.006Z", + "updated_at": "2026-05-13T15:31:03.550Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 641, + "fields": { + "course_code": "PHIL2020J", + "course_title": "Introduction to Philosophy", + "department": "PHIL", + "number": 2020, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=258", + "created_at": "2026-05-13T15:31:01.010Z", + "updated_at": "2026-05-13T15:31:01.010Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 642, + "fields": { + "course_code": "HIS2030J", + "course_title": "Food in Modern East Asian History", + "department": "HIS", + "number": 2030, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=259", + "created_at": "2026-05-13T15:31:01.015Z", + "updated_at": "2026-05-13T15:31:01.015Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 643, + "fields": { + "course_code": "HIS2040J", + "course_title": "Modern Asia", + "department": "HIS", + "number": 2040, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=260", + "created_at": "2026-05-13T15:31:01.020Z", + "updated_at": "2026-05-13T15:31:04.293Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 644, + "fields": { + "course_code": "ENGL2600J", + "course_title": "American Ways: US Culture", + "department": "ENGL", + "number": 2600, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=261", + "created_at": "2026-05-13T15:31:01.024Z", + "updated_at": "2026-05-13T15:31:01.024Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 645, + "fields": { + "course_code": "HIS2060J", + "course_title": "China in the Early Modern World", + "department": "HIS", + "number": 2060, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=262", + "created_at": "2026-05-13T15:31:01.029Z", + "updated_at": "2026-05-13T15:31:01.029Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 646, + "fields": { + "course_code": "BUS2080J", + "course_title": "Business and Natural Environment", + "department": "BUS", + "number": 2080, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=263", + "created_at": "2026-05-13T15:31:01.033Z", + "updated_at": "2026-05-13T15:31:01.033Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 647, + "fields": { + "course_code": "ENGL2400J", + "course_title": "Great Books in World Literature", + "department": "ENGL", + "number": 2400, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=265", + "created_at": "2026-05-13T15:31:01.038Z", + "updated_at": "2026-05-13T15:31:01.038Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 648, + "fields": { + "course_code": "ENGL2230J", + "course_title": "Arabian Nights in British Literature", + "department": "ENGL", + "number": 2230, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=266", + "created_at": "2026-05-13T15:31:01.043Z", + "updated_at": "2026-05-13T15:31:01.043Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 649, + "fields": { + "course_code": "ENGL2560J", + "course_title": "Film Art and History", + "department": "ENGL", + "number": 2560, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=267", + "created_at": "2026-05-13T15:31:01.047Z", + "updated_at": "2026-05-13T15:31:01.047Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 650, + "fields": { + "course_code": "HIS2380J", + "course_title": "British Empire and “Informal” Imperialism in the Nineteenth-Century", + "department": "HIS", + "number": 2380, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=268", + "created_at": "2026-05-13T15:31:01.052Z", + "updated_at": "2026-05-13T15:31:01.052Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 651, + "fields": { + "course_code": "ENGL2410J", + "course_title": "Comparative Literature: Fairy Tales", + "department": "ENGL", + "number": 2410, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=269", + "created_at": "2026-05-13T15:31:01.057Z", + "updated_at": "2026-05-13T15:31:01.057Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 652, + "fields": { + "course_code": "PHIL2420J", + "course_title": "Happiness and the Meaning of Life", + "department": "PHIL", + "number": 2420, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=270", + "created_at": "2026-05-13T15:31:01.062Z", + "updated_at": "2026-05-13T15:31:01.062Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 653, + "fields": { + "course_code": "ENGL2510J", + "course_title": "Introduction to Comics and Graphic Novels", + "department": "ENGL", + "number": 2510, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=271", + "created_at": "2026-05-13T15:31:01.067Z", + "updated_at": "2026-05-13T15:31:01.067Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 654, + "fields": { + "course_code": "CUL2530J", + "course_title": "Culture, Technology, and Silicon Valley", + "department": "CUL", + "number": 2530, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=272", + "created_at": "2026-05-13T15:31:01.072Z", + "updated_at": "2026-05-13T15:31:04.242Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 655, + "fields": { + "course_code": "HIS2580J", + "course_title": "The History of Modern China’s Foreign Relations", + "department": "HIS", + "number": 2580, + "course_credits": 0, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=273", + "created_at": "2026-05-13T15:31:01.077Z", + "updated_at": "2026-05-13T15:31:01.077Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 656, + "fields": { + "course_code": "HIS2590J", + "course_title": "Memory: A New Approach to China’s 20th Century History", + "department": "HIS", + "number": 2590, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=274", + "created_at": "2026-05-13T15:31:01.082Z", + "updated_at": "2026-05-13T15:31:01.082Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 657, + "fields": { + "course_code": "HIS2660J", + "course_title": "Introduction to Chinese Civilization", + "department": "HIS", + "number": 2660, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=275", + "created_at": "2026-05-13T15:31:01.086Z", + "updated_at": "2026-05-13T15:31:01.086Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 658, + "fields": { + "course_code": "PHIL2620J", + "course_title": "Introduction to the Philosophy of Religion", + "department": "PHIL", + "number": 2620, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=276", + "created_at": "2026-05-13T15:31:01.090Z", + "updated_at": "2026-05-13T15:31:01.090Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 659, + "fields": { + "course_code": "PHIL2650J", + "course_title": "Introduction to Chinese Philosophy: Understanding Contemporary through Ancient China", + "department": "PHIL", + "number": 2650, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=277", + "created_at": "2026-05-13T15:31:01.095Z", + "updated_at": "2026-05-13T15:31:01.095Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 660, + "fields": { + "course_code": "PHIL2750J", + "course_title": "The Western Mind in Revolution", + "department": "PHIL", + "number": 2750, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=278", + "created_at": "2026-05-13T15:31:01.099Z", + "updated_at": "2026-05-13T15:31:01.099Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 661, + "fields": { + "course_code": "ENGL2390J", + "course_title": "Home and Homeland in Asian American Literature", + "department": "ENGL", + "number": 2390, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=279", + "created_at": "2026-05-13T15:31:01.103Z", + "updated_at": "2026-05-13T15:31:01.103Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 662, + "fields": { + "course_code": "ENGL2450J", + "course_title": "The Otherworlds of Fantasy", + "department": "ENGL", + "number": 2450, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=280", + "created_at": "2026-05-13T15:31:01.108Z", + "updated_at": "2026-05-13T15:31:01.108Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 663, + "fields": { + "course_code": "MATH2140J", + "course_title": "Linear Algebra", + "department": "MATH", + "number": 2140, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=281", + "created_at": "2026-05-13T15:31:01.113Z", + "updated_at": "2026-05-13T15:31:04.565Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 664, + "fields": { + "course_code": "MATH2150J", + "course_title": "Calculus III", + "department": "MATH", + "number": 2150, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=282", + "created_at": "2026-05-13T15:31:01.117Z", + "updated_at": "2026-05-13T15:31:04.370Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 665, + "fields": { + "course_code": "MATH2160J", + "course_title": "Calculus IV", + "department": "MATH", + "number": 2160, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=283", + "created_at": "2026-05-13T15:31:01.122Z", + "updated_at": "2026-05-13T15:31:03.483Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 666, + "fields": { + "course_code": "MATH2550J", + "course_title": "Honors Calculus III", + "department": "MATH", + "number": 2550, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=284", + "created_at": "2026-05-13T15:31:01.127Z", + "updated_at": "2026-05-13T15:31:04.379Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 667, + "fields": { + "course_code": "MATH2560J", + "course_title": "Honors Calculus IV", + "department": "MATH", + "number": 2560, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=285", + "created_at": "2026-05-13T15:31:01.132Z", + "updated_at": "2026-05-13T15:31:03.493Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 668, + "fields": { + "course_code": "MATH2850J", + "course_title": "Honors Mathematics III", + "department": "MATH", + "number": 2850, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=286", + "created_at": "2026-05-13T15:31:01.136Z", + "updated_at": "2026-05-13T15:31:04.388Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 669, + "fields": { + "course_code": "MATH2860J", + "course_title": "Honors Mathematics IV", + "department": "MATH", + "number": 2860, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=287", + "created_at": "2026-05-13T15:31:01.140Z", + "updated_at": "2026-05-13T15:31:03.503Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 670, + "fields": { + "course_code": "ENGL2000J", + "course_title": "Academic Writing II", + "department": "ENGL", + "number": 2000, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=288", + "created_at": "2026-05-13T15:31:01.145Z", + "updated_at": "2026-05-13T15:31:02.793Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 671, + "fields": { + "course_code": "MSE4820J", + "course_title": "Principles of Materials Processing", + "department": "MSE", + "number": 4820, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=28863", + "created_at": "2026-05-13T15:31:01.149Z", + "updated_at": "2026-05-13T15:31:04.975Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 672, + "fields": { + "course_code": "ENGL2050J", + "course_title": "Creative Writing", + "department": "ENGL", + "number": 2050, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=289", + "created_at": "2026-05-13T15:31:01.154Z", + "updated_at": "2026-05-13T15:31:05.123Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 673, + "fields": { + "course_code": "ENGL2440J", + "course_title": "Introduction to Poetry", + "department": "ENGL", + "number": 2440, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=290", + "created_at": "2026-05-13T15:31:01.158Z", + "updated_at": "2026-05-13T15:31:01.158Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 674, + "fields": { + "course_code": "CHN2000J", + "course_title": "Comprehensive Chinese II", + "department": "CHN", + "number": 2000, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=291", + "created_at": "2026-05-13T15:31:01.163Z", + "updated_at": "2026-05-13T15:31:01.163Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 675, + "fields": { + "course_code": "ECE6601J", + "course_title": "Probability and Random Processes", + "department": "ECE", + "number": 6601, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=292", + "created_at": "2026-05-13T15:31:01.167Z", + "updated_at": "2026-05-13T15:31:01.167Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 676, + "fields": { + "course_code": "VE650", + "course_title": "Coding Theory", + "department": "VE", + "number": 650, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=293", + "created_at": "2026-05-13T15:31:01.172Z", + "updated_at": "2026-05-13T15:31:01.172Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 677, + "fields": { + "course_code": "ECE6202J", + "course_title": "Solid State Physics", + "department": "ECE", + "number": 6202, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=294", + "created_at": "2026-05-13T15:31:01.177Z", + "updated_at": "2026-05-13T15:31:01.177Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 678, + "fields": { + "course_code": "MSE6801J", + "course_title": "Selected Topics in Nanotechnology", + "department": "MSE", + "number": 6801, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=295", + "created_at": "2026-05-13T15:31:01.182Z", + "updated_at": "2026-05-13T15:31:01.182Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 679, + "fields": { + "course_code": "VE507", + "course_title": "Semiconductor Optoelectronic Materials", + "department": "VE", + "number": 507, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=296", + "created_at": "2026-05-13T15:31:01.186Z", + "updated_at": "2026-05-13T15:31:01.186Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 680, + "fields": { + "course_code": "ECE6301J", + "course_title": "Nonlinear & Ultrafast Optics", + "department": "ECE", + "number": 6301, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=297", + "created_at": "2026-05-13T15:31:01.191Z", + "updated_at": "2026-05-13T15:31:01.191Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 681, + "fields": { + "course_code": "ECE6201J", + "course_title": "Semiconductor Physics", + "department": "ECE", + "number": 6201, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=298", + "created_at": "2026-05-13T15:31:01.195Z", + "updated_at": "2026-05-13T15:31:01.195Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 682, + "fields": { + "course_code": "VE512", + "course_title": "Amorphous and Microcrystalline Semiconductor Thin Film Devices", + "department": "VE", + "number": 512, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=299", + "created_at": "2026-05-13T15:31:01.199Z", + "updated_at": "2026-05-13T15:31:01.199Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 683, + "fields": { + "course_code": "VE517", + "course_title": "Physical Processes in Plasmas", + "department": "VE", + "number": 517, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=301", + "created_at": "2026-05-13T15:31:01.204Z", + "updated_at": "2026-05-13T15:31:01.204Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 684, + "fields": { + "course_code": "VE521", + "course_title": "High Speed Transistors", + "department": "VE", + "number": 521, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=303", + "created_at": "2026-05-13T15:31:01.209Z", + "updated_at": "2026-05-13T15:31:01.209Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 685, + "fields": { + "course_code": "VE522", + "course_title": "Analog Integrated Circuits", + "department": "VE", + "number": 522, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=304", + "created_at": "2026-05-13T15:31:01.213Z", + "updated_at": "2026-05-13T15:31:01.213Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 686, + "fields": { + "course_code": "VE523", + "course_title": "Digital Integrated Technology", + "department": "VE", + "number": 523, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=305", + "created_at": "2026-05-13T15:31:01.218Z", + "updated_at": "2026-05-13T15:31:01.218Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 687, + "fields": { + "course_code": "VE525", + "course_title": "Advanced Solid State Microwave Circuits", + "department": "VE", + "number": 525, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=306", + "created_at": "2026-05-13T15:31:01.222Z", + "updated_at": "2026-05-13T15:31:01.222Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 688, + "fields": { + "course_code": "ECE6703J", + "course_title": "Computer-Aided Design of Integrated Circuits", + "department": "ECE", + "number": 6703, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=307", + "created_at": "2026-05-13T15:31:01.227Z", + "updated_at": "2026-05-13T15:31:01.227Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 689, + "fields": { + "course_code": "ECE6302J", + "course_title": "Electromagnetic Theory I", + "department": "ECE", + "number": 6302, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=308", + "created_at": "2026-05-13T15:31:01.232Z", + "updated_at": "2026-05-13T15:31:01.232Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 690, + "fields": { + "course_code": "VE531", + "course_title": "Antenna Theories and Design", + "department": "VE", + "number": 531, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=309", + "created_at": "2026-05-13T15:31:01.236Z", + "updated_at": "2026-05-13T15:31:01.236Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 691, + "fields": { + "course_code": "ECE6303J", + "course_title": "Optics and Photonics", + "department": "ECE", + "number": 6303, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=310", + "created_at": "2026-05-13T15:31:01.241Z", + "updated_at": "2026-05-13T15:31:01.241Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 692, + "fields": { + "course_code": "ECE6340J", + "course_title": "Optical Information Processing", + "department": "ECE", + "number": 6340, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=311", + "created_at": "2026-05-13T15:31:01.246Z", + "updated_at": "2026-05-13T15:31:01.246Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 693, + "fields": { + "course_code": "VE536", + "course_title": "Classical Statistical Optics", + "department": "VE", + "number": 536, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=312", + "created_at": "2026-05-13T15:31:01.250Z", + "updated_at": "2026-05-13T15:31:01.250Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 694, + "fields": { + "course_code": "ECE6305J", + "course_title": "Optical Waves in Crystals", + "department": "ECE", + "number": 6305, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=313", + "created_at": "2026-05-13T15:31:01.254Z", + "updated_at": "2026-05-13T15:31:01.254Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 695, + "fields": { + "course_code": "ECE6306J", + "course_title": "Lasers", + "department": "ECE", + "number": 6306, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=314", + "created_at": "2026-05-13T15:31:01.259Z", + "updated_at": "2026-05-13T15:31:01.259Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 696, + "fields": { + "course_code": "ECE6203J", + "course_title": "Applied Quantum Mechanics I", + "department": "ECE", + "number": 6203, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=315", + "created_at": "2026-05-13T15:31:01.264Z", + "updated_at": "2026-05-13T15:31:01.264Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 697, + "fields": { + "course_code": "VE541", + "course_title": "Applied Quantum Mechanics II", + "department": "VE", + "number": 541, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=316", + "created_at": "2026-05-13T15:31:01.268Z", + "updated_at": "2026-05-13T15:31:01.268Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 698, + "fields": { + "course_code": "ECE6603J", + "course_title": "Information Theory", + "department": "ECE", + "number": 6603, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=317", + "created_at": "2026-05-13T15:31:01.273Z", + "updated_at": "2026-05-13T15:31:01.273Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 699, + "fields": { + "course_code": "ECE6609J", + "course_title": "Matrix Methods for Signal Processing, Data Analysis and Machine Learning", + "department": "ECE", + "number": 6609, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=318", + "created_at": "2026-05-13T15:31:01.278Z", + "updated_at": "2026-05-13T15:31:01.278Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 700, + "fields": { + "course_code": "ECE6307J", + "course_title": "Fiber Optics and Biomedical Optics", + "department": "ECE", + "number": 6307, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=319", + "created_at": "2026-05-13T15:31:01.283Z", + "updated_at": "2026-05-13T15:31:01.283Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 701, + "fields": { + "course_code": "ECE6604J", + "course_title": "Introduction to Digital Communication and Coding", + "department": "ECE", + "number": 6604, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=320", + "created_at": "2026-05-13T15:31:01.289Z", + "updated_at": "2026-05-13T15:31:01.289Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 702, + "fields": { + "course_code": "VE555", + "course_title": "Digital Communication Theory", + "department": "VE", + "number": 555, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=321", + "created_at": "2026-05-13T15:31:01.294Z", + "updated_at": "2026-05-13T15:31:01.294Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 703, + "fields": { + "course_code": "ECE6605J", + "course_title": "Image Processing", + "department": "ECE", + "number": 6605, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=322", + "created_at": "2026-05-13T15:31:01.298Z", + "updated_at": "2026-05-13T15:31:01.298Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 704, + "fields": { + "course_code": "VE559", + "course_title": "Advanced Signal Processing", + "department": "VE", + "number": 559, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=323", + "created_at": "2026-05-13T15:31:01.303Z", + "updated_at": "2026-05-13T15:31:01.303Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 705, + "fields": { + "course_code": "ECE6607J", + "course_title": "Nonlinear Systems and Control", + "department": "ECE", + "number": 6607, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=325", + "created_at": "2026-05-13T15:31:01.308Z", + "updated_at": "2026-05-13T15:31:01.308Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 706, + "fields": { + "course_code": "VE570", + "course_title": "Parallel Computer Architecture", + "department": "VE", + "number": 570, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=326", + "created_at": "2026-05-13T15:31:01.312Z", + "updated_at": "2026-05-13T15:31:01.312Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 707, + "fields": { + "course_code": "VE571", + "course_title": "Principles of Real-Time Computing", + "department": "VE", + "number": 571, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=327", + "created_at": "2026-05-13T15:31:01.317Z", + "updated_at": "2026-05-13T15:31:01.317Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 708, + "fields": { + "course_code": "ECE6701J", + "course_title": "Methods and Tools for Big Data", + "department": "ECE", + "number": 6701, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=328", + "created_at": "2026-05-13T15:31:01.321Z", + "updated_at": "2026-05-13T15:31:01.321Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 709, + "fields": { + "course_code": "VE573", + "course_title": "Microarchitecture", + "department": "VE", + "number": 573, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=329", + "created_at": "2026-05-13T15:31:01.326Z", + "updated_at": "2026-05-13T15:31:01.326Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 710, + "fields": { + "course_code": "VE578", + "course_title": "Computer-Aided Design Verification of Digital Systems", + "department": "VE", + "number": 578, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=330", + "created_at": "2026-05-13T15:31:01.331Z", + "updated_at": "2026-05-13T15:31:01.331Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 711, + "fields": { + "course_code": "VE579", + "course_title": "Digital System Testing", + "department": "VE", + "number": 579, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=331", + "created_at": "2026-05-13T15:31:01.336Z", + "updated_at": "2026-05-13T15:31:01.336Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 712, + "fields": { + "course_code": "VE582", + "course_title": "Advanced Operating Systems", + "department": "VE", + "number": 582, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=332", + "created_at": "2026-05-13T15:31:01.341Z", + "updated_at": "2026-05-13T15:31:01.341Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 713, + "fields": { + "course_code": "ECE6704J", + "course_title": "Advanced Computer Networks", + "department": "ECE", + "number": 6704, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=333", + "created_at": "2026-05-13T15:31:01.345Z", + "updated_at": "2026-05-13T15:31:01.345Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 714, + "fields": { + "course_code": "VE587", + "course_title": "Parallel Computing", + "department": "VE", + "number": 587, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=334", + "created_at": "2026-05-13T15:31:01.350Z", + "updated_at": "2026-05-13T15:31:01.350Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 715, + "fields": { + "course_code": "VE588", + "course_title": "Computer and Network Security", + "department": "VE", + "number": 588, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=335", + "created_at": "2026-05-13T15:31:01.355Z", + "updated_at": "2026-05-13T15:31:01.355Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 716, + "fields": { + "course_code": "ECE7608J", + "course_title": "Data Networks", + "department": "ECE", + "number": 7608, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=336", + "created_at": "2026-05-13T15:31:01.360Z", + "updated_at": "2026-05-13T15:31:01.360Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 717, + "fields": { + "course_code": "ECE6702J", + "course_title": "Problem Solving with AI Techniques", + "department": "ECE", + "number": 6702, + "course_credits": 0, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=337", + "created_at": "2026-05-13T15:31:01.365Z", + "updated_at": "2026-05-13T15:31:01.365Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 718, + "fields": { + "course_code": "VE595", + "course_title": "Master Thesis", + "department": "VE", + "number": 595, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=338", + "created_at": "2026-05-13T15:31:01.370Z", + "updated_at": "2026-05-13T15:31:01.370Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 719, + "fields": { + "course_code": "VG500", + "course_title": "Technical Communication", + "department": "VG", + "number": 500, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=339", + "created_at": "2026-05-13T15:31:01.375Z", + "updated_at": "2026-05-13T15:31:01.375Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 720, + "fields": { + "course_code": "ME6110J", + "course_title": "Constitutive Modeling and Constitutive Updates of Solids", + "department": "ME", + "number": 6110, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=33987", + "created_at": "2026-05-13T15:31:01.380Z", + "updated_at": "2026-05-13T15:31:01.380Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 721, + "fields": { + "course_code": "ECE6209J", + "course_title": "Principles of Semiconductor Devices", + "department": "ECE", + "number": 6209, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=33988", + "created_at": "2026-05-13T15:31:01.384Z", + "updated_at": "2026-05-13T15:31:01.384Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 722, + "fields": { + "course_code": "ECE7606J", + "course_title": "Stochastic Control and Reinforcement Learning", + "department": "ECE", + "number": 7606, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=33989", + "created_at": "2026-05-13T15:31:01.389Z", + "updated_at": "2026-05-13T15:31:01.389Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 723, + "fields": { + "course_code": "ECE6608J", + "course_title": "Statistical Signal Processing", + "department": "ECE", + "number": 6608, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=33990", + "created_at": "2026-05-13T15:31:01.393Z", + "updated_at": "2026-05-13T15:31:01.393Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 724, + "fields": { + "course_code": "VE581", + "course_title": "Convolutional Neural Networks for Visual Recognition", + "department": "VE", + "number": 581, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=33991", + "created_at": "2026-05-13T15:31:01.398Z", + "updated_at": "2026-05-13T15:31:01.398Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 725, + "fields": { + "course_code": "ECE6705J", + "course_title": "Deep Reinforcement Learning", + "department": "ECE", + "number": 6705, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=33992", + "created_at": "2026-05-13T15:31:01.403Z", + "updated_at": "2026-05-13T15:31:01.403Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 726, + "fields": { + "course_code": "VM566", + "course_title": "DYNAMICS AND CONTROL OF CONNECTED VEHICLES", + "department": "VM", + "number": 566, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=33994", + "created_at": "2026-05-13T15:31:01.407Z", + "updated_at": "2026-05-13T15:31:01.407Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 727, + "fields": { + "course_code": "MSE6501J", + "course_title": "Machine Learning in Molecular and Materials Sciences", + "department": "MSE", + "number": 6501, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=33995", + "created_at": "2026-05-13T15:31:01.412Z", + "updated_at": "2026-05-13T15:31:03.030Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 728, + "fields": { + "course_code": "ENGR6001J", + "course_title": "Introduction to Graduate Technical Communication", + "department": "ENGR", + "number": 6001, + "course_credits": 1, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=33996", + "created_at": "2026-05-13T15:31:01.417Z", + "updated_at": "2026-05-13T15:31:01.417Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 729, + "fields": { + "course_code": "ENGR6002J", + "course_title": "Technical Discourse", + "department": "ENGR", + "number": 6002, + "course_credits": 1, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=33998", + "created_at": "2026-05-13T15:31:01.421Z", + "updated_at": "2026-05-13T15:31:01.421Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 730, + "fields": { + "course_code": "ENGR6003J", + "course_title": "Graduate Thesis Writing", + "department": "ENGR", + "number": 6003, + "course_credits": 1, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=33999", + "created_at": "2026-05-13T15:31:01.426Z", + "updated_at": "2026-05-13T15:31:01.426Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 731, + "fields": { + "course_code": "ME6104J", + "course_title": "Finite Element Methods", + "department": "ME", + "number": 6104, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=340", + "created_at": "2026-05-13T15:31:01.431Z", + "updated_at": "2026-05-13T15:31:01.431Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 732, + "fields": { + "course_code": "MSE6601J", + "course_title": "Introduction to Soft Matter Physics", + "department": "MSE", + "number": 6601, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=342", + "created_at": "2026-05-13T15:31:01.435Z", + "updated_at": "2026-05-13T15:31:01.435Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 733, + "fields": { + "course_code": "MSE6602J", + "course_title": "Battery Materials: Fundamentals and Applications", + "department": "MSE", + "number": 6602, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=343", + "created_at": "2026-05-13T15:31:01.440Z", + "updated_at": "2026-05-13T15:31:01.440Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 734, + "fields": { + "course_code": "VM510", + "course_title": "Advanced Structural Analysis", + "department": "VM", + "number": 510, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=344", + "created_at": "2026-05-13T15:31:01.445Z", + "updated_at": "2026-05-13T15:31:01.445Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 735, + "fields": { + "course_code": "ME6106J", + "course_title": "Foundation of Solid Mechanics", + "department": "ME", + "number": 6106, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=345", + "created_at": "2026-05-13T15:31:01.450Z", + "updated_at": "2026-05-13T15:31:01.450Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 736, + "fields": { + "course_code": "ME6103J", + "course_title": "Theory of Elasticity", + "department": "ME", + "number": 6103, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=346", + "created_at": "2026-05-13T15:31:01.455Z", + "updated_at": "2026-05-13T15:31:01.455Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 737, + "fields": { + "course_code": "ME6101J", + "course_title": "Continuum Mechanics", + "department": "ME", + "number": 6101, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=347", + "created_at": "2026-05-13T15:31:01.460Z", + "updated_at": "2026-05-13T15:31:01.460Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 738, + "fields": { + "course_code": "ME6107J", + "course_title": "Non-Linear Fracture Mechanics", + "department": "ME", + "number": 6107, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=348", + "created_at": "2026-05-13T15:31:01.465Z", + "updated_at": "2026-05-13T15:31:01.465Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 739, + "fields": { + "course_code": "MSE6201J", + "course_title": "Electrical, Optical and Magnetic Properties of Materials", + "department": "MSE", + "number": 6201, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=349", + "created_at": "2026-05-13T15:31:01.469Z", + "updated_at": "2026-05-13T15:31:01.469Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 740, + "fields": { + "course_code": "VM516", + "course_title": "Energy Methods in Solid Mechanics", + "department": "VM", + "number": 516, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=350", + "created_at": "2026-05-13T15:31:01.475Z", + "updated_at": "2026-05-13T15:31:01.475Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 741, + "fields": { + "course_code": "MSE6203J", + "course_title": "Mechanical Properties of Polymers", + "department": "MSE", + "number": 6203, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=351", + "created_at": "2026-05-13T15:31:01.480Z", + "updated_at": "2026-05-13T15:31:01.480Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 742, + "fields": { + "course_code": "ME6102J", + "course_title": "Advanced Mechanics of Composite Materials", + "department": "ME", + "number": 6102, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=352", + "created_at": "2026-05-13T15:31:01.484Z", + "updated_at": "2026-05-13T15:31:01.484Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 743, + "fields": { + "course_code": "VM519", + "course_title": "Theory of Plasticity", + "department": "VM", + "number": 519, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=353", + "created_at": "2026-05-13T15:31:01.489Z", + "updated_at": "2026-05-13T15:31:01.489Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 744, + "fields": { + "course_code": "ME6201J", + "course_title": "Advanced Fluid Mechanics", + "department": "ME", + "number": 6201, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=354", + "created_at": "2026-05-13T15:31:01.493Z", + "updated_at": "2026-05-13T15:31:01.493Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 745, + "fields": { + "course_code": "VM521", + "course_title": "Compressible Flow", + "department": "VM", + "number": 521, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=355", + "created_at": "2026-05-13T15:31:01.498Z", + "updated_at": "2026-05-13T15:31:01.498Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 746, + "fields": { + "course_code": "ME6202J", + "course_title": "Computational Fluid Dynamics", + "department": "ME", + "number": 6202, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=356", + "created_at": "2026-05-13T15:31:01.503Z", + "updated_at": "2026-05-13T15:31:01.503Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 747, + "fields": { + "course_code": "ME6203J", + "course_title": "Turbulence", + "department": "ME", + "number": 6203, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=357", + "created_at": "2026-05-13T15:31:01.508Z", + "updated_at": "2026-05-13T15:31:01.508Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 748, + "fields": { + "course_code": "VM527", + "course_title": "Multiphase Flow", + "department": "VM", + "number": 527, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=358", + "created_at": "2026-05-13T15:31:01.513Z", + "updated_at": "2026-05-13T15:31:01.513Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 749, + "fields": { + "course_code": "VM528", + "course_title": "Experimental Methods in Multiphase Flow", + "department": "VM", + "number": 528, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=359", + "created_at": "2026-05-13T15:31:01.518Z", + "updated_at": "2026-05-13T15:31:01.518Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 750, + "fields": { + "course_code": "ME6301J", + "course_title": "Advanced Heat Transfer", + "department": "ME", + "number": 6301, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=360", + "created_at": "2026-05-13T15:31:01.523Z", + "updated_at": "2026-05-13T15:31:01.523Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 751, + "fields": { + "course_code": "VM531", + "course_title": "Advanced Conduction and Radiation Heat Transfer", + "department": "VM", + "number": 531, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=361", + "created_at": "2026-05-13T15:31:01.528Z", + "updated_at": "2026-05-13T15:31:01.528Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 752, + "fields": { + "course_code": "VM532", + "course_title": "Advanced Convection", + "department": "VM", + "number": 532, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=362", + "created_at": "2026-05-13T15:31:01.532Z", + "updated_at": "2026-05-13T15:31:01.532Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 753, + "fields": { + "course_code": "VM535", + "course_title": "Thermodynamics III", + "department": "VM", + "number": 535, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=363", + "created_at": "2026-05-13T15:31:01.537Z", + "updated_at": "2026-05-13T15:31:01.537Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 754, + "fields": { + "course_code": "VM540", + "course_title": "Advanced Methods of Vibration Analysis", + "department": "VM", + "number": 540, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=364", + "created_at": "2026-05-13T15:31:01.542Z", + "updated_at": "2026-05-13T15:31:01.542Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 755, + "fields": { + "course_code": "ME6402J", + "course_title": "Mechanical Vibrations", + "department": "ME", + "number": 6402, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=365", + "created_at": "2026-05-13T15:31:01.547Z", + "updated_at": "2026-05-13T15:31:01.547Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 756, + "fields": { + "course_code": "VM543", + "course_title": "Analytical Dynamics", + "department": "VM", + "number": 543, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=366", + "created_at": "2026-05-13T15:31:01.552Z", + "updated_at": "2026-05-13T15:31:01.552Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 757, + "fields": { + "course_code": "ME6501J", + "course_title": "Mechanisms Design", + "department": "ME", + "number": 6501, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=373", + "created_at": "2026-05-13T15:31:01.557Z", + "updated_at": "2026-05-13T15:31:01.557Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 758, + "fields": { + "course_code": "ME6601J", + "course_title": "Mechatronic System Design", + "department": "ME", + "number": 6601, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=374", + "created_at": "2026-05-13T15:31:01.562Z", + "updated_at": "2026-05-13T15:31:01.562Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 759, + "fields": { + "course_code": "ME6602J", + "course_title": "Microelectromechanical Systems", + "department": "ME", + "number": 6602, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=375", + "created_at": "2026-05-13T15:31:01.567Z", + "updated_at": "2026-05-13T15:31:01.567Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 760, + "fields": { + "course_code": "VM554", + "course_title": "Computer Aided Design Methods", + "department": "VM", + "number": 554, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=376", + "created_at": "2026-05-13T15:31:01.572Z", + "updated_at": "2026-05-13T15:31:01.572Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 761, + "fields": { + "course_code": "ME6503J", + "course_title": "Engineering Optimization", + "department": "ME", + "number": 6503, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=377", + "created_at": "2026-05-13T15:31:01.577Z", + "updated_at": "2026-05-13T15:31:01.577Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 762, + "fields": { + "course_code": "ECE3110J", + "course_title": "Electronic Circuits", + "department": "ECE", + "number": 3110, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=387", + "created_at": "2026-05-13T15:31:01.581Z", + "updated_at": "2026-05-13T15:31:04.664Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 763, + "fields": { + "course_code": "ECE3120J", + "course_title": "Digital Integrated Circuits", + "department": "ECE", + "number": 3120, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=388", + "created_at": "2026-05-13T15:31:01.586Z", + "updated_at": "2026-05-13T15:31:04.673Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 764, + "fields": { + "course_code": "ECE3200J", + "course_title": "Introduction to Semiconductor Devices", + "department": "ECE", + "number": 3200, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=389", + "created_at": "2026-05-13T15:31:01.591Z", + "updated_at": "2026-05-13T15:31:03.743Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 765, + "fields": { + "course_code": "ECE3300J", + "course_title": "Electromagnetics II", + "department": "ECE", + "number": 3300, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=390", + "created_at": "2026-05-13T15:31:01.595Z", + "updated_at": "2026-05-13T15:31:01.595Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 766, + "fields": { + "course_code": "ECE3340J", + "course_title": "Principles of Optics", + "department": "ECE", + "number": 3340, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=391", + "created_at": "2026-05-13T15:31:01.600Z", + "updated_at": "2026-05-13T15:31:03.755Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 767, + "fields": { + "course_code": "ECE3700J", + "course_title": "Introduction to Computer Organization", + "department": "ECE", + "number": 3700, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=393", + "created_at": "2026-05-13T15:31:01.605Z", + "updated_at": "2026-05-13T15:31:04.683Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 768, + "fields": { + "course_code": "ECE3730J", + "course_title": "Design of Microprocessor Based Systems", + "department": "ECE", + "number": 3730, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=394", + "created_at": "2026-05-13T15:31:01.610Z", + "updated_at": "2026-05-13T15:31:04.692Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 769, + "fields": { + "course_code": "MSE3300J", + "course_title": "Thermodynamics of Materials", + "department": "MSE", + "number": 3300, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=395", + "created_at": "2026-05-13T15:31:01.614Z", + "updated_at": "2026-05-13T15:31:03.864Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 770, + "fields": { + "course_code": "MSE3350J", + "course_title": "Kinetics and Transitions in Material Engineering", + "department": "MSE", + "number": 3350, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=396", + "created_at": "2026-05-13T15:31:01.619Z", + "updated_at": "2026-05-13T15:31:04.791Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 771, + "fields": { + "course_code": "MSE3500J", + "course_title": "Structure of Materials", + "department": "MSE", + "number": 3500, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=397", + "created_at": "2026-05-13T15:31:01.624Z", + "updated_at": "2026-05-13T15:31:04.801Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 772, + "fields": { + "course_code": "MSE3600J", + "course_title": "Materials Lab I", + "department": "MSE", + "number": 3600, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=398", + "created_at": "2026-05-13T15:31:01.628Z", + "updated_at": "2026-05-13T15:31:03.878Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 773, + "fields": { + "course_code": "MSE3650J", + "course_title": "Materials Lab II", + "department": "MSE", + "number": 3650, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=399", + "created_at": "2026-05-13T15:31:01.633Z", + "updated_at": "2026-05-13T15:31:04.812Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 774, + "fields": { + "course_code": "ME3050J", + "course_title": "Introduction to Finite Elements in Mechanical Engineering", + "department": "ME", + "number": 3050, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=400", + "created_at": "2026-05-13T15:31:01.637Z", + "updated_at": "2026-05-13T15:31:01.638Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 775, + "fields": { + "course_code": "ME3110J", + "course_title": "Strength of Materials", + "department": "ME", + "number": 3110, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=401", + "created_at": "2026-05-13T15:31:01.642Z", + "updated_at": "2026-05-13T15:31:01.642Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 776, + "fields": { + "course_code": "ME3350J", + "course_title": "Heat Transfer", + "department": "ME", + "number": 3350, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=403", + "created_at": "2026-05-13T15:31:01.646Z", + "updated_at": "2026-05-13T15:31:04.725Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 777, + "fields": { + "course_code": "ME3500J", + "course_title": "Design and Manufacturing II", + "department": "ME", + "number": 3500, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=404", + "created_at": "2026-05-13T15:31:01.651Z", + "updated_at": "2026-05-13T15:31:04.738Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 778, + "fields": { + "course_code": "ME3600J", + "course_title": "Modeling, Analysis and Control of Dynamic Systems", + "department": "ME", + "number": 3600, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=405", + "created_at": "2026-05-13T15:31:01.656Z", + "updated_at": "2026-05-13T15:31:04.750Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 779, + "fields": { + "course_code": "ME3820J", + "course_title": "Mechanical Behavior of Materials", + "department": "ME", + "number": 3820, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=406", + "created_at": "2026-05-13T15:31:01.661Z", + "updated_at": "2026-05-13T15:31:04.759Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 780, + "fields": { + "course_code": "ENGR3840J", + "course_title": "Engineering Project Management", + "department": "ENGR", + "number": 3840, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=407", + "created_at": "2026-05-13T15:31:01.666Z", + "updated_at": "2026-05-13T15:31:01.666Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 781, + "fields": { + "course_code": "ME3950J", + "course_title": "Mechanical Engineering Laboratory I", + "department": "ME", + "number": 3950, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=408", + "created_at": "2026-05-13T15:31:01.670Z", + "updated_at": "2026-05-13T15:31:04.768Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 782, + "fields": { + "course_code": "ENGL3480J", + "course_title": "Modern PhysicsScience Fiction", + "department": "ENGL", + "number": 3480, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=409", + "created_at": "2026-05-13T15:31:01.675Z", + "updated_at": "2026-05-13T15:31:01.675Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 783, + "fields": { + "course_code": "ENGL3300J", + "course_title": "American Short Fiction", + "department": "ENGL", + "number": 3300, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=410", + "created_at": "2026-05-13T15:31:01.679Z", + "updated_at": "2026-05-13T15:31:01.679Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 784, + "fields": { + "course_code": "ART334", + "course_title": "Performance Technology", + "department": "ART", + "number": 334, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=411", + "created_at": "2026-05-13T15:31:01.684Z", + "updated_at": "2026-05-13T15:31:01.684Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 785, + "fields": { + "course_code": "ENGL3240J", + "course_title": "Shakespeare Studies", + "department": "ENGL", + "number": 3240, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=412", + "created_at": "2026-05-13T15:31:01.688Z", + "updated_at": "2026-05-13T15:31:01.688Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 786, + "fields": { + "course_code": "CUL3530J", + "course_title": "American Culture", + "department": "CUL", + "number": 3530, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=413", + "created_at": "2026-05-13T15:31:01.693Z", + "updated_at": "2026-05-13T15:31:01.693Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 787, + "fields": { + "course_code": "PHIL3550J", + "course_title": "Contemporary Moral Problems", + "department": "PHIL", + "number": 3550, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=414", + "created_at": "2026-05-13T15:31:01.698Z", + "updated_at": "2026-05-13T15:31:01.698Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 788, + "fields": { + "course_code": "CHN3630J", + "course_title": "Chinese Society in Contemporary Chinese Cinema", + "department": "CHN", + "number": 3630, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=415", + "created_at": "2026-05-13T15:31:01.702Z", + "updated_at": "2026-05-13T15:31:03.155Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 789, + "fields": { + "course_code": "ENGL3440J", + "course_title": "Literature and the Environment", + "department": "ENGL", + "number": 3440, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=416", + "created_at": "2026-05-13T15:31:01.707Z", + "updated_at": "2026-05-13T15:31:01.707Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 790, + "fields": { + "course_code": "BUS3670J", + "course_title": "Global Enterprise and Sustainable Development", + "department": "BUS", + "number": 3670, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=417", + "created_at": "2026-05-13T15:31:01.711Z", + "updated_at": "2026-05-13T15:31:01.711Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 791, + "fields": { + "course_code": "POL3690J", + "course_title": "Politics of International Economic Relations", + "department": "POL", + "number": 3690, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=418", + "created_at": "2026-05-13T15:31:01.716Z", + "updated_at": "2026-05-13T15:31:03.354Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 792, + "fields": { + "course_code": "POL3800J", + "course_title": "Topics in Asian Studies: Political and Economic Development in Pacific Asia", + "department": "POL", + "number": 3800, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=419", + "created_at": "2026-05-13T15:31:01.721Z", + "updated_at": "2026-05-13T15:31:01.721Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 793, + "fields": { + "course_code": "BUS3515J", + "course_title": "Advanced Branding and Brand Management", + "department": "BUS", + "number": 3515, + "course_credits": 2, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=420", + "created_at": "2026-05-13T15:31:01.725Z", + "updated_at": "2026-05-13T15:31:01.725Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 794, + "fields": { + "course_code": "ENGL3420J", + "course_title": "Literary Translation", + "department": "ENGL", + "number": 3420, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=421", + "created_at": "2026-05-13T15:31:01.729Z", + "updated_at": "2026-05-13T15:31:01.729Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 795, + "fields": { + "course_code": "ECE4010J", + "course_title": "Probabilistic Methods in Engineering", + "department": "ECE", + "number": 4010, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=422", + "created_at": "2026-05-13T15:31:01.734Z", + "updated_at": "2026-05-13T15:31:04.703Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 796, + "fields": { + "course_code": "ECE4110J", + "course_title": "Microwave Circuits I", + "department": "ECE", + "number": 4110, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=424", + "created_at": "2026-05-13T15:31:01.739Z", + "updated_at": "2026-05-13T15:31:01.739Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 797, + "fields": { + "course_code": "ECE4130J", + "course_title": "Monolithic Amplifier Circuits", + "department": "ECE", + "number": 4130, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=77552", + "created_at": "2026-05-13T15:31:01.743Z", + "updated_at": "2026-05-13T15:31:02.363Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 798, + "fields": { + "course_code": "ECE4140J", + "course_title": "Introduction to MEMS", + "department": "ECE", + "number": 4140, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=427", + "created_at": "2026-05-13T15:31:01.747Z", + "updated_at": "2026-05-13T15:31:01.747Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 799, + "fields": { + "course_code": "ECE4200J", + "course_title": "Physical Principles Underlying Smart Devices", + "department": "ECE", + "number": 4200, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=428", + "created_at": "2026-05-13T15:31:01.752Z", + "updated_at": "2026-05-13T15:31:01.752Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 800, + "fields": { + "course_code": "ECE4270J", + "course_title": "VLSI Design I", + "department": "ECE", + "number": 4270, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=429", + "created_at": "2026-05-13T15:31:01.756Z", + "updated_at": "2026-05-13T15:31:04.878Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 801, + "fields": { + "course_code": "ECE4340J", + "course_title": "Principles of Photonics", + "department": "ECE", + "number": 4340, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=430", + "created_at": "2026-05-13T15:31:01.760Z", + "updated_at": "2026-05-13T15:31:04.888Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 802, + "fields": { + "course_code": "ECE4380J", + "course_title": "Advanced Lasers and Optics Laboratory", + "department": "ECE", + "number": 4380, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=431", + "created_at": "2026-05-13T15:31:01.765Z", + "updated_at": "2026-05-13T15:31:01.765Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 803, + "fields": { + "course_code": "ECE4411J", + "course_title": "Mobile Applications for Entrepreneurs", + "department": "ECE", + "number": 4411, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=432", + "created_at": "2026-05-13T15:31:01.769Z", + "updated_at": "2026-05-13T15:31:01.769Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 804, + "fields": { + "course_code": "ECE4500J", + "course_title": "Capstone Design", + "department": "ECE", + "number": 4500, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=433", + "created_at": "2026-05-13T15:31:01.773Z", + "updated_at": "2026-05-13T15:31:03.902Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 805, + "fields": { + "course_code": "ECE4550J", + "course_title": "Digital Communication Signals and Systems", + "department": "ECE", + "number": 4550, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=436", + "created_at": "2026-05-13T15:31:01.778Z", + "updated_at": "2026-05-13T15:31:03.809Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 806, + "fields": { + "course_code": "ECE4580J", + "course_title": "Biomedical Instrumentation and Design", + "department": "ECE", + "number": 4580, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=437", + "created_at": "2026-05-13T15:31:01.782Z", + "updated_at": "2026-05-13T15:31:01.782Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 807, + "fields": { + "course_code": "ECE4600J", + "course_title": "Control Systems Analysis and Design", + "department": "ECE", + "number": 4600, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=438", + "created_at": "2026-05-13T15:31:01.786Z", + "updated_at": "2026-05-13T15:31:03.828Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 808, + "fields": { + "course_code": "ECE4700J", + "course_title": "Computer Architecture", + "department": "ECE", + "number": 4700, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=440", + "created_at": "2026-05-13T15:31:01.791Z", + "updated_at": "2026-05-13T15:31:04.907Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 809, + "fields": { + "course_code": "ECE4750J", + "course_title": "Introduction to Cryptography", + "department": "ECE", + "number": 4750, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=441", + "created_at": "2026-05-13T15:31:01.795Z", + "updated_at": "2026-05-13T15:31:04.935Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 810, + "fields": { + "course_code": "ECE4770J", + "course_title": "Introduction to Algorithms", + "department": "ECE", + "number": 4770, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=442", + "created_at": "2026-05-13T15:31:01.800Z", + "updated_at": "2026-05-13T15:31:03.949Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 811, + "fields": { + "course_code": "ECE4820J", + "course_title": "Introduction to Operating Systems", + "department": "ECE", + "number": 4820, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=444", + "created_at": "2026-05-13T15:31:01.804Z", + "updated_at": "2026-05-13T15:31:03.971Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 812, + "fields": { + "course_code": "ECE4830J", + "course_title": "Compiler Construction", + "department": "ECE", + "number": 4830, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=445", + "created_at": "2026-05-13T15:31:01.808Z", + "updated_at": "2026-05-13T15:31:01.808Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 813, + "fields": { + "course_code": "ECE4760J", + "course_title": "Data Mining", + "department": "ECE", + "number": 4760, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=446", + "created_at": "2026-05-13T15:31:01.813Z", + "updated_at": "2026-05-13T15:31:04.944Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 814, + "fields": { + "course_code": "ECE4870J", + "course_title": "Interactive Computer Graphics", + "department": "ECE", + "number": 4870, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=447", + "created_at": "2026-05-13T15:31:01.817Z", + "updated_at": "2026-05-13T15:31:01.817Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 815, + "fields": { + "course_code": "ECE4761J", + "course_title": "Data Mining and Machine Learning", + "department": "ECE", + "number": 4761, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=448", + "created_at": "2026-05-13T15:31:01.821Z", + "updated_at": "2026-05-13T15:31:01.821Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 816, + "fields": { + "course_code": "ECE4890J", + "course_title": "Computer Networks", + "department": "ECE", + "number": 4890, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=449", + "created_at": "2026-05-13T15:31:01.825Z", + "updated_at": "2026-05-13T15:31:01.825Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 817, + "fields": { + "course_code": "ECE4900J", + "course_title": "Undergraduate Research", + "department": "ECE", + "number": 4900, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=450", + "created_at": "2026-05-13T15:31:01.830Z", + "updated_at": "2026-05-13T15:31:01.830Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 818, + "fields": { + "course_code": "ECE4920J", + "course_title": "Introduction to Artificial Intelligence", + "department": "ECE", + "number": 4920, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=451", + "created_at": "2026-05-13T15:31:01.834Z", + "updated_at": "2026-05-13T15:31:01.834Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 819, + "fields": { + "course_code": "ENGR4960J", + "course_title": "Professional Ethics", + "department": "ENGR", + "number": 4960, + "course_credits": 2, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=454", + "created_at": "2026-05-13T15:31:01.838Z", + "updated_at": "2026-05-13T15:31:04.839Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 820, + "fields": { + "course_code": "MSE4800J", + "course_title": "Materials and Engineering Design", + "department": "MSE", + "number": 4800, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=455", + "created_at": "2026-05-13T15:31:01.843Z", + "updated_at": "2026-05-13T15:31:01.843Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 821, + "fields": { + "course_code": "MSE4890J", + "course_title": "Materials Processing Design", + "department": "MSE", + "number": 4890, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=456", + "created_at": "2026-05-13T15:31:01.847Z", + "updated_at": "2026-05-13T15:31:01.847Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 822, + "fields": { + "course_code": "ME4120J", + "course_title": "Advanced Strength of Materials", + "department": "ME", + "number": 4120, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=457", + "created_at": "2026-05-13T15:31:01.851Z", + "updated_at": "2026-05-13T15:31:01.851Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 823, + "fields": { + "course_code": "ME4180J", + "course_title": "Mechanics of Composite and Microstructured Media", + "department": "ME", + "number": 4180, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=458", + "created_at": "2026-05-13T15:31:01.856Z", + "updated_at": "2026-05-13T15:31:01.856Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 824, + "fields": { + "course_code": "ME4210J", + "course_title": "Thermal-Fluids Systems Design", + "department": "ME", + "number": 4210, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=459", + "created_at": "2026-05-13T15:31:01.860Z", + "updated_at": "2026-05-13T15:31:01.860Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 825, + "fields": { + "course_code": "ME4320J", + "course_title": "Combustion", + "department": "ME", + "number": 4320, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=460", + "created_at": "2026-05-13T15:31:01.865Z", + "updated_at": "2026-05-13T15:31:04.059Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 826, + "fields": { + "course_code": "ME4330J", + "course_title": "Advanced Energy Solution", + "department": "ME", + "number": 4330, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=461", + "created_at": "2026-05-13T15:31:01.869Z", + "updated_at": "2026-05-13T15:31:01.869Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 827, + "fields": { + "course_code": "ME4340J", + "course_title": "Materials for Energy Conversion", + "department": "ME", + "number": 4340, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=462", + "created_at": "2026-05-13T15:31:01.873Z", + "updated_at": "2026-05-13T15:31:01.873Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 828, + "fields": { + "course_code": "ME4400J", + "course_title": "Intermediate Dynamics and Vibration", + "department": "ME", + "number": 4400, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=463", + "created_at": "2026-05-13T15:31:01.878Z", + "updated_at": "2026-05-13T15:31:01.878Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 829, + "fields": { + "course_code": "ME4500J", + "course_title": "Design and Manufacturing III", + "department": "ME", + "number": 4500, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=464", + "created_at": "2026-05-13T15:31:01.882Z", + "updated_at": "2026-05-13T15:31:04.821Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 830, + "fields": { + "course_code": "ME4520J", + "course_title": "Design for Manufacturability", + "department": "ME", + "number": 4520, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=465", + "created_at": "2026-05-13T15:31:01.886Z", + "updated_at": "2026-05-13T15:31:01.886Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 831, + "fields": { + "course_code": "ME4580J", + "course_title": "Automotive Engineering", + "department": "ME", + "number": 4580, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=466", + "created_at": "2026-05-13T15:31:01.891Z", + "updated_at": "2026-05-13T15:31:04.071Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 832, + "fields": { + "course_code": "ME4610J", + "course_title": "Automatic Control", + "department": "ME", + "number": 4610, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=467", + "created_at": "2026-05-13T15:31:01.896Z", + "updated_at": "2026-05-13T15:31:04.083Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 833, + "fields": { + "course_code": "ME4670J", + "course_title": "Introduction to Robotics", + "department": "ME", + "number": 4670, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=469", + "created_at": "2026-05-13T15:31:01.900Z", + "updated_at": "2026-05-13T15:31:04.095Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 834, + "fields": { + "course_code": "ME4810J", + "course_title": "Manufacturing Processes", + "department": "ME", + "number": 4810, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=470", + "created_at": "2026-05-13T15:31:01.905Z", + "updated_at": "2026-05-13T15:31:01.905Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 835, + "fields": { + "course_code": "ME4820J", + "course_title": "Machining Process", + "department": "ME", + "number": 4820, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=471", + "created_at": "2026-05-13T15:31:01.909Z", + "updated_at": "2026-05-13T15:31:01.909Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 836, + "fields": { + "course_code": "ME4900J", + "course_title": "Undergraduate Research", + "department": "ME", + "number": 4900, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=472", + "created_at": "2026-05-13T15:31:01.914Z", + "updated_at": "2026-05-13T15:31:01.914Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 837, + "fields": { + "course_code": "ME4950J", + "course_title": "Mechanical Engineering Laboratory II", + "department": "ME", + "number": 4950, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=473", + "created_at": "2026-05-13T15:31:01.918Z", + "updated_at": "2026-05-13T15:31:04.780Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 838, + "fields": { + "course_code": "MATH4170J", + "course_title": "Linear Algebra", + "department": "MATH", + "number": 4170, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=475", + "created_at": "2026-05-13T15:31:01.922Z", + "updated_at": "2026-05-13T15:31:01.922Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 839, + "fields": { + "course_code": "MATH4540J", + "course_title": "Boundary Value Problems for Partial Differential Equations", + "department": "MATH", + "number": 4540, + "course_credits": 0, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=476", + "created_at": "2026-05-13T15:31:01.927Z", + "updated_at": "2026-05-13T15:31:01.927Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 840, + "fields": { + "course_code": "MATH4710J", + "course_title": "Introduction to Numerical Methods", + "department": "MATH", + "number": 4710, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=477", + "created_at": "2026-05-13T15:31:01.932Z", + "updated_at": "2026-05-13T15:31:04.828Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 841, + "fields": { + "course_code": "BUS4010J", + "course_title": "Entrepreneurship", + "department": "BUS", + "number": 4010, + "course_credits": 1, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=478", + "created_at": "2026-05-13T15:31:01.936Z", + "updated_at": "2026-05-13T15:31:01.936Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 842, + "fields": { + "course_code": "BUS4020J", + "course_title": "Managing a Business", + "department": "BUS", + "number": 4020, + "course_credits": 2, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=479", + "created_at": "2026-05-13T15:31:01.940Z", + "updated_at": "2026-05-13T15:31:01.940Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 843, + "fields": { + "course_code": "BUS4200J", + "course_title": "Business Basics for Entrepreneurs", + "department": "BUS", + "number": 4200, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=480", + "created_at": "2026-05-13T15:31:01.945Z", + "updated_at": "2026-05-13T15:31:01.945Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 844, + "fields": { + "course_code": "BUS4210J", + "course_title": "Leadership and Technology Management", + "department": "BUS", + "number": 4210, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=481", + "created_at": "2026-05-13T15:31:01.949Z", + "updated_at": "2026-05-13T15:31:01.949Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 845, + "fields": { + "course_code": "ECE6602J", + "course_title": "Linear Systems", + "department": "ECE", + "number": 6602, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=482", + "created_at": "2026-05-13T15:31:01.953Z", + "updated_at": "2026-05-13T15:31:01.953Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 846, + "fields": { + "course_code": "MSE6202J", + "course_title": "Structural, Physical and Chemical Characterization of Materials", + "department": "MSE", + "number": 6202, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=483", + "created_at": "2026-05-13T15:31:01.957Z", + "updated_at": "2026-05-13T15:31:01.957Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 847, + "fields": { + "course_code": "VM567", + "course_title": "Introduction to Robotics", + "department": "VM", + "number": 567, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=484", + "created_at": "2026-05-13T15:31:01.962Z", + "updated_at": "2026-05-13T15:31:01.962Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 848, + "fields": { + "course_code": "ME6801J", + "course_title": "Manufacturing Processes and Systems", + "department": "ME", + "number": 6801, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=485", + "created_at": "2026-05-13T15:31:01.966Z", + "updated_at": "2026-05-13T15:31:01.966Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 849, + "fields": { + "course_code": "VM584", + "course_title": "Control of Manufacturing Systems", + "department": "VM", + "number": 584, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=486", + "created_at": "2026-05-13T15:31:01.971Z", + "updated_at": "2026-05-13T15:31:01.971Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 850, + "fields": { + "course_code": "VM586", + "course_title": "Laser Materials Processing", + "department": "VM", + "number": 586, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=487", + "created_at": "2026-05-13T15:31:01.976Z", + "updated_at": "2026-05-13T15:31:01.976Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 851, + "fields": { + "course_code": "VM595", + "course_title": "Master Thesis", + "department": "VM", + "number": 595, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=488", + "created_at": "2026-05-13T15:31:01.981Z", + "updated_at": "2026-05-13T15:31:01.981Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 852, + "fields": { + "course_code": "MATH6001J", + "course_title": "Methods of Applied Mathematics I", + "department": "MATH", + "number": 6001, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=489", + "created_at": "2026-05-13T15:31:01.986Z", + "updated_at": "2026-05-13T15:31:03.010Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 853, + "fields": { + "course_code": "MATH6002J", + "course_title": "Methods of Applied Mathematics II", + "department": "MATH", + "number": 6002, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=490", + "created_at": "2026-05-13T15:31:01.991Z", + "updated_at": "2026-05-13T15:31:01.991Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 854, + "fields": { + "course_code": "MATH6003J", + "course_title": "Introduction to Engineering Numerical Analysis", + "department": "MATH", + "number": 6003, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=491", + "created_at": "2026-05-13T15:31:01.995Z", + "updated_at": "2026-05-13T15:31:03.021Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 855, + "fields": { + "course_code": "ECE7604J", + "course_title": "Advanced Topics in Controls", + "department": "ECE", + "number": 7604, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=493", + "created_at": "2026-05-13T15:31:02Z", + "updated_at": "2026-05-13T15:31:02Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 856, + "fields": { + "course_code": "ECE7605J", + "course_title": "Advanced topics in control II", + "department": "ECE", + "number": 7605, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=494", + "created_at": "2026-05-13T15:31:02.004Z", + "updated_at": "2026-05-13T15:31:02.004Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 857, + "fields": { + "course_code": "ECE7603J", + "course_title": "Millimeter-wave and Terahertz Wireless Communications", + "department": "ECE", + "number": 7603, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=495", + "created_at": "2026-05-13T15:31:02.010Z", + "updated_at": "2026-05-13T15:31:02.010Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 858, + "fields": { + "course_code": "ECE7601J", + "course_title": "Wireless Networks", + "department": "ECE", + "number": 7601, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=496", + "created_at": "2026-05-13T15:31:02.014Z", + "updated_at": "2026-05-13T15:31:02.014Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 859, + "fields": { + "course_code": "VE695", + "course_title": "Doctoral Thesis", + "department": "VE", + "number": 695, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=497", + "created_at": "2026-05-13T15:31:02.019Z", + "updated_at": "2026-05-13T15:31:02.019Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 860, + "fields": { + "course_code": "VM643", + "course_title": "Flexible Multibody Dynamics", + "department": "VM", + "number": 643, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=499", + "created_at": "2026-05-13T15:31:02.023Z", + "updated_at": "2026-05-13T15:31:02.023Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 861, + "fields": { + "course_code": "ME6109J", + "course_title": "Wave Propagation in Elastic Solids", + "department": "ME", + "number": 6109, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=500", + "created_at": "2026-05-13T15:31:02.028Z", + "updated_at": "2026-05-13T15:31:02.028Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 862, + "fields": { + "course_code": "VM648", + "course_title": "Nonlinear Oscillations and Stability", + "department": "VM", + "number": 648, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=501", + "created_at": "2026-05-13T15:31:02.033Z", + "updated_at": "2026-05-13T15:31:02.033Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 863, + "fields": { + "course_code": "ME7501J", + "course_title": "Engineering Decision Making", + "department": "ME", + "number": 7501, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=502", + "created_at": "2026-05-13T15:31:02.037Z", + "updated_at": "2026-05-13T15:31:02.037Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 864, + "fields": { + "course_code": "VM695", + "course_title": "Doctoral Thesis", + "department": "VM", + "number": 695, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=503", + "created_at": "2026-05-13T15:31:02.041Z", + "updated_at": "2026-05-13T15:31:02.042Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 865, + "fields": { + "course_code": "VM699", + "course_title": "Special topics in thermal and fluid science", + "department": "VM", + "number": 699, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=504", + "created_at": "2026-05-13T15:31:02.046Z", + "updated_at": "2026-05-13T15:31:02.046Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 866, + "fields": { + "course_code": "ENGR1000J", + "course_title": "Introduction to Engineering", + "department": "ENGR", + "number": 1000, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=73", + "created_at": "2026-05-13T15:31:02.050Z", + "updated_at": "2026-05-13T15:31:04.453Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 867, + "fields": { + "course_code": "ME3200J", + "course_title": "Fluid Mechanics", + "department": "ME", + "number": 3200, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=73500", + "created_at": "2026-05-13T15:31:02.055Z", + "updated_at": "2026-05-13T15:31:03.842Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 868, + "fields": { + "course_code": "ECE2810J", + "course_title": "Data Structures and Algorithms", + "department": "ECE", + "number": 2810, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=73561", + "created_at": "2026-05-13T15:31:02.060Z", + "updated_at": "2026-05-13T15:31:04.654Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 869, + "fields": { + "course_code": "ME2350J", + "course_title": "thermodynamics", + "department": "ME", + "number": 2350, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=73562", + "created_at": "2026-05-13T15:31:02.065Z", + "updated_at": "2026-05-13T15:31:04.587Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 870, + "fields": { + "course_code": "PHYS1410J", + "course_title": "Physics Lab I", + "department": "PHYS", + "number": 1410, + "course_credits": 1, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=73563", + "created_at": "2026-05-13T15:31:02.069Z", + "updated_at": "2026-05-13T15:31:04.430Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 871, + "fields": { + "course_code": "PHYS2600J", + "course_title": "Honors Physics II", + "department": "PHYS", + "number": 2600, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=73564", + "created_at": "2026-05-13T15:31:02.073Z", + "updated_at": "2026-05-13T15:31:03.537Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 872, + "fields": { + "course_code": "ENGR1010J", + "course_title": "Introduction to Computers and Programming", + "department": "ENGR", + "number": 1010, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=74", + "created_at": "2026-05-13T15:31:02.078Z", + "updated_at": "2026-05-13T15:31:04.476Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 873, + "fields": { + "course_code": "ECE4450J", + "course_title": "Introduction to Machine Learning", + "department": "ECE", + "number": 4450, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=74734", + "created_at": "2026-05-13T15:31:02.083Z", + "updated_at": "2026-05-13T15:31:02.083Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 874, + "fields": { + "course_code": "PHYS2401J", + "course_title": "General Physics II", + "department": "PHYS", + "number": 2401, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=75308", + "created_at": "2026-05-13T15:31:02.087Z", + "updated_at": "2026-05-13T15:31:03.513Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 875, + "fields": { + "course_code": "PHYS1401J", + "course_title": "General Physics I", + "department": "PHYS", + "number": 1401, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=75309", + "created_at": "2026-05-13T15:31:02.091Z", + "updated_at": "2026-05-13T15:31:04.398Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 876, + "fields": { + "course_code": "PHYS1500J", + "course_title": "Physics I", + "department": "PHYS", + "number": 1500, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=75310", + "created_at": "2026-05-13T15:31:02.095Z", + "updated_at": "2026-05-13T15:31:04.409Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 877, + "fields": { + "course_code": "PHYS2500J", + "course_title": "Physics II", + "department": "PHYS", + "number": 2500, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=75312", + "created_at": "2026-05-13T15:31:02.099Z", + "updated_at": "2026-05-13T15:31:03.524Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 878, + "fields": { + "course_code": "ENGR4410J", + "course_title": "Supply Chain Management", + "department": "ENGR", + "number": 4410, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=77569", + "created_at": "2026-05-13T15:31:02.103Z", + "updated_at": "2026-05-13T15:31:02.427Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 879, + "fields": { + "course_code": "ECE3510J", + "course_title": "Digital Signal Processing and Analysis", + "department": "ECE", + "number": 3510, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=75318", + "created_at": "2026-05-13T15:31:02.108Z", + "updated_at": "2026-05-13T15:31:03.766Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 880, + "fields": { + "course_code": "ECE4210J", + "course_title": "Properties of Transistors", + "department": "ECE", + "number": 4210, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=75319", + "created_at": "2026-05-13T15:31:02.113Z", + "updated_at": "2026-05-13T15:31:04.867Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 881, + "fields": { + "course_code": "ECE4230J", + "course_title": "Solid-State Device Laboratory", + "department": "ECE", + "number": 4230, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=75320", + "created_at": "2026-05-13T15:31:02.117Z", + "updated_at": "2026-05-13T15:31:03.923Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 882, + "fields": { + "course_code": "ECE4410J", + "course_title": "App Development for Entrepreneurs", + "department": "ECE", + "number": 4410, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=75328", + "created_at": "2026-05-13T15:31:02.121Z", + "updated_at": "2026-05-13T15:31:04.898Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 883, + "fields": { + "course_code": "ECE4440J", + "course_title": "Networks", + "department": "ECE", + "number": 4440, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=75331", + "created_at": "2026-05-13T15:31:02.125Z", + "updated_at": "2026-05-13T15:31:03.937Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 884, + "fields": { + "course_code": "ECE4530J", + "course_title": "Decision Making in Smart Cities", + "department": "ECE", + "number": 4530, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=75332", + "created_at": "2026-05-13T15:31:02.129Z", + "updated_at": "2026-05-13T15:31:03.799Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 885, + "fields": { + "course_code": "ECE4711J", + "course_title": "Applied Parallel Programming with GPUs", + "department": "ECE", + "number": 4711, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=75333", + "created_at": "2026-05-13T15:31:02.133Z", + "updated_at": "2026-05-13T15:31:02.133Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 886, + "fields": { + "course_code": "ECE4720J", + "course_title": "Methods and Tools for Big Data", + "department": "ECE", + "number": 4720, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=75334", + "created_at": "2026-05-13T15:31:02.137Z", + "updated_at": "2026-05-13T15:31:02.137Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 887, + "fields": { + "course_code": "ECE4730J", + "course_title": "Advanced Embedded System", + "department": "ECE", + "number": 4730, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=75335", + "created_at": "2026-05-13T15:31:02.141Z", + "updated_at": "2026-05-13T15:31:04.926Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 888, + "fields": { + "course_code": "ECE4810J", + "course_title": "System-on-Chip Design", + "department": "ECE", + "number": 4810, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=75336", + "created_at": "2026-05-13T15:31:02.145Z", + "updated_at": "2026-05-13T15:31:03.959Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 889, + "fields": { + "course_code": "ECE4821J", + "course_title": "Introduction to Operating Systems-Attached Lab", + "department": "ECE", + "number": 4821, + "course_credits": 1, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=75337", + "created_at": "2026-05-13T15:31:02.149Z", + "updated_at": "2026-05-13T15:31:03.981Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 890, + "fields": { + "course_code": "ECE4850J", + "course_title": "Optimization in Machine Learning", + "department": "ECE", + "number": 4850, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=75338", + "created_at": "2026-05-13T15:31:02.153Z", + "updated_at": "2026-05-13T15:31:03.992Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 891, + "fields": { + "course_code": "ECE4880J", + "course_title": "Computer Vision", + "department": "ECE", + "number": 4880, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=75339", + "created_at": "2026-05-13T15:31:02.157Z", + "updated_at": "2026-05-13T15:31:04.956Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 892, + "fields": { + "course_code": "ME4050J", + "course_title": "Finite Elements in Mechanical Engineering", + "department": "ME", + "number": 4050, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=75340", + "created_at": "2026-05-13T15:31:02.161Z", + "updated_at": "2026-05-13T15:31:02.161Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 893, + "fields": { + "course_code": "ME4241J", + "course_title": "Applied Biofluid Mechanics", + "department": "ME", + "number": 4241, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=75341", + "created_at": "2026-05-13T15:31:02.165Z", + "updated_at": "2026-05-13T15:31:02.165Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 894, + "fields": { + "course_code": "ME4550J", + "course_title": "Introduction to Data-driven Engineering Design", + "department": "ME", + "number": 4550, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=75342", + "created_at": "2026-05-13T15:31:02.170Z", + "updated_at": "2026-05-13T15:31:02.170Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 895, + "fields": { + "course_code": "MSE4120J", + "course_title": "Polymeric Materials", + "department": "MSE", + "number": 4120, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=75343", + "created_at": "2026-05-13T15:31:02.174Z", + "updated_at": "2026-05-13T15:31:04.966Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 896, + "fields": { + "course_code": "MSE4500J", + "course_title": "Product Design and Manufacturing", + "department": "MSE", + "number": 4500, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=75344", + "created_at": "2026-05-13T15:31:02.179Z", + "updated_at": "2026-05-13T15:31:02.179Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 897, + "fields": { + "course_code": "MSE4930J", + "course_title": "Self-assembly of Materials and Devices", + "department": "MSE", + "number": 4930, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=75345", + "created_at": "2026-05-13T15:31:02.183Z", + "updated_at": "2026-05-13T15:31:04.105Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 898, + "fields": { + "course_code": "HIS1020J", + "course_title": "Chinese History in Global Perspective", + "department": "HIS", + "number": 1020, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=75346", + "created_at": "2026-05-13T15:31:02.188Z", + "updated_at": "2026-05-13T15:31:05.172Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 899, + "fields": { + "course_code": "GER1650J", + "course_title": "German Culture", + "department": "GER", + "number": 1650, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=75347", + "created_at": "2026-05-13T15:31:02.192Z", + "updated_at": "2026-05-13T15:31:05.162Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 900, + "fields": { + "course_code": "ART2550J", + "course_title": "Digital Photography", + "department": "ART", + "number": 2550, + "course_credits": 2, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=75348", + "created_at": "2026-05-13T15:31:02.197Z", + "updated_at": "2026-05-13T15:31:03.062Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 901, + "fields": { + "course_code": "PHIL3610J", + "course_title": "Philosophical Ethics", + "department": "PHIL", + "number": 3610, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=75349", + "created_at": "2026-05-13T15:31:02.201Z", + "updated_at": "2026-05-13T15:31:02.201Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 902, + "fields": { + "course_code": "GER1100J", + "course_title": "German", + "department": "GER", + "number": 1100, + "course_credits": 2, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=75350", + "created_at": "2026-05-13T15:31:02.205Z", + "updated_at": "2026-05-13T15:31:05.143Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 903, + "fields": { + "course_code": "BUS2500J", + "course_title": "Business Communications", + "department": "BUS", + "number": 2500, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=75351", + "created_at": "2026-05-13T15:31:02.210Z", + "updated_at": "2026-05-13T15:31:02.210Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 904, + "fields": { + "course_code": "BUS2510J", + "course_title": "Branding and Brand Management", + "department": "BUS", + "number": 2510, + "course_credits": 2, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=75352", + "created_at": "2026-05-13T15:31:02.214Z", + "updated_at": "2026-05-13T15:31:03.071Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 905, + "fields": { + "course_code": "BUS4230J", + "course_title": "Intrapreneurship", + "department": "BUS", + "number": 4230, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=75353", + "created_at": "2026-05-13T15:31:02.218Z", + "updated_at": "2026-05-13T15:31:02.218Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 906, + "fields": { + "course_code": "BUS4250J", + "course_title": "Technology Entrepreneurship", + "department": "BUS", + "number": 4250, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=75354", + "created_at": "2026-05-13T15:31:02.222Z", + "updated_at": "2026-05-13T15:31:02.222Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 907, + "fields": { + "course_code": "BUS4400J", + "course_title": "Introduction to Social Entrepreneurship", + "department": "BUS", + "number": 4400, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=75355", + "created_at": "2026-05-13T15:31:02.226Z", + "updated_at": "2026-05-13T15:31:02.226Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 908, + "fields": { + "course_code": "ENGL2430J", + "course_title": "Introduction to Fiction", + "department": "ENGL", + "number": 2430, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=75356", + "created_at": "2026-05-13T15:31:02.230Z", + "updated_at": "2026-05-13T15:31:02.230Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 909, + "fields": { + "course_code": "ME6207J", + "course_title": "Microfluidics and Nanofluidics", + "department": "ME", + "number": 6207, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=77224", + "created_at": "2026-05-13T15:31:02.235Z", + "updated_at": "2026-05-13T15:31:02.235Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 910, + "fields": { + "course_code": "VM503", + "course_title": "Numerical methods in mechanics simulation", + "department": "VM", + "number": 503, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=77225", + "created_at": "2026-05-13T15:31:02.239Z", + "updated_at": "2026-05-13T15:31:02.239Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 911, + "fields": { + "course_code": "MSE6204J", + "course_title": "Statistical Physics", + "department": "MSE", + "number": 6204, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=77228", + "created_at": "2026-05-13T15:31:02.243Z", + "updated_at": "2026-05-13T15:31:02.243Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 912, + "fields": { + "course_code": "MSE6502J", + "course_title": "Computational Approaches in MSE", + "department": "MSE", + "number": 6502, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=77229", + "created_at": "2026-05-13T15:31:02.248Z", + "updated_at": "2026-05-13T15:31:02.248Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 913, + "fields": { + "course_code": "MSE6802J", + "course_title": "Climate Change: A Multidisciplinary Approach", + "department": "MSE", + "number": 6802, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=77230", + "created_at": "2026-05-13T15:31:02.252Z", + "updated_at": "2026-05-13T15:31:02.252Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 914, + "fields": { + "course_code": "ECE6903J", + "course_title": "Distributed Machine Learning Systems", + "department": "ECE", + "number": 6903, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=77233", + "created_at": "2026-05-13T15:31:02.256Z", + "updated_at": "2026-05-13T15:31:02.256Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 915, + "fields": { + "course_code": "ECE6707J", + "course_title": "Modern Digital VLSI Design", + "department": "ECE", + "number": 6707, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=77234", + "created_at": "2026-05-13T15:31:02.260Z", + "updated_at": "2026-05-13T15:31:02.260Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 916, + "fields": { + "course_code": "ECE7607J", + "course_title": "Compressed Sensing Theory and Its Applications", + "department": "ECE", + "number": 7607, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=77235", + "created_at": "2026-05-13T15:31:02.266Z", + "updated_at": "2026-05-13T15:31:02.266Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 917, + "fields": { + "course_code": "ECE6101J", + "course_title": "High-frequency Circuits", + "department": "ECE", + "number": 6101, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=77236", + "created_at": "2026-05-13T15:31:02.270Z", + "updated_at": "2026-05-13T15:31:02.999Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 918, + "fields": { + "course_code": "ECE6904J", + "course_title": "Battery Modeling, Simulation, and Management", + "department": "ECE", + "number": 6904, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=77237", + "created_at": "2026-05-13T15:31:02.275Z", + "updated_at": "2026-05-13T15:31:02.275Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 919, + "fields": { + "course_code": "ECE6308J", + "course_title": "Modern Optics Laboratory", + "department": "ECE", + "number": 6308, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=77238", + "created_at": "2026-05-13T15:31:02.279Z", + "updated_at": "2026-05-13T15:31:02.279Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 920, + "fields": { + "course_code": "VE520", + "course_title": "Electronic and Optical Properties of Semiconductors", + "department": "VE", + "number": 520, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=77239", + "created_at": "2026-05-13T15:31:02.283Z", + "updated_at": "2026-05-13T15:31:02.283Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 921, + "fields": { + "course_code": "ECE6902J", + "course_title": "Introduction to Information Geometry", + "department": "ECE", + "number": 6902, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=77241", + "created_at": "2026-05-13T15:31:02.287Z", + "updated_at": "2026-05-13T15:31:02.287Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 922, + "fields": { + "course_code": "VE601", + "course_title": "Advanced Topics in Semiconductor Defects", + "department": "VE", + "number": 601, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=77242", + "created_at": "2026-05-13T15:31:02.292Z", + "updated_at": "2026-05-13T15:31:02.292Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 923, + "fields": { + "course_code": "ECE6706J", + "course_title": "Unsupervised Learning for Science", + "department": "ECE", + "number": 6706, + "course_credits": 2, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=77243", + "created_at": "2026-05-13T15:31:02.296Z", + "updated_at": "2026-05-13T15:31:02.296Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 924, + "fields": { + "course_code": "ECE7609J", + "course_title": "Principles of Imaging Science", + "department": "ECE", + "number": 7609, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=77244", + "created_at": "2026-05-13T15:31:02.300Z", + "updated_at": "2026-05-13T15:31:02.300Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 925, + "fields": { + "course_code": "ART2020J", + "course_title": "Introduction to Media Production", + "department": "ART", + "number": 2020, + "course_credits": 2, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=77537", + "created_at": "2026-05-13T15:31:02.304Z", + "updated_at": "2026-05-13T15:31:02.304Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 926, + "fields": { + "course_code": "BUS1020J", + "course_title": "Principles of Management", + "department": "BUS", + "number": 1020, + "course_credits": 2, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=77538", + "created_at": "2026-05-13T15:31:02.308Z", + "updated_at": "2026-05-13T15:31:02.308Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 927, + "fields": { + "course_code": "BUS1510J", + "course_title": "Marketing Management", + "department": "BUS", + "number": 1510, + "course_credits": 2, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=77539", + "created_at": "2026-05-13T15:31:02.312Z", + "updated_at": "2026-05-13T15:31:04.115Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 928, + "fields": { + "course_code": "BUS2030J", + "course_title": "Leadership and Management", + "department": "BUS", + "number": 2030, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=77540", + "created_at": "2026-05-13T15:31:02.316Z", + "updated_at": "2026-05-13T15:31:02.316Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 929, + "fields": { + "course_code": "BUS2400J", + "course_title": "Introduction to Supply Chain Management", + "department": "BUS", + "number": 2400, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=77541", + "created_at": "2026-05-13T15:31:02.321Z", + "updated_at": "2026-05-13T15:31:04.134Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 930, + "fields": { + "course_code": "BUS2550J", + "course_title": "Design for Sustainable Development", + "department": "BUS", + "number": 2550, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=77542", + "created_at": "2026-05-13T15:31:02.325Z", + "updated_at": "2026-05-13T15:31:02.325Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 931, + "fields": { + "course_code": "BUS2551J", + "course_title": "Design for Sustainable Development (Winter Program)", + "department": "BUS", + "number": 2551, + "course_credits": 2, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=77543", + "created_at": "2026-05-13T15:31:02.329Z", + "updated_at": "2026-05-13T15:31:02.329Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 932, + "fields": { + "course_code": "BUS2610J", + "course_title": "Leadership", + "department": "BUS", + "number": 2610, + "course_credits": 2, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=77544", + "created_at": "2026-05-13T15:31:02.334Z", + "updated_at": "2026-05-13T15:31:04.124Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 933, + "fields": { + "course_code": "BUS2700J", + "course_title": "Accounting and Finance", + "department": "BUS", + "number": 2700, + "course_credits": 2, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=77545", + "created_at": "2026-05-13T15:31:02.339Z", + "updated_at": "2026-05-13T15:31:05.039Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 934, + "fields": { + "course_code": "BUS4100J", + "course_title": "Building start ups from Zero to One", + "department": "BUS", + "number": 4100, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=77547", + "created_at": "2026-05-13T15:31:02.343Z", + "updated_at": "2026-05-13T15:31:04.154Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 935, + "fields": { + "course_code": "BUS4220J", + "course_title": "E-Business Management", + "department": "BUS", + "number": 4220, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=77548", + "created_at": "2026-05-13T15:31:02.347Z", + "updated_at": "2026-05-13T15:31:02.347Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 936, + "fields": { + "course_code": "BUS4231J", + "course_title": "Internship Practicum", + "department": "BUS", + "number": 4231, + "course_credits": 1, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=77549", + "created_at": "2026-05-13T15:31:02.351Z", + "updated_at": "2026-05-13T15:31:03.083Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 937, + "fields": { + "course_code": "BUS4570J", + "course_title": "Principles of Financial Accounting", + "department": "BUS", + "number": 4570, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=77550", + "created_at": "2026-05-13T15:31:02.355Z", + "updated_at": "2026-05-13T15:31:02.355Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 938, + "fields": { + "course_code": "BUS4600J", + "course_title": "Strategy and Innovation", + "department": "BUS", + "number": 4600, + "course_credits": 2, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=77551", + "created_at": "2026-05-13T15:31:02.359Z", + "updated_at": "2026-05-13T15:31:02.359Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 939, + "fields": { + "course_code": "ECE4710J", + "course_title": "Introduction to Data Science", + "department": "ECE", + "number": 4710, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=77553", + "created_at": "2026-05-13T15:31:02.367Z", + "updated_at": "2026-05-13T15:31:02.367Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 940, + "fields": { + "course_code": "ECE4721J", + "course_title": "Methods and Tools for Big Data", + "department": "ECE", + "number": 4721, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=77554", + "created_at": "2026-05-13T15:31:02.371Z", + "updated_at": "2026-05-13T15:31:04.916Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 941, + "fields": { + "course_code": "ECE4800J", + "course_title": "Software Engineering", + "department": "ECE", + "number": 4800, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=77555", + "created_at": "2026-05-13T15:31:02.375Z", + "updated_at": "2026-05-13T15:31:02.375Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 942, + "fields": { + "course_code": "ECE4921J", + "course_title": "Artificial Intelligence: Principles and Techniques", + "department": "ECE", + "number": 4921, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=77557", + "created_at": "2026-05-13T15:31:02.379Z", + "updated_at": "2026-05-13T15:31:02.379Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 943, + "fields": { + "course_code": "ECE6901J", + "course_title": "Convolutional Neural Networks for Visual Recognition", + "department": "ECE", + "number": 6901, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=77558", + "created_at": "2026-05-13T15:31:02.384Z", + "updated_at": "2026-05-13T15:31:02.384Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 944, + "fields": { + "course_code": "ECON1011J", + "course_title": "Principles of Economics", + "department": "ECON", + "number": 1011, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=77559", + "created_at": "2026-05-13T15:31:02.388Z", + "updated_at": "2026-05-13T15:31:02.388Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 945, + "fields": { + "course_code": "ENGL2330J", + "course_title": "Chinese American Literature", + "department": "ENGL", + "number": 2330, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=77560", + "created_at": "2026-05-13T15:31:02.392Z", + "updated_at": "2026-05-13T15:31:02.392Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 946, + "fields": { + "course_code": "ENGL2420J", + "course_title": "Literature of Love", + "department": "ENGL", + "number": 2420, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=77561", + "created_at": "2026-05-13T15:31:02.396Z", + "updated_at": "2026-05-13T15:31:02.396Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 947, + "fields": { + "course_code": "ENGL2550J", + "course_title": "Introduction to Drama and Theatre", + "department": "ENGL", + "number": 2550, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=77563", + "created_at": "2026-05-13T15:31:02.402Z", + "updated_at": "2026-05-13T15:31:03.202Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 948, + "fields": { + "course_code": "ENGL3010J", + "course_title": "Writing for Television", + "department": "ENGL", + "number": 3010, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=77564", + "created_at": "2026-05-13T15:31:02.406Z", + "updated_at": "2026-05-13T15:31:02.406Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 949, + "fields": { + "course_code": "ENGL3020J", + "course_title": "Writing Poetry", + "department": "ENGL", + "number": 3020, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=77565", + "created_at": "2026-05-13T15:31:02.411Z", + "updated_at": "2026-05-13T15:31:02.411Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 950, + "fields": { + "course_code": "ENGL3230J", + "course_title": "Writing Fiction", + "department": "ENGL", + "number": 3230, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=77566", + "created_at": "2026-05-13T15:31:02.415Z", + "updated_at": "2026-05-13T15:31:05.132Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 951, + "fields": { + "course_code": "ENGL3450J", + "course_title": "Art of the Essay", + "department": "ENGL", + "number": 3450, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=77567", + "created_at": "2026-05-13T15:31:02.419Z", + "updated_at": "2026-05-13T15:31:02.419Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 952, + "fields": { + "course_code": "ENGL3460J", + "course_title": "Introduction to Literary Journalism (Winter Program)", + "department": "ENGL", + "number": 3460, + "course_credits": 2, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=77568", + "created_at": "2026-05-13T15:31:02.424Z", + "updated_at": "2026-05-13T15:31:02.424Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 953, + "fields": { + "course_code": "ENGR4500J", + "course_title": "Global Multidisciplinary Design Project I", + "department": "ENGR", + "number": 4500, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=77570", + "created_at": "2026-05-13T15:31:02.431Z", + "updated_at": "2026-05-13T15:31:02.431Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 954, + "fields": { + "course_code": "ENGR4511J", + "course_title": "Capstone Design Plus", + "department": "ENGR", + "number": 4511, + "course_credits": 2, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=77571", + "created_at": "2026-05-13T15:31:02.435Z", + "updated_at": "2026-05-13T15:31:02.435Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 955, + "fields": { + "course_code": "LIN1120J", + "course_title": "Introduction to Language and Linguistics", + "department": "LIN", + "number": 1120, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=77572", + "created_at": "2026-05-13T15:31:02.439Z", + "updated_at": "2026-05-13T15:31:02.439Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 956, + "fields": { + "course_code": "HIS2519J", + "course_title": "20th Century China: History and Memory", + "department": "HIS", + "number": 2519, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=77617", + "created_at": "2026-05-13T15:31:02.444Z", + "updated_at": "2026-05-13T15:31:02.444Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 957, + "fields": { + "course_code": "HIS2810J", + "course_title": "Introduction to China Studies", + "department": "HIS", + "number": 2810, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=77618", + "created_at": "2026-05-13T15:31:02.448Z", + "updated_at": "2026-05-13T15:31:05.181Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 958, + "fields": { + "course_code": "HIS1010J", + "course_title": "Field Study in Chinese History (Winter Program)", + "department": "HIS", + "number": 1010, + "course_credits": 2, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=77619", + "created_at": "2026-05-13T15:31:02.454Z", + "updated_at": "2026-05-13T15:31:02.454Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 959, + "fields": { + "course_code": "POL2610J", + "course_title": "China’s Regional Diplomacy", + "department": "POL", + "number": 2610, + "course_credits": 2, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=77620", + "created_at": "2026-05-13T15:31:02.459Z", + "updated_at": "2026-05-13T15:31:05.223Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 960, + "fields": { + "course_code": "POL3610J", + "course_title": "Chinese Diplomacy and Foreign Policy Making", + "department": "POL", + "number": 3610, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=77621", + "created_at": "2026-05-13T15:31:02.464Z", + "updated_at": "2026-05-13T15:31:02.464Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 961, + "fields": { + "course_code": "MUSI1500J", + "course_title": "Introduction to Chinese Music", + "department": "MUSI", + "number": 1500, + "course_credits": 2, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=77622", + "created_at": "2026-05-13T15:31:02.469Z", + "updated_at": "2026-05-13T15:31:05.212Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 962, + "fields": { + "course_code": "PHIL2800J", + "course_title": "Ethics of AI", + "department": "PHIL", + "number": 2800, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=78134", + "created_at": "2026-05-13T15:31:02.473Z", + "updated_at": "2026-05-13T15:31:03.290Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 963, + "fields": { + "course_code": "PHIL2030J", + "course_title": "Introduction to Philosophy of Technology for Engineers", + "department": "PHIL", + "number": 2030, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=78135", + "created_at": "2026-05-13T15:31:02.477Z", + "updated_at": "2026-05-13T15:31:03.270Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 964, + "fields": { + "course_code": "ENGL2480J", + "course_title": "Utopia/Dystopia: Imagining (Im)Perfect Societies", + "department": "ENGL", + "number": 2480, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=78136", + "created_at": "2026-05-13T15:31:02.481Z", + "updated_at": "2026-05-13T15:31:02.481Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 965, + "fields": { + "course_code": "PSY3540J", + "course_title": "Introduction to Cognitive Psychology", + "department": "PSY", + "number": 3540, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=78137", + "created_at": "2026-05-13T15:31:02.486Z", + "updated_at": "2026-05-13T15:31:02.486Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 966, + "fields": { + "course_code": "PSY1540J", + "course_title": "Introduction to Psychology", + "department": "PSY", + "number": 1540, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=78138", + "created_at": "2026-05-13T15:31:02.490Z", + "updated_at": "2026-05-13T15:31:02.490Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 967, + "fields": { + "course_code": "PSY3650J", + "course_title": "Positive Psychology", + "department": "PSY", + "number": 3650, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=78139", + "created_at": "2026-05-13T15:31:02.495Z", + "updated_at": "2026-05-13T15:31:03.367Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 968, + "fields": { + "course_code": "PSY3110J", + "course_title": "Creativity", + "department": "PSY", + "number": 3110, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=78140", + "created_at": "2026-05-13T15:31:02.499Z", + "updated_at": "2026-05-13T15:31:02.499Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 969, + "fields": { + "course_code": "PSY3620J", + "course_title": "Research Methods in Psychology", + "department": "PSY", + "number": 3620, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=78141", + "created_at": "2026-05-13T15:31:02.503Z", + "updated_at": "2026-05-13T15:31:02.503Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 970, + "fields": { + "course_code": "PSY3680J", + "course_title": "Introduction to Counseling and Psychotherapy", + "department": "PSY", + "number": 3680, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=78142", + "created_at": "2026-05-13T15:31:02.507Z", + "updated_at": "2026-05-13T15:31:05.244Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 971, + "fields": { + "course_code": "PSY3660J", + "course_title": "Positive Art Therapy", + "department": "PSY", + "number": 3660, + "course_credits": 2, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=78143", + "created_at": "2026-05-13T15:31:02.511Z", + "updated_at": "2026-05-13T15:31:05.234Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 972, + "fields": { + "course_code": "PSY3670J", + "course_title": "Positive Music Therapy", + "department": "PSY", + "number": 3670, + "course_credits": 2, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=78144", + "created_at": "2026-05-13T15:31:02.515Z", + "updated_at": "2026-05-13T15:31:04.349Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 973, + "fields": { + "course_code": "CUL2540J", + "course_title": "Culture, Society, the Problem of Design", + "department": "CUL", + "number": 2540, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=78160", + "created_at": "2026-05-13T15:31:02.519Z", + "updated_at": "2026-05-13T15:31:02.519Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 974, + "fields": { + "course_code": "ART2560J", + "course_title": "Art and Creativity in the Age of Artificial Intelligence", + "department": "ART", + "number": 2560, + "course_credits": 2, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=84830", + "created_at": "2026-05-13T15:31:02.524Z", + "updated_at": "2026-05-13T15:31:03.053Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 975, + "fields": { + "course_code": "ART2600J", + "course_title": "Discovering Shanghai Through the Lens of Art (Winter Program)", + "department": "ART", + "number": 2600, + "course_credits": 0, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=84831", + "created_at": "2026-05-13T15:31:02.528Z", + "updated_at": "2026-05-13T15:31:02.528Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 976, + "fields": { + "course_code": "CUL2520J", + "course_title": "How Humans Make Decisions", + "department": "CUL", + "number": 2520, + "course_credits": 2, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=84832", + "created_at": "2026-05-13T15:31:02.533Z", + "updated_at": "2026-05-13T15:31:03.181Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 977, + "fields": { + "course_code": "PHIL3650J", + "course_title": "The World of the Hundred Schools", + "department": "PHIL", + "number": 3650, + "course_credits": 2, + "pre_requisites": "", + "description": "", + "course_topics": [], + "url": "https://gc.sjtu.edu.cn/academics/courses/courses-by-number/course-info/?id=84833", + "created_at": "2026-05-13T15:31:02.537Z", + "updated_at": "2026-05-13T15:31:03.304Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 978, + "fields": { + "course_code": "TC3000J", + "course_title": "Tech Comm", + "department": "TC", + "number": 3000, + "course_credits": 1, + "pre_requisites": "", + "description": "", + "course_topics": null, + "url": null, + "created_at": "2026-05-13T15:31:02.860Z", + "updated_at": "2026-05-13T15:31:04.554Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 979, + "fields": { + "course_code": "ENGR4901J", + "course_title": "Undergraduate Research", + "department": "ENGR", + "number": 4901, + "course_credits": 1, + "pre_requisites": "", + "description": "", + "course_topics": null, + "url": null, + "created_at": "2026-05-13T15:31:02.952Z", + "updated_at": "2026-05-13T15:31:04.633Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 980, + "fields": { + "course_code": "ENGR4902J", + "course_title": "Undergraduate Research", + "department": "ENGR", + "number": 4902, + "course_credits": 2, + "pre_requisites": "", + "description": "", + "course_topics": null, + "url": null, + "created_at": "2026-05-13T15:31:02.965Z", + "updated_at": "2026-05-13T15:31:04.640Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 981, + "fields": { + "course_code": "ENGR4903J", + "course_title": "Undergraduate Research", + "department": "ENGR", + "number": 4903, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": null, + "url": null, + "created_at": "2026-05-13T15:31:02.975Z", + "updated_at": "2026-05-13T15:31:04.647Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 982, + "fields": { + "course_code": "STAT4710J", + "course_title": "Data Science and Analytics using Python", + "department": "STAT", + "number": 4710, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": null, + "url": null, + "created_at": "2026-05-13T15:31:02.986Z", + "updated_at": "2026-05-13T15:31:04.998Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 983, + "fields": { + "course_code": "ART1700J", + "course_title": "Basic Drawing", + "department": "ART", + "number": 1700, + "course_credits": 2, + "pre_requisites": "", + "description": "", + "course_topics": null, + "url": null, + "created_at": "2026-05-13T15:31:03.042Z", + "updated_at": "2026-05-13T15:31:03.042Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 984, + "fields": { + "course_code": "CHN0210J", + "course_title": "Chinese Language (level 2 part 1)", + "department": "CHN", + "number": 210, + "course_credits": 2, + "pre_requisites": "", + "description": "", + "course_topics": null, + "url": null, + "created_at": "2026-05-13T15:31:03.094Z", + "updated_at": "2026-05-13T15:31:03.094Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 985, + "fields": { + "course_code": "CHN0220J", + "course_title": "Chinese Language (level 2 part 2)", + "department": "CHN", + "number": 220, + "course_credits": 2, + "pre_requisites": "", + "description": "", + "course_topics": null, + "url": null, + "created_at": "2026-05-13T15:31:03.110Z", + "updated_at": "2026-05-13T15:31:03.110Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 986, + "fields": { + "course_code": "CHN0510J", + "course_title": "Chinese Language (level 5 part 1)", + "department": "CHN", + "number": 510, + "course_credits": 2, + "pre_requisites": "", + "description": "", + "course_topics": null, + "url": null, + "created_at": "2026-05-13T15:31:03.122Z", + "updated_at": "2026-05-13T15:31:03.122Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 987, + "fields": { + "course_code": "CHN0520J", + "course_title": "Chinese Language (level 5 part 2)", + "department": "CHN", + "number": 520, + "course_credits": 2, + "pre_requisites": "", + "description": "", + "course_topics": null, + "url": null, + "created_at": "2026-05-13T15:31:03.135Z", + "updated_at": "2026-05-13T15:31:03.135Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 988, + "fields": { + "course_code": "CHN2800J", + "course_title": "Introduction to Modern Chinese Literature", + "department": "CHN", + "number": 2800, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": null, + "url": null, + "created_at": "2026-05-13T15:31:03.166Z", + "updated_at": "2026-05-13T15:31:03.166Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 989, + "fields": { + "course_code": "CUL2610J", + "course_title": "French Culture", + "department": "CUL", + "number": 2610, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": null, + "url": null, + "created_at": "2026-05-13T15:31:03.193Z", + "updated_at": "2026-05-13T15:31:05.008Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 990, + "fields": { + "course_code": "HIS2591J", + "course_title": "20th Century China: History and Memory", + "department": "HIS", + "number": 2591, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": null, + "url": null, + "created_at": "2026-05-13T15:31:03.244Z", + "updated_at": "2026-05-13T15:31:03.244Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 991, + "fields": { + "course_code": "JAPN1100J", + "course_title": "Basic Japanese I", + "department": "JAPN", + "number": 1100, + "course_credits": 2, + "pre_requisites": "", + "description": "", + "course_topics": null, + "url": null, + "created_at": "2026-05-13T15:31:03.257Z", + "updated_at": "2026-05-13T15:31:05.191Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 992, + "fields": { + "course_code": "POL2010J", + "course_title": "Political Philosophy: From Plato to Rousseau", + "department": "POL", + "number": 2010, + "course_credits": 2, + "pre_requisites": "", + "description": "", + "course_topics": null, + "url": null, + "created_at": "2026-05-13T15:31:03.329Z", + "updated_at": "2026-05-13T15:31:03.329Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 993, + "fields": { + "course_code": "ENGR1510J", + "course_title": "Accelerated Introduction to Computers and Programming", + "department": "ENGR", + "number": 1510, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": null, + "url": null, + "created_at": "2026-05-13T15:31:03.435Z", + "updated_at": "2026-05-13T15:31:03.435Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 994, + "fields": { + "course_code": "STAT4060J", + "course_title": "Computational Methods for Statistics and Data Science", + "department": "STAT", + "number": 4060, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": null, + "url": null, + "created_at": "2026-05-13T15:31:04.017Z", + "updated_at": "2026-05-13T15:31:04.017Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 995, + "fields": { + "course_code": "STAT4510J", + "course_title": "Bayesian Analysis", + "department": "STAT", + "number": 4510, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": null, + "url": null, + "created_at": "2026-05-13T15:31:04.028Z", + "updated_at": "2026-05-13T15:31:04.028Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 996, + "fields": { + "course_code": "TC4960J", + "course_title": "Advanced Technical Communication", + "department": "TC", + "number": 4960, + "course_credits": 2, + "pre_requisites": "", + "description": "", + "course_topics": null, + "url": null, + "created_at": "2026-05-13T15:31:04.048Z", + "updated_at": "2026-05-13T15:31:04.850Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 997, + "fields": { + "course_code": "BUS3680J", + "course_title": "Architecture, Sustainability and the City", + "department": "BUS", + "number": 3680, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": null, + "url": null, + "created_at": "2026-05-13T15:31:04.144Z", + "updated_at": "2026-05-13T15:31:04.144Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 998, + "fields": { + "course_code": "CHN0110J", + "course_title": "Chinese Language (level 1 part 1)", + "department": "CHN", + "number": 110, + "course_credits": 2, + "pre_requisites": "", + "description": "", + "course_topics": null, + "url": null, + "created_at": "2026-05-13T15:31:04.166Z", + "updated_at": "2026-05-13T15:31:04.166Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 999, + "fields": { + "course_code": "CHN0120J", + "course_title": "Chinese Language (level 1 part 2)", + "department": "CHN", + "number": 120, + "course_credits": 2, + "pre_requisites": "", + "description": "", + "course_topics": null, + "url": null, + "created_at": "2026-05-13T15:31:04.178Z", + "updated_at": "2026-05-13T15:31:04.178Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 1000, + "fields": { + "course_code": "CHN0310J", + "course_title": "Chinese Language (level 3 part 1)", + "department": "CHN", + "number": 310, + "course_credits": 2, + "pre_requisites": "", + "description": "", + "course_topics": null, + "url": null, + "created_at": "2026-05-13T15:31:04.191Z", + "updated_at": "2026-05-13T15:31:05.048Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 1001, + "fields": { + "course_code": "CHN0320J", + "course_title": "Chinese Language (level 3 part 2)", + "department": "CHN", + "number": 320, + "course_credits": 2, + "pre_requisites": "", + "description": "", + "course_topics": null, + "url": null, + "created_at": "2026-05-13T15:31:04.201Z", + "updated_at": "2026-05-13T15:31:05.058Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 1002, + "fields": { + "course_code": "CHN0410J", + "course_title": "Chinese Language (level 4 part 1)", + "department": "CHN", + "number": 410, + "course_credits": 2, + "pre_requisites": "", + "description": "", + "course_topics": null, + "url": null, + "created_at": "2026-05-13T15:31:04.212Z", + "updated_at": "2026-05-13T15:31:04.212Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 1003, + "fields": { + "course_code": "CHN0420J", + "course_title": "Chinese Language (level 4 part 2)", + "department": "CHN", + "number": 420, + "course_credits": 2, + "pre_requisites": "", + "description": "", + "course_topics": null, + "url": null, + "created_at": "2026-05-13T15:31:04.223Z", + "updated_at": "2026-05-13T15:31:04.223Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 1004, + "fields": { + "course_code": "GER1110J", + "course_title": "German II", + "department": "GER", + "number": 1110, + "course_credits": 2, + "pre_requisites": "", + "description": "", + "course_topics": null, + "url": null, + "created_at": "2026-05-13T15:31:04.263Z", + "updated_at": "2026-05-13T15:31:05.153Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 1005, + "fields": { + "course_code": "HIS2381J", + "course_title": "The Empire with Many Faces- History of the British Empire", + "department": "HIS", + "number": 2381, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": null, + "url": null, + "created_at": "2026-05-13T15:31:04.304Z", + "updated_at": "2026-05-13T15:31:04.304Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 1006, + "fields": { + "course_code": "JAPN1110J", + "course_title": "Basic Japanese II", + "department": "JAPN", + "number": 1110, + "course_credits": 2, + "pre_requisites": "", + "description": "", + "course_topics": null, + "url": null, + "created_at": "2026-05-13T15:31:04.327Z", + "updated_at": "2026-05-13T15:31:04.327Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 1007, + "fields": { + "course_code": "ENGR0010J", + "course_title": "Introduction to Engineering Professions and Careers", + "department": "ENGR", + "number": 10, + "course_credits": 1, + "pre_requisites": "", + "description": "", + "course_topics": null, + "url": null, + "created_at": "2026-05-13T15:31:04.442Z", + "updated_at": "2026-05-13T15:31:04.442Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 1008, + "fields": { + "course_code": "STAT1000J", + "course_title": "Data Science for Future Engineers", + "department": "STAT", + "number": 1000, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": null, + "url": null, + "created_at": "2026-05-13T15:31:04.487Z", + "updated_at": "2026-05-13T15:31:04.487Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 1009, + "fields": { + "course_code": "ECE3480J", + "course_title": "Introduction to Quantum Information Science", + "department": "ECE", + "number": 3480, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": null, + "url": null, + "created_at": "2026-05-13T15:31:04.713Z", + "updated_at": "2026-05-13T15:31:04.713Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 1010, + "fields": { + "course_code": "STAT4130J", + "course_title": "Applied Regression Analysis", + "department": "STAT", + "number": 4130, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": null, + "url": null, + "created_at": "2026-05-13T15:31:04.985Z", + "updated_at": "2026-05-13T15:31:04.985Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 1011, + "fields": { + "course_code": "ART2350J", + "course_title": "Introduction to the History of Art", + "department": "ART", + "number": 2350, + "course_credits": 4, + "pre_requisites": "", + "description": "", + "course_topics": null, + "url": null, + "created_at": "2026-05-13T15:31:05.019Z", + "updated_at": "2026-05-13T15:31:05.019Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 1012, + "fields": { + "course_code": "ART2030J", + "course_title": "Introduction to Chinese Theater: Text, Performance, and History", + "department": "ART", + "number": 2030, + "course_credits": 2, + "pre_requisites": "", + "description": "", + "course_topics": null, + "url": null, + "created_at": "2026-05-13T15:31:05.029Z", + "updated_at": "2026-05-13T15:31:05.029Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 1013, + "fields": { + "course_code": "CHN0610J", + "course_title": "Chinese Language (level 6 part 1)", + "department": "CHN", + "number": 610, + "course_credits": 2, + "pre_requisites": "", + "description": "", + "course_topics": null, + "url": null, + "created_at": "2026-05-13T15:31:05.068Z", + "updated_at": "2026-05-13T15:31:05.068Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 1014, + "fields": { + "course_code": "CHN0620J", + "course_title": "Chinese Language (level 6 part 2)", + "department": "CHN", + "number": 620, + "course_credits": 2, + "pre_requisites": "", + "description": "", + "course_topics": null, + "url": null, + "created_at": "2026-05-13T15:31:05.079Z", + "updated_at": "2026-05-13T15:31:05.079Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 1015, + "fields": { + "course_code": "CUL2620J", + "course_title": "Intercultural Communication: Korean Culture", + "department": "CUL", + "number": 2620, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": null, + "url": null, + "created_at": "2026-05-13T15:31:05.104Z", + "updated_at": "2026-05-13T15:31:05.104Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 1016, + "fields": { + "course_code": "LIN3000J", + "course_title": "Second Language Acquisition: Social and Humanistic Perspectives", + "department": "LIN", + "number": 3000, + "course_credits": 3, + "pre_requisites": "", + "description": "", + "course_topics": null, + "url": null, + "created_at": "2026-05-13T15:31:05.201Z", + "updated_at": "2026-05-13T15:31:05.201Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.course", + "pk": 1017, + "fields": { + "course_code": "SDG1109", + "course_title": "Energy Materials for Sustainable Development", + "department": "SDG", + "number": 1109, + "course_credits": 2, + "pre_requisites": "", + "description": "", + "course_topics": null, + "url": null, + "created_at": "2026-05-13T15:31:05.253Z", + "updated_at": "2026-05-13T15:31:05.253Z", + "crosslisted_courses": [], + "distribs": [] + } +}, +{ + "model": "web.courseoffering", + "pk": 222, + "fields": { + "course": 670, + "term": "26S", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:02.797Z", + "updated_at": "2026-05-13T15:31:02.797Z", + "course_registration_number": null, + "instructors": [ + 102, + 103, + 104, + 105, + 106, + 107, + 108 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 223, + "fields": { + "course": 619, + "term": "26S", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:02.830Z", + "updated_at": "2026-05-13T15:31:02.830Z", + "course_registration_number": null, + "instructors": [ + 109 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 224, + "fields": { + "course": 626, + "term": "26S", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:02.841Z", + "updated_at": "2026-05-13T15:31:02.841Z", + "course_registration_number": null, + "instructors": [ + 110 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 225, + "fields": { + "course": 627, + "term": "26S", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:02.853Z", + "updated_at": "2026-05-13T15:31:02.853Z", + "course_registration_number": null, + "instructors": [ + 109 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 226, + "fields": { + "course": 978, + "term": "26S", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:02.863Z", + "updated_at": "2026-05-13T15:31:02.863Z", + "course_registration_number": null, + "instructors": [ + 111 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 227, + "fields": { + "course": 629, + "term": "26S", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:02.874Z", + "updated_at": "2026-05-13T15:31:02.874Z", + "course_registration_number": null, + "instructors": [ + 112 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 228, + "fields": { + "course": 632, + "term": "26S", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:02.885Z", + "updated_at": "2026-05-13T15:31:02.885Z", + "course_registration_number": null, + "instructors": [ + 113 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 229, + "fields": { + "course": 795, + "term": "26S", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:02.896Z", + "updated_at": "2026-05-13T15:31:02.896Z", + "course_registration_number": null, + "instructors": [ + 114 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 230, + "fields": { + "course": 663, + "term": "26S", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:02.907Z", + "updated_at": "2026-05-13T15:31:02.907Z", + "course_registration_number": null, + "instructors": [ + 115 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 231, + "fields": { + "course": 635, + "term": "26S", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:02.919Z", + "updated_at": "2026-05-13T15:31:02.919Z", + "course_registration_number": null, + "instructors": [ + 116, + 117 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 232, + "fields": { + "course": 637, + "term": "26S", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:02.933Z", + "updated_at": "2026-05-13T15:31:02.933Z", + "course_registration_number": null, + "instructors": [ + 118 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 233, + "fields": { + "course": 638, + "term": "26S", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:02.944Z", + "updated_at": "2026-05-13T15:31:02.944Z", + "course_registration_number": null, + "instructors": [ + 119 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 234, + "fields": { + "course": 979, + "term": "26S", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:02.956Z", + "updated_at": "2026-05-13T15:31:02.956Z", + "course_registration_number": null, + "instructors": [ + 120 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 235, + "fields": { + "course": 980, + "term": "26S", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:02.968Z", + "updated_at": "2026-05-13T15:31:02.968Z", + "course_registration_number": null, + "instructors": [ + 120 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 236, + "fields": { + "course": 981, + "term": "26S", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:02.978Z", + "updated_at": "2026-05-13T15:31:02.978Z", + "course_registration_number": null, + "instructors": [ + 120 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 237, + "fields": { + "course": 982, + "term": "26S", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:02.991Z", + "updated_at": "2026-05-13T15:31:02.991Z", + "course_registration_number": null, + "instructors": [ + 121 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 238, + "fields": { + "course": 917, + "term": "26S", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.002Z", + "updated_at": "2026-05-13T15:31:03.002Z", + "course_registration_number": null, + "instructors": [ + 122 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 239, + "fields": { + "course": 852, + "term": "26S", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.013Z", + "updated_at": "2026-05-13T15:31:03.013Z", + "course_registration_number": null, + "instructors": [ + 123 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 240, + "fields": { + "course": 854, + "term": "26S", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.024Z", + "updated_at": "2026-05-13T15:31:03.024Z", + "course_registration_number": null, + "instructors": [ + 118 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 241, + "fields": { + "course": 727, + "term": "26S", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.033Z", + "updated_at": "2026-05-13T15:31:03.033Z", + "course_registration_number": null, + "instructors": [ + 124 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 242, + "fields": { + "course": 983, + "term": "26S", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.045Z", + "updated_at": "2026-05-13T15:31:03.045Z", + "course_registration_number": null, + "instructors": [ + 125 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 243, + "fields": { + "course": 974, + "term": "26S", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.056Z", + "updated_at": "2026-05-13T15:31:03.056Z", + "course_registration_number": null, + "instructors": [ + 125 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 244, + "fields": { + "course": 900, + "term": "26S", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.065Z", + "updated_at": "2026-05-13T15:31:03.065Z", + "course_registration_number": null, + "instructors": [ + 115 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 245, + "fields": { + "course": 904, + "term": "26S", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.074Z", + "updated_at": "2026-05-13T15:31:03.074Z", + "course_registration_number": null, + "instructors": [ + 126 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 246, + "fields": { + "course": 936, + "term": "26S", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.086Z", + "updated_at": "2026-05-13T15:31:03.086Z", + "course_registration_number": null, + "instructors": [ + 127 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 247, + "fields": { + "course": 984, + "term": "26S", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.098Z", + "updated_at": "2026-05-13T15:31:03.098Z", + "course_registration_number": null, + "instructors": [ + 128, + 129 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 248, + "fields": { + "course": 985, + "term": "26S", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.114Z", + "updated_at": "2026-05-13T15:31:03.114Z", + "course_registration_number": null, + "instructors": [ + 128, + 129 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 249, + "fields": { + "course": 986, + "term": "26S", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.126Z", + "updated_at": "2026-05-13T15:31:03.126Z", + "course_registration_number": null, + "instructors": [ + 130 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 250, + "fields": { + "course": 987, + "term": "26S", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.138Z", + "updated_at": "2026-05-13T15:31:03.138Z", + "course_registration_number": null, + "instructors": [ + 130 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 251, + "fields": { + "course": 623, + "term": "26S", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.147Z", + "updated_at": "2026-05-13T15:31:03.147Z", + "course_registration_number": null, + "instructors": [ + 131 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 252, + "fields": { + "course": 788, + "term": "26S", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.158Z", + "updated_at": "2026-05-13T15:31:03.158Z", + "course_registration_number": null, + "instructors": [ + 132 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 253, + "fields": { + "course": 988, + "term": "26S", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.170Z", + "updated_at": "2026-05-13T15:31:03.170Z", + "course_registration_number": null, + "instructors": [ + 133 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 254, + "fields": { + "course": 976, + "term": "26S", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.184Z", + "updated_at": "2026-05-13T15:31:03.184Z", + "course_registration_number": null, + "instructors": [ + 134 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 255, + "fields": { + "course": 989, + "term": "26S", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.196Z", + "updated_at": "2026-05-13T15:31:03.196Z", + "course_registration_number": null, + "instructors": [ + 125 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 256, + "fields": { + "course": 947, + "term": "26S", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.205Z", + "updated_at": "2026-05-13T15:31:03.205Z", + "course_registration_number": null, + "instructors": [ + 103 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 257, + "fields": { + "course": 902, + "term": "26S", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.214Z", + "updated_at": "2026-05-13T15:31:03.214Z", + "course_registration_number": null, + "instructors": [ + 135 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 258, + "fields": { + "course": 898, + "term": "26S", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.225Z", + "updated_at": "2026-05-13T15:31:03.225Z", + "course_registration_number": null, + "instructors": [ + 136 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 259, + "fields": { + "course": 957, + "term": "26S", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.237Z", + "updated_at": "2026-05-13T15:31:03.237Z", + "course_registration_number": null, + "instructors": [ + 136 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 260, + "fields": { + "course": 990, + "term": "26S", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.247Z", + "updated_at": "2026-05-13T15:31:03.247Z", + "course_registration_number": null, + "instructors": [ + 137 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 261, + "fields": { + "course": 991, + "term": "26S", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.260Z", + "updated_at": "2026-05-13T15:31:03.260Z", + "course_registration_number": null, + "instructors": [ + 138 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 262, + "fields": { + "course": 963, + "term": "26S", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.274Z", + "updated_at": "2026-05-13T15:31:03.274Z", + "course_registration_number": null, + "instructors": [ + 139 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 263, + "fields": { + "course": 962, + "term": "26S", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.295Z", + "updated_at": "2026-05-13T15:31:03.295Z", + "course_registration_number": null, + "instructors": [ + 139 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 264, + "fields": { + "course": 977, + "term": "26S", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.308Z", + "updated_at": "2026-05-13T15:31:03.308Z", + "course_registration_number": null, + "instructors": [ + 140 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 265, + "fields": { + "course": 612, + "term": "26S", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.320Z", + "updated_at": "2026-05-13T15:31:03.320Z", + "course_registration_number": null, + "instructors": [ + 141 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 266, + "fields": { + "course": 992, + "term": "26S", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.333Z", + "updated_at": "2026-05-13T15:31:03.333Z", + "course_registration_number": null, + "instructors": [ + 142 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 267, + "fields": { + "course": 959, + "term": "26S", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.345Z", + "updated_at": "2026-05-13T15:31:03.345Z", + "course_registration_number": null, + "instructors": [ + 143 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 268, + "fields": { + "course": 791, + "term": "26S", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.358Z", + "updated_at": "2026-05-13T15:31:03.358Z", + "course_registration_number": null, + "instructors": [ + 144 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 269, + "fields": { + "course": 967, + "term": "26S", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.370Z", + "updated_at": "2026-05-13T15:31:03.370Z", + "course_registration_number": null, + "instructors": [ + 145 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 270, + "fields": { + "course": 618, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.383Z", + "updated_at": "2026-05-13T15:31:03.383Z", + "course_registration_number": null, + "instructors": [ + 109 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 271, + "fields": { + "course": 620, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.391Z", + "updated_at": "2026-05-13T15:31:03.391Z", + "course_registration_number": null, + "instructors": [ + 146 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 272, + "fields": { + "course": 621, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.400Z", + "updated_at": "2026-05-13T15:31:03.400Z", + "course_registration_number": null, + "instructors": [ + 114 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 273, + "fields": { + "course": 866, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.408Z", + "updated_at": "2026-05-13T15:31:03.408Z", + "course_registration_number": null, + "instructors": [ + 110, + 111, + 119, + 127, + 134, + 147 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 274, + "fields": { + "course": 872, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.425Z", + "updated_at": "2026-05-13T15:31:03.425Z", + "course_registration_number": null, + "instructors": [ + 118, + 148 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 275, + "fields": { + "course": 993, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.439Z", + "updated_at": "2026-05-13T15:31:03.439Z", + "course_registration_number": null, + "instructors": [ + 115 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 276, + "fields": { + "course": 624, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.448Z", + "updated_at": "2026-05-13T15:31:03.448Z", + "course_registration_number": null, + "instructors": [ + 110 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 277, + "fields": { + "course": 625, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.458Z", + "updated_at": "2026-05-13T15:31:03.458Z", + "course_registration_number": null, + "instructors": [ + 110, + 149 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 278, + "fields": { + "course": 622, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.471Z", + "updated_at": "2026-05-13T15:31:03.471Z", + "course_registration_number": null, + "instructors": [ + 102, + 103, + 104, + 105, + 106, + 107 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 279, + "fields": { + "course": 665, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.486Z", + "updated_at": "2026-05-13T15:31:03.486Z", + "course_registration_number": null, + "instructors": [ + 109 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 280, + "fields": { + "course": 667, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.496Z", + "updated_at": "2026-05-13T15:31:03.496Z", + "course_registration_number": null, + "instructors": [ + 146 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 281, + "fields": { + "course": 669, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.506Z", + "updated_at": "2026-05-13T15:31:03.506Z", + "course_registration_number": null, + "instructors": [ + 114 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 282, + "fields": { + "course": 874, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.516Z", + "updated_at": "2026-05-13T15:31:03.516Z", + "course_registration_number": null, + "instructors": [ + 150 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 283, + "fields": { + "course": 877, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.528Z", + "updated_at": "2026-05-13T15:31:03.528Z", + "course_registration_number": null, + "instructors": [ + 150, + 151 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 284, + "fields": { + "course": 871, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.540Z", + "updated_at": "2026-05-13T15:31:03.540Z", + "course_registration_number": null, + "instructors": [ + 152 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 285, + "fields": { + "course": 640, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.553Z", + "updated_at": "2026-05-13T15:31:03.553Z", + "course_registration_number": null, + "instructors": [ + 153 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 286, + "fields": { + "course": 627, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.565Z", + "updated_at": "2026-05-13T15:31:03.565Z", + "course_registration_number": null, + "instructors": [ + 146 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 287, + "fields": { + "course": 628, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.576Z", + "updated_at": "2026-05-13T15:31:03.576Z", + "course_registration_number": null, + "instructors": [ + 154, + 155 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 288, + "fields": { + "course": 631, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.593Z", + "updated_at": "2026-05-13T15:31:03.593Z", + "course_registration_number": null, + "instructors": [ + 156 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 289, + "fields": { + "course": 632, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.607Z", + "updated_at": "2026-05-13T15:31:03.607Z", + "course_registration_number": null, + "instructors": [ + 157 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 290, + "fields": { + "course": 978, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.619Z", + "updated_at": "2026-05-13T15:31:03.619Z", + "course_registration_number": null, + "instructors": [ + 111, + 158 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 291, + "fields": { + "course": 636, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.634Z", + "updated_at": "2026-05-13T15:31:03.634Z", + "course_registration_number": null, + "instructors": [ + 159 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 292, + "fields": { + "course": 869, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.647Z", + "updated_at": "2026-05-13T15:31:03.647Z", + "course_registration_number": null, + "instructors": [ + 127 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 293, + "fields": { + "course": 634, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.658Z", + "updated_at": "2026-05-13T15:31:03.658Z", + "course_registration_number": null, + "instructors": [ + 160 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 294, + "fields": { + "course": 979, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.670Z", + "updated_at": "2026-05-13T15:31:03.670Z", + "course_registration_number": null, + "instructors": [ + 161 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 295, + "fields": { + "course": 980, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.687Z", + "updated_at": "2026-05-13T15:31:03.687Z", + "course_registration_number": null, + "instructors": [ + 161 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 296, + "fields": { + "course": 981, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.700Z", + "updated_at": "2026-05-13T15:31:03.700Z", + "course_registration_number": null, + "instructors": [ + 161 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 297, + "fields": { + "course": 630, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.710Z", + "updated_at": "2026-05-13T15:31:03.710Z", + "course_registration_number": null, + "instructors": [ + 162 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 298, + "fields": { + "course": 868, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.723Z", + "updated_at": "2026-05-13T15:31:03.723Z", + "course_registration_number": null, + "instructors": [ + 163 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 299, + "fields": { + "course": 762, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.734Z", + "updated_at": "2026-05-13T15:31:03.734Z", + "course_registration_number": null, + "instructors": [ + 155 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 300, + "fields": { + "course": 764, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.746Z", + "updated_at": "2026-05-13T15:31:03.746Z", + "course_registration_number": null, + "instructors": [ + 164 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 301, + "fields": { + "course": 766, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.759Z", + "updated_at": "2026-05-13T15:31:03.759Z", + "course_registration_number": null, + "instructors": [ + 148 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 302, + "fields": { + "course": 879, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.769Z", + "updated_at": "2026-05-13T15:31:03.769Z", + "course_registration_number": null, + "instructors": [ + 112 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 303, + "fields": { + "course": 767, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.779Z", + "updated_at": "2026-05-13T15:31:03.779Z", + "course_registration_number": null, + "instructors": [ + 156 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 304, + "fields": { + "course": 768, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.789Z", + "updated_at": "2026-05-13T15:31:03.789Z", + "course_registration_number": null, + "instructors": [ + 165 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 305, + "fields": { + "course": 884, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.802Z", + "updated_at": "2026-05-13T15:31:03.802Z", + "course_registration_number": null, + "instructors": [ + 123 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 306, + "fields": { + "course": 805, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.813Z", + "updated_at": "2026-05-13T15:31:03.813Z", + "course_registration_number": null, + "instructors": [ + 166 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 307, + "fields": { + "course": 807, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.833Z", + "updated_at": "2026-05-13T15:31:03.833Z", + "course_registration_number": null, + "instructors": [ + 167 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 308, + "fields": { + "course": 867, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.845Z", + "updated_at": "2026-05-13T15:31:03.845Z", + "course_registration_number": null, + "instructors": [ + 152 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 309, + "fields": { + "course": 781, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.855Z", + "updated_at": "2026-05-13T15:31:03.855Z", + "course_registration_number": null, + "instructors": [ + 168 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 310, + "fields": { + "course": 769, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.868Z", + "updated_at": "2026-05-13T15:31:03.868Z", + "course_registration_number": null, + "instructors": [ + 169 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 311, + "fields": { + "course": 772, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.881Z", + "updated_at": "2026-05-13T15:31:03.881Z", + "course_registration_number": null, + "instructors": [ + 170 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 312, + "fields": { + "course": 829, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.895Z", + "updated_at": "2026-05-13T15:31:03.895Z", + "course_registration_number": null, + "instructors": [ + 148 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 313, + "fields": { + "course": 804, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.905Z", + "updated_at": "2026-05-13T15:31:03.905Z", + "course_registration_number": null, + "instructors": [ + 171 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 314, + "fields": { + "course": 819, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.917Z", + "updated_at": "2026-05-13T15:31:03.917Z", + "course_registration_number": null, + "instructors": [ + 139 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 315, + "fields": { + "course": 881, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.927Z", + "updated_at": "2026-05-13T15:31:03.927Z", + "course_registration_number": null, + "instructors": [ + 172 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 316, + "fields": { + "course": 883, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.940Z", + "updated_at": "2026-05-13T15:31:03.940Z", + "course_registration_number": null, + "instructors": [ + 173 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 317, + "fields": { + "course": 810, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.952Z", + "updated_at": "2026-05-13T15:31:03.952Z", + "course_registration_number": null, + "instructors": [ + 115 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 318, + "fields": { + "course": 888, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.962Z", + "updated_at": "2026-05-13T15:31:03.962Z", + "course_registration_number": null, + "instructors": [ + 174 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 319, + "fields": { + "course": 811, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.975Z", + "updated_at": "2026-05-13T15:31:03.975Z", + "course_registration_number": null, + "instructors": [ + 115 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 320, + "fields": { + "course": 889, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.985Z", + "updated_at": "2026-05-13T15:31:03.985Z", + "course_registration_number": null, + "instructors": [ + 115 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 321, + "fields": { + "course": 890, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:03.995Z", + "updated_at": "2026-05-13T15:31:03.995Z", + "course_registration_number": null, + "instructors": [ + 175 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 322, + "fields": { + "course": 840, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.008Z", + "updated_at": "2026-05-13T15:31:04.008Z", + "course_registration_number": null, + "instructors": [ + 115, + 121 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 323, + "fields": { + "course": 994, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.021Z", + "updated_at": "2026-05-13T15:31:04.021Z", + "course_registration_number": null, + "instructors": [ + 121 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 324, + "fields": { + "course": 995, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.032Z", + "updated_at": "2026-05-13T15:31:04.032Z", + "course_registration_number": null, + "instructors": [ + 121 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 325, + "fields": { + "course": 982, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.041Z", + "updated_at": "2026-05-13T15:31:04.041Z", + "course_registration_number": null, + "instructors": [ + 121 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 326, + "fields": { + "course": 996, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.051Z", + "updated_at": "2026-05-13T15:31:04.051Z", + "course_registration_number": null, + "instructors": [ + 134, + 158 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 327, + "fields": { + "course": 825, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.062Z", + "updated_at": "2026-05-13T15:31:04.062Z", + "course_registration_number": null, + "instructors": [ + 176 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 328, + "fields": { + "course": 831, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.074Z", + "updated_at": "2026-05-13T15:31:04.074Z", + "course_registration_number": null, + "instructors": [ + 177 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 329, + "fields": { + "course": 832, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.086Z", + "updated_at": "2026-05-13T15:31:04.086Z", + "course_registration_number": null, + "instructors": [ + 178 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 330, + "fields": { + "course": 833, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.098Z", + "updated_at": "2026-05-13T15:31:04.098Z", + "course_registration_number": null, + "instructors": [ + 113 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 331, + "fields": { + "course": 897, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.108Z", + "updated_at": "2026-05-13T15:31:04.108Z", + "course_registration_number": null, + "instructors": [ + 124 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 332, + "fields": { + "course": 927, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.118Z", + "updated_at": "2026-05-13T15:31:04.118Z", + "course_registration_number": null, + "instructors": [ + 126 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 333, + "fields": { + "course": 932, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.127Z", + "updated_at": "2026-05-13T15:31:04.127Z", + "course_registration_number": null, + "instructors": [ + 126 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 334, + "fields": { + "course": 929, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.137Z", + "updated_at": "2026-05-13T15:31:04.137Z", + "course_registration_number": null, + "instructors": [ + 110 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 335, + "fields": { + "course": 997, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.147Z", + "updated_at": "2026-05-13T15:31:04.147Z", + "course_registration_number": null, + "instructors": [ + 125 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 336, + "fields": { + "course": 934, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.157Z", + "updated_at": "2026-05-13T15:31:04.157Z", + "course_registration_number": null, + "instructors": [ + 179 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 337, + "fields": { + "course": 998, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.170Z", + "updated_at": "2026-05-13T15:31:04.170Z", + "course_registration_number": null, + "instructors": [ + 128, + 129 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 338, + "fields": { + "course": 999, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.181Z", + "updated_at": "2026-05-13T15:31:04.181Z", + "course_registration_number": null, + "instructors": [ + 128, + 129 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 339, + "fields": { + "course": 1000, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.194Z", + "updated_at": "2026-05-13T15:31:04.194Z", + "course_registration_number": null, + "instructors": [ + 129 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 340, + "fields": { + "course": 1001, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.205Z", + "updated_at": "2026-05-13T15:31:04.205Z", + "course_registration_number": null, + "instructors": [ + 129 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 341, + "fields": { + "course": 1002, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.216Z", + "updated_at": "2026-05-13T15:31:04.216Z", + "course_registration_number": null, + "instructors": [ + 130 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 342, + "fields": { + "course": 1003, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.226Z", + "updated_at": "2026-05-13T15:31:04.226Z", + "course_registration_number": null, + "instructors": [ + 130 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 343, + "fields": { + "course": 623, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.236Z", + "updated_at": "2026-05-13T15:31:04.236Z", + "course_registration_number": null, + "instructors": [ + 131 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 344, + "fields": { + "course": 654, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.245Z", + "updated_at": "2026-05-13T15:31:04.245Z", + "course_registration_number": null, + "instructors": [ + 134 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 345, + "fields": { + "course": 902, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.255Z", + "updated_at": "2026-05-13T15:31:04.255Z", + "course_registration_number": null, + "instructors": [ + 135 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 346, + "fields": { + "course": 1004, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.267Z", + "updated_at": "2026-05-13T15:31:04.267Z", + "course_registration_number": null, + "instructors": [ + 135 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 347, + "fields": { + "course": 899, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.276Z", + "updated_at": "2026-05-13T15:31:04.276Z", + "course_registration_number": null, + "instructors": [ + 135 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 348, + "fields": { + "course": 898, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.286Z", + "updated_at": "2026-05-13T15:31:04.286Z", + "course_registration_number": null, + "instructors": [ + 136 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 349, + "fields": { + "course": 643, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.296Z", + "updated_at": "2026-05-13T15:31:04.296Z", + "course_registration_number": null, + "instructors": [ + 136 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 350, + "fields": { + "course": 1005, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.307Z", + "updated_at": "2026-05-13T15:31:04.307Z", + "course_registration_number": null, + "instructors": [ + 180 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 351, + "fields": { + "course": 991, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.320Z", + "updated_at": "2026-05-13T15:31:04.320Z", + "course_registration_number": null, + "instructors": [ + 138 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 352, + "fields": { + "course": 1006, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.331Z", + "updated_at": "2026-05-13T15:31:04.331Z", + "course_registration_number": null, + "instructors": [ + 138 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 353, + "fields": { + "course": 961, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.340Z", + "updated_at": "2026-05-13T15:31:04.340Z", + "course_registration_number": null, + "instructors": [ + 181 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 354, + "fields": { + "course": 972, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.352Z", + "updated_at": "2026-05-13T15:31:04.352Z", + "course_registration_number": null, + "instructors": [ + 182 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 355, + "fields": { + "course": 970, + "term": "25F", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.363Z", + "updated_at": "2026-05-13T15:31:04.363Z", + "course_registration_number": null, + "instructors": [ + 182 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 356, + "fields": { + "course": 664, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.373Z", + "updated_at": "2026-05-13T15:31:04.373Z", + "course_registration_number": null, + "instructors": [ + 109 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 357, + "fields": { + "course": 666, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.382Z", + "updated_at": "2026-05-13T15:31:04.382Z", + "course_registration_number": null, + "instructors": [ + 146 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 358, + "fields": { + "course": 668, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.392Z", + "updated_at": "2026-05-13T15:31:04.392Z", + "course_registration_number": null, + "instructors": [ + 114 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 359, + "fields": { + "course": 875, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.401Z", + "updated_at": "2026-05-13T15:31:04.401Z", + "course_registration_number": null, + "instructors": [ + 183 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 360, + "fields": { + "course": 876, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.413Z", + "updated_at": "2026-05-13T15:31:04.413Z", + "course_registration_number": null, + "instructors": [ + 150, + 183 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 361, + "fields": { + "course": 613, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.424Z", + "updated_at": "2026-05-13T15:31:04.424Z", + "course_registration_number": null, + "instructors": [ + 152 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 362, + "fields": { + "course": 870, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.433Z", + "updated_at": "2026-05-13T15:31:04.433Z", + "course_registration_number": null, + "instructors": [ + 153, + 183 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 363, + "fields": { + "course": 1007, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.446Z", + "updated_at": "2026-05-13T15:31:04.446Z", + "course_registration_number": null, + "instructors": [ + 127 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 364, + "fields": { + "course": 866, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.456Z", + "updated_at": "2026-05-13T15:31:04.456Z", + "course_registration_number": null, + "instructors": [ + 107, + 110, + 115, + 134, + 149, + 184, + 185 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 365, + "fields": { + "course": 872, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.480Z", + "updated_at": "2026-05-13T15:31:04.480Z", + "course_registration_number": null, + "instructors": [ + 173 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 366, + "fields": { + "course": 1008, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.491Z", + "updated_at": "2026-05-13T15:31:04.491Z", + "course_registration_number": null, + "instructors": [ + 121 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 367, + "fields": { + "course": 627, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.500Z", + "updated_at": "2026-05-13T15:31:04.500Z", + "course_registration_number": null, + "instructors": [ + 146 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 368, + "fields": { + "course": 629, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.510Z", + "updated_at": "2026-05-13T15:31:04.510Z", + "course_registration_number": null, + "instructors": [ + 186 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 369, + "fields": { + "course": 631, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.522Z", + "updated_at": "2026-05-13T15:31:04.522Z", + "course_registration_number": null, + "instructors": [ + 187 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 370, + "fields": { + "course": 630, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.534Z", + "updated_at": "2026-05-13T15:31:04.534Z", + "course_registration_number": null, + "instructors": [ + 154, + 188 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 371, + "fields": { + "course": 632, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.547Z", + "updated_at": "2026-05-13T15:31:04.547Z", + "course_registration_number": null, + "instructors": [ + 113 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 372, + "fields": { + "course": 978, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.558Z", + "updated_at": "2026-05-13T15:31:04.558Z", + "course_registration_number": null, + "instructors": [ + 111 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 373, + "fields": { + "course": 663, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.568Z", + "updated_at": "2026-05-13T15:31:04.568Z", + "course_registration_number": null, + "instructors": [ + 109 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 374, + "fields": { + "course": 628, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.579Z", + "updated_at": "2026-05-13T15:31:04.579Z", + "course_registration_number": null, + "instructors": [ + 172 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 375, + "fields": { + "course": 869, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.591Z", + "updated_at": "2026-05-13T15:31:04.591Z", + "course_registration_number": null, + "instructors": [ + 176 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 376, + "fields": { + "course": 637, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.602Z", + "updated_at": "2026-05-13T15:31:04.602Z", + "course_registration_number": null, + "instructors": [ + 189 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 377, + "fields": { + "course": 638, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.616Z", + "updated_at": "2026-05-13T15:31:04.616Z", + "course_registration_number": null, + "instructors": [ + 119 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 378, + "fields": { + "course": 633, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.626Z", + "updated_at": "2026-05-13T15:31:04.626Z", + "course_registration_number": null, + "instructors": [ + 160 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 379, + "fields": { + "course": 979, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.636Z", + "updated_at": "2026-05-13T15:31:04.636Z", + "course_registration_number": null, + "instructors": [] + } +}, +{ + "model": "web.courseoffering", + "pk": 380, + "fields": { + "course": 980, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.643Z", + "updated_at": "2026-05-13T15:31:04.643Z", + "course_registration_number": null, + "instructors": [] + } +}, +{ + "model": "web.courseoffering", + "pk": 381, + "fields": { + "course": 981, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.650Z", + "updated_at": "2026-05-13T15:31:04.650Z", + "course_registration_number": null, + "instructors": [] + } +}, +{ + "model": "web.courseoffering", + "pk": 382, + "fields": { + "course": 868, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.657Z", + "updated_at": "2026-05-13T15:31:04.657Z", + "course_registration_number": null, + "instructors": [ + 157 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 383, + "fields": { + "course": 762, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.667Z", + "updated_at": "2026-05-13T15:31:04.667Z", + "course_registration_number": null, + "instructors": [ + 122 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 384, + "fields": { + "course": 763, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.676Z", + "updated_at": "2026-05-13T15:31:04.676Z", + "course_registration_number": null, + "instructors": [ + 164 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 385, + "fields": { + "course": 767, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.686Z", + "updated_at": "2026-05-13T15:31:04.686Z", + "course_registration_number": null, + "instructors": [ + 156 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 386, + "fields": { + "course": 768, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.696Z", + "updated_at": "2026-05-13T15:31:04.696Z", + "course_registration_number": null, + "instructors": [ + 165 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 387, + "fields": { + "course": 795, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.706Z", + "updated_at": "2026-05-13T15:31:04.706Z", + "course_registration_number": null, + "instructors": [ + 146 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 388, + "fields": { + "course": 1009, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.717Z", + "updated_at": "2026-05-13T15:31:04.717Z", + "course_registration_number": null, + "instructors": [ + 190 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 389, + "fields": { + "course": 776, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.728Z", + "updated_at": "2026-05-13T15:31:04.728Z", + "course_registration_number": null, + "instructors": [ + 191 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 390, + "fields": { + "course": 777, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.742Z", + "updated_at": "2026-05-13T15:31:04.742Z", + "course_registration_number": null, + "instructors": [ + 192 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 391, + "fields": { + "course": 778, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.753Z", + "updated_at": "2026-05-13T15:31:04.753Z", + "course_registration_number": null, + "instructors": [ + 178 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 392, + "fields": { + "course": 779, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.762Z", + "updated_at": "2026-05-13T15:31:04.762Z", + "course_registration_number": null, + "instructors": [ + 169 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 393, + "fields": { + "course": 781, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.771Z", + "updated_at": "2026-05-13T15:31:04.771Z", + "course_registration_number": null, + "instructors": [ + 149, + 193 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 394, + "fields": { + "course": 837, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.783Z", + "updated_at": "2026-05-13T15:31:04.783Z", + "course_registration_number": null, + "instructors": [ + 127, + 171 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 395, + "fields": { + "course": 770, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.794Z", + "updated_at": "2026-05-13T15:31:04.794Z", + "course_registration_number": null, + "instructors": [ + 194 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 396, + "fields": { + "course": 771, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.804Z", + "updated_at": "2026-05-13T15:31:04.804Z", + "course_registration_number": null, + "instructors": [ + 124 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 397, + "fields": { + "course": 773, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.815Z", + "updated_at": "2026-05-13T15:31:04.815Z", + "course_registration_number": null, + "instructors": [ + 110 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 398, + "fields": { + "course": 829, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.824Z", + "updated_at": "2026-05-13T15:31:04.824Z", + "course_registration_number": null, + "instructors": [] + } +}, +{ + "model": "web.courseoffering", + "pk": 399, + "fields": { + "course": 840, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.832Z", + "updated_at": "2026-05-13T15:31:04.832Z", + "course_registration_number": null, + "instructors": [ + 115, + 121 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 400, + "fields": { + "course": 819, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.844Z", + "updated_at": "2026-05-13T15:31:04.844Z", + "course_registration_number": null, + "instructors": [ + 139 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 401, + "fields": { + "course": 996, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.853Z", + "updated_at": "2026-05-13T15:31:04.853Z", + "course_registration_number": null, + "instructors": [ + 195, + 196, + 197 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 402, + "fields": { + "course": 880, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.870Z", + "updated_at": "2026-05-13T15:31:04.870Z", + "course_registration_number": null, + "instructors": [ + 155 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 403, + "fields": { + "course": 800, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.881Z", + "updated_at": "2026-05-13T15:31:04.881Z", + "course_registration_number": null, + "instructors": [ + 122 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 404, + "fields": { + "course": 801, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.892Z", + "updated_at": "2026-05-13T15:31:04.892Z", + "course_registration_number": null, + "instructors": [ + 151 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 405, + "fields": { + "course": 882, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.900Z", + "updated_at": "2026-05-13T15:31:04.900Z", + "course_registration_number": null, + "instructors": [ + 147 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 406, + "fields": { + "course": 808, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.910Z", + "updated_at": "2026-05-13T15:31:04.910Z", + "course_registration_number": null, + "instructors": [ + 174 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 407, + "fields": { + "course": 940, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.920Z", + "updated_at": "2026-05-13T15:31:04.920Z", + "course_registration_number": null, + "instructors": [ + 115 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 408, + "fields": { + "course": 887, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.929Z", + "updated_at": "2026-05-13T15:31:04.929Z", + "course_registration_number": null, + "instructors": [ + 165 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 409, + "fields": { + "course": 809, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.938Z", + "updated_at": "2026-05-13T15:31:04.938Z", + "course_registration_number": null, + "instructors": [ + 115 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 410, + "fields": { + "course": 813, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.947Z", + "updated_at": "2026-05-13T15:31:04.947Z", + "course_registration_number": null, + "instructors": [ + 198 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 411, + "fields": { + "course": 891, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.959Z", + "updated_at": "2026-05-13T15:31:04.959Z", + "course_registration_number": null, + "instructors": [ + 163 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 412, + "fields": { + "course": 895, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.969Z", + "updated_at": "2026-05-13T15:31:04.969Z", + "course_registration_number": null, + "instructors": [ + 170 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 413, + "fields": { + "course": 671, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.979Z", + "updated_at": "2026-05-13T15:31:04.979Z", + "course_registration_number": null, + "instructors": [ + 110 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 414, + "fields": { + "course": 1010, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:04.990Z", + "updated_at": "2026-05-13T15:31:04.990Z", + "course_registration_number": null, + "instructors": [ + 121 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 415, + "fields": { + "course": 982, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:05.001Z", + "updated_at": "2026-05-13T15:31:05.001Z", + "course_registration_number": null, + "instructors": [ + 121 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 416, + "fields": { + "course": 989, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:05.012Z", + "updated_at": "2026-05-13T15:31:05.012Z", + "course_registration_number": null, + "instructors": [ + 125 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 417, + "fields": { + "course": 1011, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:05.022Z", + "updated_at": "2026-05-13T15:31:05.022Z", + "course_registration_number": null, + "instructors": [ + 125 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 418, + "fields": { + "course": 1012, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:05.032Z", + "updated_at": "2026-05-13T15:31:05.032Z", + "course_registration_number": null, + "instructors": [ + 136 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 419, + "fields": { + "course": 933, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:05.042Z", + "updated_at": "2026-05-13T15:31:05.042Z", + "course_registration_number": null, + "instructors": [ + 110 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 420, + "fields": { + "course": 1000, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:05.052Z", + "updated_at": "2026-05-13T15:31:05.052Z", + "course_registration_number": null, + "instructors": [ + 130 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 421, + "fields": { + "course": 1001, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:05.062Z", + "updated_at": "2026-05-13T15:31:05.062Z", + "course_registration_number": null, + "instructors": [ + 130 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 422, + "fields": { + "course": 1013, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:05.072Z", + "updated_at": "2026-05-13T15:31:05.072Z", + "course_registration_number": null, + "instructors": [ + 130 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 423, + "fields": { + "course": 1014, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:05.083Z", + "updated_at": "2026-05-13T15:31:05.083Z", + "course_registration_number": null, + "instructors": [ + 130 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 424, + "fields": { + "course": 623, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:05.093Z", + "updated_at": "2026-05-13T15:31:05.093Z", + "course_registration_number": null, + "instructors": [ + 199 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 425, + "fields": { + "course": 1015, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:05.107Z", + "updated_at": "2026-05-13T15:31:05.107Z", + "course_registration_number": null, + "instructors": [ + 104 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 426, + "fields": { + "course": 614, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:05.116Z", + "updated_at": "2026-05-13T15:31:05.116Z", + "course_registration_number": null, + "instructors": [ + 107 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 427, + "fields": { + "course": 672, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:05.126Z", + "updated_at": "2026-05-13T15:31:05.126Z", + "course_registration_number": null, + "instructors": [ + 105 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 428, + "fields": { + "course": 950, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:05.136Z", + "updated_at": "2026-05-13T15:31:05.136Z", + "course_registration_number": null, + "instructors": [ + 105 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 429, + "fields": { + "course": 902, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:05.147Z", + "updated_at": "2026-05-13T15:31:05.147Z", + "course_registration_number": null, + "instructors": [ + 135 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 430, + "fields": { + "course": 1004, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:05.156Z", + "updated_at": "2026-05-13T15:31:05.156Z", + "course_registration_number": null, + "instructors": [ + 135 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 431, + "fields": { + "course": 899, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:05.165Z", + "updated_at": "2026-05-13T15:31:05.165Z", + "course_registration_number": null, + "instructors": [ + 135 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 432, + "fields": { + "course": 898, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:05.175Z", + "updated_at": "2026-05-13T15:31:05.175Z", + "course_registration_number": null, + "instructors": [ + 136 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 433, + "fields": { + "course": 957, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:05.184Z", + "updated_at": "2026-05-13T15:31:05.184Z", + "course_registration_number": null, + "instructors": [ + 136 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 434, + "fields": { + "course": 991, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:05.195Z", + "updated_at": "2026-05-13T15:31:05.195Z", + "course_registration_number": null, + "instructors": [ + 138 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 435, + "fields": { + "course": 1016, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:05.205Z", + "updated_at": "2026-05-13T15:31:05.205Z", + "course_registration_number": null, + "instructors": [ + 104 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 436, + "fields": { + "course": 961, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:05.215Z", + "updated_at": "2026-05-13T15:31:05.215Z", + "course_registration_number": null, + "instructors": [ + 200 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 437, + "fields": { + "course": 959, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:05.226Z", + "updated_at": "2026-05-13T15:31:05.226Z", + "course_registration_number": null, + "instructors": [ + 201 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 438, + "fields": { + "course": 971, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:05.237Z", + "updated_at": "2026-05-13T15:31:05.237Z", + "course_registration_number": null, + "instructors": [ + 182 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 439, + "fields": { + "course": 970, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:05.247Z", + "updated_at": "2026-05-13T15:31:05.247Z", + "course_registration_number": null, + "instructors": [ + 182 + ] + } +}, +{ + "model": "web.courseoffering", + "pk": 440, + "fields": { + "course": 1017, + "term": "25X", + "section": 1, + "period": "", + "limit": null, + "created_at": "2026-05-13T15:31:05.257Z", + "updated_at": "2026-05-13T15:31:05.257Z", + "course_registration_number": null, + "instructors": [ + 110 + ] + } +} +] diff --git a/apps/web/migrations/0001_initial.py b/apps/web/migrations/0001_initial.py index aaf4f61..a866fc3 100644 --- a/apps/web/migrations/0001_initial.py +++ b/apps/web/migrations/0001_initial.py @@ -1,6 +1,5 @@ # Generated by Django 5.0.8 on 2024-08-22 11:27 -import django.contrib.postgres.fields import django.db.models.deletion from django.conf import settings from django.db import migrations, models @@ -176,11 +175,7 @@ class Migration(migrations.Migration): ("updated_at", models.DateTimeField(auto_now=True)), ( "unauth_session_ids", - django.contrib.postgres.fields.ArrayField( - base_field=models.CharField(max_length=32, unique=True), - default=[], - size=None, - ), + models.JSONField(default=list), ), ( "user", diff --git a/apps/web/migrations/0002_alter_student_unauth_session_ids.py b/apps/web/migrations/0002_alter_student_unauth_session_ids.py index 7a89cfb..c7944f1 100644 --- a/apps/web/migrations/0002_alter_student_unauth_session_ids.py +++ b/apps/web/migrations/0002_alter_student_unauth_session_ids.py @@ -1,6 +1,5 @@ # Generated by Django 5.0.8 on 2024-08-22 13:47 -import django.contrib.postgres.fields from django.db import migrations, models @@ -13,11 +12,6 @@ class Migration(migrations.Migration): migrations.AlterField( model_name="student", name="unauth_session_ids", - field=django.contrib.postgres.fields.ArrayField( - base_field=models.CharField(max_length=32, unique=True), - blank=True, - default=list, - size=None, - ), + field=models.JSONField(blank=True, default=list), ), ] diff --git a/frontend b/frontend index 4f5081a..047c379 160000 --- a/frontend +++ b/frontend @@ -1 +1 @@ -Subproject commit 4f5081afd82023924911f42b7f0e6b3763a372d9 +Subproject commit 047c3796f8eaf13fcca37366dea3155b82c093b2 diff --git a/pyproject.toml b/pyproject.toml index bdba2ab..00797c5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,6 +5,7 @@ version = "0.0.1" dependencies = [ "beautifulsoup4>=4.14.0", "bpython>=0.26", + "celery>=5.5.0", "dj-database-url>=3.1.0", "django>=6.0.0", "django-cors-headers>=4.9.0", diff --git a/scripts/__init__.py b/scripts/__init__.py index 15bc822..0f2b41e 100644 --- a/scripts/__init__.py +++ b/scripts/__init__.py @@ -2,8 +2,8 @@ from apps.spider.models import CrawledData -# from apps.spider.tasks import crawl_medians, crawl_orc, crawl_timetable -from apps.spider.tasks import crawl_orc +# from apps.spider.tasks import crawl_medians, crawl_timetable +from apps.spider.tasks import crawl_offerings, crawl_orc from apps.spider.utils import retrieve_soup from apps.web.models import Course, CourseOffering, Instructor from lib.constants import CURRENT_TERM @@ -20,8 +20,8 @@ def crawl_and_import_data(): print("Crawling ORC. This will take a while.") crawl_orc() - # print("Crawling timetable") - # crawl_timetable() + print("Crawling course offerings") + crawl_offerings() # print("Crawling medians") # crawl_medians() @@ -29,8 +29,8 @@ def crawl_and_import_data(): print("Importing ORC") _import_crawled_datas(CrawledData.ORC_DEPARTMENT_COURSES) - # print("Importing timetable") - # _import_crawled_datas(CrawledData.COURSE_TIMETABLE) + print("Importing course offerings") + _import_crawled_datas(CrawledData.COURSE_OFFERINGS) # print("Importing medians") # _import_crawled_datas(CrawledData.MEDIANS) @@ -39,9 +39,11 @@ def crawl_and_import_data(): def _import_crawled_datas(data_type): + from apps.spider.tasks import import_pending_crawled_data + for crawled_data in CrawledData.objects.filter(data_type=data_type): if crawled_data.has_change(): - crawled_data.approve_change() + import_pending_crawled_data(crawled_data.pk) # WARNING: Only use when already have course data but not instructor data diff --git a/uv.lock b/uv.lock index dc4218e..88b0bcb 100644 --- a/uv.lock +++ b/uv.lock @@ -2,6 +2,18 @@ version = 1 revision = 3 requires-python = "==3.14.*" +[[package]] +name = "amqp" +version = "5.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "vine" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/79/fc/ec94a357dfc6683d8c86f8b4cfa5416a4c36b28052ec8260c77aca96a443/amqp-5.3.1.tar.gz", hash = "sha256:cddc00c725449522023bad949f70fff7b48f0b1ade74d170a6f10ab044739432", size = 129013, upload-time = "2024-11-12T19:55:44.051Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/26/99/fc813cd978842c26c82534010ea849eee9ab3a13ea2b74e95cb9c99e747b/amqp-5.3.1-py3-none-any.whl", hash = "sha256:43b3319e1b4e7d1251833a93d672b4af1e40f3d632d479b98661a95f117880a2", size = 50944, upload-time = "2024-11-12T19:55:41.782Z" }, +] + [[package]] name = "ansicon" version = "1.89.0" @@ -45,6 +57,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/1a/39/47f9197bdd44df24d67ac8893641e16f386c984a0619ef2ee4c51fbbc019/beautifulsoup4-4.14.3-py3-none-any.whl", hash = "sha256:0918bfe44902e6ad8d57732ba310582e98da931428d231a5ecb9e7c703a735bb", size = 107721, upload-time = "2025-11-30T15:08:24.087Z" }, ] +[[package]] +name = "billiard" +version = "4.2.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/58/23/b12ac0bcdfb7360d664f40a00b1bda139cbbbced012c34e375506dbd0143/billiard-4.2.4.tar.gz", hash = "sha256:55f542c371209e03cd5862299b74e52e4fbcba8250ba611ad94276b369b6a85f", size = 156537, upload-time = "2025-11-30T13:28:48.52Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/87/8bab77b323f16d67be364031220069f79159117dd5e43eeb4be2fef1ac9b/billiard-4.2.4-py3-none-any.whl", hash = "sha256:525b42bdec68d2b983347ac312f892db930858495db601b5836ac24e6477cde5", size = 87070, upload-time = "2025-11-30T13:28:47.016Z" }, +] + [[package]] name = "blessed" version = "1.42.0" @@ -75,6 +96,26 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ea/92/26d8d98de4c1676305e03ec2be67850afaf883b507bf71b917d852585ec8/bpython-0.26-py3-none-any.whl", hash = "sha256:91bdbbe667078677dc6b236493fc03e47a04cd099630a32ca3f72d6d49b71e20", size = 175988, upload-time = "2025-10-28T07:19:40.114Z" }, ] +[[package]] +name = "celery" +version = "5.6.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "billiard" }, + { name = "click" }, + { name = "click-didyoumean" }, + { name = "click-plugins" }, + { name = "click-repl" }, + { name = "kombu" }, + { name = "python-dateutil" }, + { name = "tzlocal" }, + { name = "vine" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e8/b4/a1233943ab5c8ea05fb877a88a0a0622bf47444b99e4991a8045ac37ea1d/celery-5.6.3.tar.gz", hash = "sha256:177006bd2054b882e9f01be59abd8529e88879ef50d7918a7050c5a9f4e12912", size = 1742243, upload-time = "2026-03-26T12:14:51.76Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cf/c9/6eccdda96e098f7ae843162db2d3c149c6931a24fda69fe4ab84d0027eb5/celery-5.6.3-py3-none-any.whl", hash = "sha256:0808f42f80909c4d5833202360ffafb2a4f83f4d8e23e1285d926610e9a7afa6", size = 451235, upload-time = "2026-03-26T12:14:49.491Z" }, +] + [[package]] name = "certifi" version = "2026.5.20" @@ -125,6 +166,55 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/db/8f/61959034484a4a7c527811f4721e75d02d653a35afb0b6054474d8185d4c/charset_normalizer-3.4.7-py3-none-any.whl", hash = "sha256:3dce51d0f5e7951f8bb4900c257dad282f49190fdbebecd4ba99bcc41fef404d", size = 61958, upload-time = "2026-04-02T09:28:37.794Z" }, ] +[[package]] +name = "click" +version = "8.4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9b/98/518d8e5081007684232226f475082b30087d0f585e8457db087298259f49/click-8.4.1.tar.gz", hash = "sha256:918b5633eddf6b41c32d4f454bf0de810065c74e3f7dbf8ee5452f8be88d3e96", size = 353007, upload-time = "2026-05-22T04:08:37.769Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c7/0d/67e5b4109ea4a837e80daa87c2c696711955e40449a97e8926672534def2/click-8.4.1-py3-none-any.whl", hash = "sha256:482be17c6991b8c19c5429a1e995d9b0efdbb63172824c41f99965dc0ade8ec2", size = 116639, upload-time = "2026-05-22T04:08:35.26Z" }, +] + +[[package]] +name = "click-didyoumean" +version = "0.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/30/ce/217289b77c590ea1e7c24242d9ddd6e249e52c795ff10fac2c50062c48cb/click_didyoumean-0.3.1.tar.gz", hash = "sha256:4f82fdff0dbe64ef8ab2279bd6aa3f6a99c3b28c05aa09cbfc07c9d7fbb5a463", size = 3089, upload-time = "2024-03-24T08:22:07.499Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1b/5b/974430b5ffdb7a4f1941d13d83c64a0395114503cc357c6b9ae4ce5047ed/click_didyoumean-0.3.1-py3-none-any.whl", hash = "sha256:5c4bb6007cfea5f2fd6583a2fb6701a22a41eb98957e63d0fac41c10e7c3117c", size = 3631, upload-time = "2024-03-24T08:22:06.356Z" }, +] + +[[package]] +name = "click-plugins" +version = "1.1.1.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c3/a4/34847b59150da33690a36da3681d6bbc2ec14ee9a846bc30a6746e5984e4/click_plugins-1.1.1.2.tar.gz", hash = "sha256:d7af3984a99d243c131aa1a828331e7630f4a88a9741fd05c927b204bcf92261", size = 8343, upload-time = "2025-06-25T00:47:37.555Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3d/9a/2abecb28ae875e39c8cad711eb1186d8d14eab564705325e77e4e6ab9ae5/click_plugins-1.1.1.2-py2.py3-none-any.whl", hash = "sha256:008d65743833ffc1f5417bf0e78e8d2c23aab04d9745ba817bd3e71b0feb6aa6", size = 11051, upload-time = "2025-06-25T00:47:36.731Z" }, +] + +[[package]] +name = "click-repl" +version = "0.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "prompt-toolkit" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/cb/a2/57f4ac79838cfae6912f997b4d1a64a858fb0c86d7fcaae6f7b58d267fca/click-repl-0.3.0.tar.gz", hash = "sha256:17849c23dba3d667247dc4defe1757fff98694e90fe37474f3feebb69ced26a9", size = 10449, upload-time = "2023-06-15T12:43:51.141Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/52/40/9d857001228658f0d59e97ebd4c346fe73e138c6de1bce61dc568a57c7f8/click_repl-0.3.0-py3-none-any.whl", hash = "sha256:fb7e06deb8da8de86180a33a9da97ac316751c094c6899382da7feeeeb51b812", size = 10289, upload-time = "2023-06-15T12:43:48.626Z" }, +] + [[package]] name = "colorama" version = "0.4.6" @@ -141,6 +231,7 @@ source = { virtual = "." } dependencies = [ { name = "beautifulsoup4" }, { name = "bpython" }, + { name = "celery" }, { name = "dj-database-url" }, { name = "django" }, { name = "django-cors-headers" }, @@ -173,6 +264,7 @@ lint = [ requires-dist = [ { name = "beautifulsoup4", specifier = ">=4.14.0" }, { name = "bpython", specifier = ">=0.26" }, + { name = "celery", specifier = ">=5.5.0" }, { name = "dj-database-url", specifier = ">=3.1.0" }, { name = "django", specifier = ">=6.0.0" }, { name = "django-cors-headers", specifier = ">=4.9.0" }, @@ -448,6 +540,21 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b3/00/b61668fd3b1e43b445979ec9a9e0af4781bf06884937d1e906f6a1be6dff/jinxed-2.0.0-py2.py3-none-any.whl", hash = "sha256:b3df1be5262a37145ef42875a8bbf918f1a563fbd035359650dd9fc0bb2b9294", size = 95364, upload-time = "2026-05-08T21:25:24.536Z" }, ] +[[package]] +name = "kombu" +version = "5.6.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "amqp" }, + { name = "packaging" }, + { name = "tzdata" }, + { name = "vine" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b6/a5/607e533ed6c83ae1a696969b8e1c137dfebd5759a2e9682e26ff1b97740b/kombu-5.6.2.tar.gz", hash = "sha256:8060497058066c6f5aed7c26d7cd0d3b574990b09de842a8c5aaed0b92cc5a55", size = 472594, upload-time = "2025-12-29T20:30:07.779Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fb/0f/834427d8c03ff1d7e867d3db3d176470c64871753252b21b4f4897d1fa45/kombu-5.6.2-py3-none-any.whl", hash = "sha256:efcfc559da324d41d61ca311b0c64965ea35b4c55cc04ee36e55386145dace93", size = 214219, upload-time = "2025-12-29T20:30:05.74Z" }, +] + [[package]] name = "packaging" version = "26.2" @@ -490,6 +597,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ab/36/2ab7647fe1e84bba2baae7f04de241197eed62683fb3085e164de266d111/prek-0.4.1-py3-none-win_arm64.whl", hash = "sha256:5b4a348537924b20e208cbd87ef58e96ec37d691c5bec2969209c40de0ecf72e", size = 5423147, upload-time = "2026-05-20T04:27:17.023Z" }, ] +[[package]] +name = "prompt-toolkit" +version = "3.0.52" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "wcwidth" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a1/96/06e01a7b38dce6fe1db213e061a4602dd6032a8a97ef6c1a862537732421/prompt_toolkit-3.0.52.tar.gz", hash = "sha256:28cde192929c8e7321de85de1ddbe736f1375148b02f2e17edd840042b1be855", size = 434198, upload-time = "2025-08-27T15:24:02.057Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/84/03/0d3ce49e2505ae70cf43bc5bb3033955d2fc9f932163e84dc0779cc47f48/prompt_toolkit-3.0.52-py3-none-any.whl", hash = "sha256:9aac639a3bbd33284347de5ad8d68ecc044b91a762dc39b7c21095fcd6a19955", size = 391431, upload-time = "2025-08-27T15:23:59.498Z" }, +] + [[package]] name = "psycopg" version = "3.3.4" @@ -721,6 +840,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ce/e4/dccd7f47c4b64213ac01ef921a1337ee6e30e8c6466046018326977efd95/tzdata-2026.2-py2.py3-none-any.whl", hash = "sha256:bbe9af844f658da81a5f95019480da3a89415801f6cc966806612cc7169bffe7", size = 349321, upload-time = "2026-04-24T15:22:05.876Z" }, ] +[[package]] +name = "tzlocal" +version = "5.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "tzdata", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8b/2e/c14812d3d4d9cd1773c6be938f89e5735a1f11a9f184ac3639b93cef35d5/tzlocal-5.3.1.tar.gz", hash = "sha256:cceffc7edecefea1f595541dbd6e990cb1ea3d19bf01b2809f362a03dd7921fd", size = 30761, upload-time = "2025-03-05T21:17:41.549Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c2/14/e2a54fabd4f08cd7af1c07030603c3356b74da07f7cc056e600436edfa17/tzlocal-5.3.1-py3-none-any.whl", hash = "sha256:eb1a66c3ef5847adf7a834f1be0800581b683b5608e74f86ecbcef8ab91bb85d", size = 18026, upload-time = "2025-03-05T21:17:39.857Z" }, +] + [[package]] name = "urllib3" version = "2.7.0" @@ -730,6 +861,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl", hash = "sha256:9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897", size = 131087, upload-time = "2026-05-07T16:13:17.151Z" }, ] +[[package]] +name = "vine" +version = "5.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/bd/e4/d07b5f29d283596b9727dd5275ccbceb63c44a1a82aa9e4bfd20426762ac/vine-5.1.0.tar.gz", hash = "sha256:8b62e981d35c41049211cf62a0a1242d8c1ee9bd15bb196ce38aefd6799e61e0", size = 48980, upload-time = "2023-11-05T08:46:53.857Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/03/ff/7c0c86c43b3cbb927e0ccc0255cb4057ceba4799cd44ae95174ce8e8b5b2/vine-5.1.0-py3-none-any.whl", hash = "sha256:40fdf3c48b2cfe1c38a49e9ae2da6fda88e4794c810050a728bd7413811fb1dc", size = 9636, upload-time = "2023-11-05T08:46:51.205Z" }, +] + [[package]] name = "wcwidth" version = "0.7.0"