Curriculum
With a department code and a course number taken from the course listings, get the suggested year and term, course type, credits, hours and the course overview from that department’s curriculum. No login is needed, and you look up one course at a time (there is no whole-curriculum list). Common rules are on Common rules.
Request parameters
Section titled “Request parameters”Python uses snake_case (curriculum_courses); Node.js and Java use camelCase (curriculumCourses). Node.js takes an object: curriculumCourses({ departmentCode, courseNumber }).
| Parameter | Type | Required | Default | Meaning |
|---|---|---|---|---|
department_code |
string | required | - | SIS code (DEPT_CD) of a degree department. Get it from the department list or from department_code in a course result and pass it in |
course_number |
string | required | - | Course number. Pass course_number (CURI_NO) from a course result |
- Returns a list of
CurriculumCourse(0 or 1 items for one course). - An empty department code or course number raises
INVALID_INPUTand no request is sent (Error codes).
School request
GET https://www.sejong.ac.kr/curriculum/getCurriculumOneKor.do?curiNo=<course number>&deptNo=<department code>, response arrayitems.- Without an
Accept: application/jsonheader the school answers 404, so all three languages send it. deptCdin the curriculum answer uses the same code system asDEPT_CDin the SIS.
Response data structure
Section titled “Response data structure”Example JSON. Field names are Python snake_case; Node.js and Java use camelCase. School data changes, so the values are examples.
[ { "department_code": "3517", "department_name": "AI로봇학과", "category_code": "20", "year": "2026", "course_number": "011839", "name": "전공탐색", "course_type_code": "1E", "course_type_name": "공통교양필수", "credits": "1", "lecture_hours": "0", "practice_hours": "1", "total_hours": "1", "grade_level": "1", "semester_code": "2", "semester_name": "2학기", "overview": "신입생이 전공 관련 주제를 탐구하고 소논문으로 정리하는 과목 ...", "extra": { "curiYear": "2026", "studentYear": "1" } }]All fields are strings, empty when missing.
| Field | School key | Meaning |
|---|---|---|
department_code, department_name |
deptCd, deptNm |
Department code and name |
category_code |
orgnClsfCd |
Organization category code |
year |
year |
Curriculum year |
course_number, name |
curiNo, curiNm |
Course number, course name |
course_type_code, course_type_name |
curiTypeCd, curiTypeNm |
Course type code and name |
credits |
cdt |
Credits |
lecture_hours, practice_hours, total_hours |
lecTmNum, exeTmNum, curiTm |
Lecture, practice and total hours |
grade_level |
stuYearCd |
Suggested year level |
semester_code, semester_name |
smtDanCd, smtDanNm |
Suggested term code and name |
overview |
remark |
Course overview text |
extra |
other fields | for example curiYear, studentYear, sameSlcCnt |
- Cached for one day (86400 seconds by default) per department code and course number, with one school request per call.
- School-side failures (connection, timeout, bad response, no
items) return the last cached value or an empty list. With no cache, an empty list without a request for 60 seconds (default). - An empty
itemsis a normal answer. A course that is not in that department’s curriculum gives an empty list, not an error. - The only exception is an empty department code or course number (
INVALID_INPUT).
Known limits
Section titled “Known limits”- Only courses in a degree department’s curriculum come back. A liberal-arts college or graduate department code can give an empty list.
- The overview is the curriculum text of the current curriculum year, not a text per section or instructor.
- The whole curriculum list is not provided. The school’s list request ignores the department code and picks the department from a screen menu number, and there is no mapping from that number to a department code. For a whole department you can call this method for each course of its lecture list, one request per course.
- The instructor syllabus is not provided. Its form carries the instructor’s name and contact lines.
- Contract source: spec/PUBLIC_DATA.md
Example code
Section titled “Example code”// Look up curriculum info with a lecture's department code and course number (empty list if absent)Lecture lecture = lectures.get(0);List<CurriculumCourse> courses = publicData.curriculumCourses(lecture.getDepartmentCode(), lecture.getCourseNumber());# Look up curriculum info with a lecture's department code and course number (empty list if absent)courses = public_data.curriculum_courses(lectures[0].department_code, lectures[0].course_number)if courses: print(courses[0].grade_level, courses[0].semester_name, courses[0].overview)// Look up curriculum info with a lecture's department code and course number (empty list if absent)const courses = await publicData.curriculumCourses({ departmentCode: lectures[0].departmentCode, courseNumber: lectures[0].courseNumber,});To find the course listings first, see Course listings.
