교육과정
개설강좌 목록에서 얻은 학과 코드와 과목 번호로, 그 학과 교육과정에서 이 과목이 권장되는 학년·학기, 이수 구분, 학점, 시수와 교과목 개요를 받습니다. 로그인이 필요 없고, 교육과정 전체 목록 없이 과목 하나씩 조회합니다. 공통 규칙은 공통 규칙입니다.
요청 파라미터
섹션 제목: “요청 파라미터”Python은 snake_case(curriculum_courses), Node.js와 Java는 camelCase(curriculumCourses)입니다. Node.js는 curriculumCourses({ departmentCode, courseNumber })처럼 객체로 받습니다.
| 파라미터 | 타입 | 필수 | 기본값 | 설명 |
|---|---|---|---|---|
department_code |
문자열 | 필수 | - | 학위 학과의 SIS 코드(DEPT_CD). 학과 목록이나 강의 결과의 department_code에서 받아 넘깁니다 |
course_number |
문자열 | 필수 | - | 과목 번호. 강의 결과의 course_number(CURI_NO)를 넘깁니다 |
- 반환은
CurriculumCourse목록입니다 (한 과목에 0건 또는 1건). - **학과 코드나 과목 번호가 비어 있으면
INVALID_INPUT**을 던지고 요청은 보내지 않습니다 (에러 코드).
학교 요청
GET https://www.sejong.ac.kr/curriculum/getCurriculumOneKor.do?curiNo=<과목 번호>&deptNo=<학과 코드>, 응답 배열items.Accept: application/json헤더가 없으면 학교가 404를 돌려주므로 세 언어 모두 이 헤더를 보냅니다.- 교육과정 응답의
deptCd는 SIS의DEPT_CD와 같은 코드 체계입니다.
응답 데이터 구조
섹션 제목: “응답 데이터 구조”예시 JSON입니다. 필드 이름은 Python snake_case이고 Node.js와 Java는 camelCase입니다. 학교 데이터는 바뀌므로 값은 예시입니다.
[ { "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" } }]모두 문자열이고 없으면 빈 문자열입니다.
| 필드 | 학교 키 | 설명 |
|---|---|---|
department_code, department_name |
deptCd, deptNm |
학과 코드와 이름 |
category_code |
orgnClsfCd |
소속 분류 코드 |
year |
year |
교육과정 연도 |
course_number, name |
curiNo, curiNm |
과목 번호, 과목명 |
course_type_code, course_type_name |
curiTypeCd, curiTypeNm |
이수 구분 코드와 이름 |
credits |
cdt |
학점 |
lecture_hours, practice_hours, total_hours |
lecTmNum, exeTmNum, curiTm |
강의, 실습, 총 시수 |
grade_level |
stuYearCd |
권장 학년 |
semester_code, semester_name |
smtDanCd, smtDanNm |
권장 학기 코드와 이름 |
overview |
remark |
교과목 개요 본문 |
extra |
그 밖의 필드 | 예: curiYear, studentYear, sameSlcCnt |
- 학과 코드와 과목 번호 조합마다 하루(기본 86400초) 캐시하고, 호출당 학교 요청은 한 번입니다.
- 학교 쪽 실패(연결, 시간 초과, 비정상 응답,
items없음)는 마지막 캐시 값 또는 빈 목록입니다. 캐시가 없으면 60초(기본) 동안 요청 없이 빈 목록입니다. - 빈
items는 정상 응답입니다. 그 학과의 교육과정에 없는 과목이면 빈 목록이고 오류가 아닙니다. - 예외는 빈 학과 코드·과목 번호(
INVALID_INPUT) 하나뿐입니다.
알려진 한계
섹션 제목: “알려진 한계”- 학위 학과의 교육과정에 있는 과목만 돌아옵니다. 교양대학이나 대학원 학과 코드로는 빈 목록이 올 수 있습니다.
- 개요는 현재 교육과정 연도의 교육과정 글이고, 분반·교수별 글이 아닙니다.
- 교육과정 전체 목록은 제공하지 않습니다. 학교의 목록 요청은 학과 코드를 무시하고 화면 메뉴 번호로 학과를 정하는데, 그 번호와 학과 코드의 대응표가 없습니다. 한 학과 전체가 필요하면 강의 목록의 과목마다 이 메서드를 부를 수 있지만 과목당 요청이 한 번입니다.
- 교수의 수업계획서는 제공하지 않습니다. 양식에 교수 이름과 연락처 줄이 있습니다.
- 계약 원본: spec/PUBLIC_DATA.md
예시 코드
섹션 제목: “예시 코드”// 강의 결과의 학과 코드와 과목 번호로 교육과정 정보 조회 (없으면 빈 목록)Lecture lecture = lectures.get(0);List<CurriculumCourse> courses = publicData.curriculumCourses(lecture.getDepartmentCode(), lecture.getCourseNumber());# 강의 결과의 학과 코드와 과목 번호로 교육과정 정보 조회 (없으면 빈 목록)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)// 강의 결과의 학과 코드와 과목 번호로 교육과정 정보 조회 (없으면 빈 목록)const courses = await publicData.curriculumCourses({ departmentCode: lectures[0].departmentCode, courseNumber: lectures[0].courseNumber,});개설강좌를 먼저 찾는 방법은 개설강좌를 보세요.
