충남대 전산물리학 웹 교재
충남대학교 2021년 집중학기 전산물리학 강의에 쓸 웹 교재와 파이썬 예제·실습 자료를 만들어 공개했습니다. 교재는 사전 준비부터 최적화까지 5개 장 17개 절로 이루어져 있습니다.
- 문제
- Python3 으로 전산물리학의 문제와 해결 방법을 다루는 강의 교재가 필요했고, 수식이 들어간 원고를 담당 교수와 함께 고치면서 웹에 바로 반영해야 했습니다.
- 담당
- 교재 사이트 구성(목차 파일·문서 양식·사이트 엔진)과 문서 편집 안내를 만들고, 본문에서 쓰는 예제·실습 코드를 별도 저장소에 작성했습니다.
- 설계 판단
- 원고는 장·절 마크다운 파일과 목차 파일만 고치면 반영되게 하고, Jekyll·TypeScript·Sass 로 만든 사이트 엔진은 고칠 때만 개발 환경이 필요하도록 나눴습니다.
- 검증 기준
- 교재의 기준 환경을 윈도우즈와 Python 3.9 로 정하고 첫 장에서 파이썬 설치와 실습 저장소 준비를 먼저 다뤘습니다. 고친 내용은 판 번호를 붙여 판올림 기록에 남겼고, 번호는 세 자리로 오타·표현 수정은 셋째, 문서 추가·삭제·명칭 변경은 둘째, 전체 구조 변경은 첫째 숫자를 올리는 규칙을 두었습니다. 예제는 정답을 아는 입력으로 결과를 견주게 설계했습니다.
- 결과 범위
- 웹 교재와 예제 저장소를 공개했고, 소스코드는 MIT, 글과 그림은 CC BY-NC-SA 를 따른다고 교재에 밝혔습니다. 예제 폴더는 그래프·데이터 분석·시뮬레이션·최적화 장에 맞춰 나눴습니다. 첫 릴리스(2021년 7월 30일)는 5개 장 14개 절이었고 파이썬 설치·그래프 패키지 설치·히스토그램 절을 더해 17개 절이 되었습니다. 룽게-쿠타 방법 절의 예제는 준비 중으로 남아 있습니다.
충남대학교 2021년 집중학기 전산물리학 강의 교재를 웹 문서로 만드는 작업이었습니다. 담당 교수와 함께 조직 저장소를 두고 장·절 구조를 목차 파일로 관리했습니다.
문서는 확장 마크다운으로 쓰고 수식은 KaTeX 로 렌더해, 원고를 고치면 그대로 사이트에 반영되도록 했습니다.
예제와 실습 코드는 별도 저장소에 파이썬으로 두어 교재 본문에서 참조하게 했습니다.
데이터 분석 장은 데이터 피팅과 함수·데이터의 미분·적분을, 시뮬레이션 장은 뉴턴 방법·룽게-쿠타 방법·분자동역학·몬테카를로를, 최적화 장은 개미집단 최적화를 다룹니다.
목차 파일 하나가 사이드바와 사이트맵, 종이책으로 보기 쪽의 장·절 순서를 모두 정하도록 해서 순서를 바꿀 때 한 곳만 고치면 됩니다. 종이책으로 보기는 표지·머리말·차례·본문 순으로 전체를 이은 인쇄 전용 페이지로, A4 쪽 나누기와 쪽 번호가 달린 차례를 브라우저의 TypeScript 가 만들고 움직이는 그림은 같은 이름의 정지 그림으로 바꿉니다. 이 페이지에서 내보낸 PDF 를 첫 릴리스에 첨부했습니다.
담당 교수의 검토 의견은 문서에 직접 단 수정 커밋으로 받고, 그 커밋을 가리키는 후속 커밋으로 반영했습니다. 그 과정에서 미분방정식 절이 뉴턴 방법과 룽게-쿠타 방법 두 절로 나뉘고 뉴턴 방법 절에 과제가 붙었으며, 입자 운동 절과 몬테카를로 절도 보강했습니다.
각 절은 예제 파일 안내, 단계별 코드 설명, 결과 그림 순으로 썼고, 함수 그래프·뉴턴 방법·입자 운동 절에는 직접 풀어 보는 과제를 모두 네 건 달았습니다. 예제 저장소는 파이썬 스크립트 16개와 데이터 파일 4개로, 폴더 번호 02~05 를 교재 장 번호와 맞췄습니다. 문서가 폴더를 주소로 직접 가리키기 때문에 폴더 이름은 한글에서 영문으로 바꿨습니다.
예제는 정답을 아는 입력으로 결과를 견주게 했습니다. 몬테카를로 방사성 붕괴는 이론식 곡선을 같은 그림에 겹치고, 함수의 적분은 직접 구현한 사다리꼴 적분과 SciPy 값을 비교하며, 데이터의 적분은 난수로 만든 두 입자 스펙트럼을 가우시안 두 개의 합으로 피팅해 구한 생성비를 데이터를 만들 때 정한 비율과 대조합니다. 파이썬 설치 절은 윈도우 스토어 파이썬과 VS Code 를 기준으로 삼고 구글 코랩 같은 대안을 함께 안내하며, 실습 저장소 절은 Git 설치부터 복제·포크·원본 저장소 병합까지 다룹니다.
구조와 흐름
원고에서 사이트까지