강사와 조교
- 시스템 구성상 과목당 1사람의 강사를 두고 이 강사 밑에서 formgrader가 돌게 한다.
- 2018년 5월 4일 현재 강사는 python, calculus, dg 이렇게 세 명이다.
- 조교들은 일단 자기 계정으로 로그인 한 후 강사 이름으로 돌고 있는 service로 들어가 숙제를 관리한다.
- 따라서 조교들은 강사 이름으로 돌고 있는 service에 자기가 접근할 권한이 있는지 없는지를 분명히 알고 있어야 한다.
조교가 하는 일
- 강사로부터 문제를 받아 ipynb 파일로 만드는 것부터 시작
- 수동 채점은 강사가 한다.
formgrader로 숙제 파일 만들고 내보내기
formgrader로 들어가기
- 양성덕의 주피터 서버에 본인의 계정으로 로그인한다.
- 그러고 나서 https://mathematicians.korea.ac.kr/sdyang/jupyter/services/python 으로 간다. 만약 미분기하숙제관리를 위한 것이면 python 대신에 dg, 미적분학 숙제 관리를 위한 것이면 python 대신에 calculus를 쓴다.
- 이제 메뉴에서 formgrader 탭을 누른다.
- 숙제에 관한 모든 건 여기서 이루어진다.
새 숙제 만들 준비하기
- [Add new assignment]를 눌러 나오는 화면에서 Name과 Due Date를 정한 후 저장한다.
- [Name]에서 방금 만든 이름을 누른다.
- 생성된 화면에서 [New] -> [Python 3] 또는 [SageMath 8.1]을 눌러 새 숙제 파일(ipynb)을 생성한다.
새 숙제 파일(ipynb)에서 내용 작성하기
- 기존 파일을 참조하라.
- 메뉴에서 [CellToolbar]를 누른 후 나오는 화면에서 [Create Assignments]를 누른다.
- 또는 [View] -> [Cell Toolbar] -> [Create Assignments]를 누른다.
- 그러면 모든 셀에 선택할 수 있는 어떤 메뉴가 뜬다. Code 셀이냐 Markdown 셀이냐에 따라 메뉴가 다르다.
- 나머지는 기존 파일을 참고하며 만들면 되겠다.
- 모든 문제에 대한 답도 같이 넣는 것이다.
- Autograded answer 셀 바로 다음에 Autograder tests 셀을 넣는다.
- ### BEGIN ANSWER … ### END ANSWER
- Autograded answer 셀에서 답안을 쓸 부분을 지정할 때 사용한다.
- ### BEGIN HIDDEN TESTS … ### END HIDDEN TESTS
- 셀의 답안이 정답인지 아닌지를 검사하는 Autograder tests 셀에서 코드 일부를 숨기고자 할 때 사용한다.
- 저장하는 것 잊지 말 것.
학생들에게 내보낼 숙제 파일 생성하기
- 일단 숙제 파일은 생성되어 있다고 치자.
- Fromgrader 화면으로 돌아가 해당 숙제 줄에서 [Generate] 버튼을 누른다.
- 이 때 이미 만들어 둔 머리말, 끝말 등이 자동으로 들어가도록 설정되어 있다.
학생들에게 내보낼 파일 검토하기
- [Preview] 버튼을 누른다.
- 만약 고칠 게 있으면 여기서 고쳐도 된다. 하지만 되도록이면 소스 파일을 고치도록 한다.
공용폴더에 내보내기
- [Release] 버튼을 누른다. 그러면 Preview 에서 본 파일이 학생들이 접근할 수 있는 공용 폴더에 저장된다.
- 여기까지가 숙제를 출제하고 내보내는 과정이다.
숙제를 다시 내보내야 할 경우
- fromgrader에서 [Release]에 있는 x 버튼을 누른다. 그러면 공용폴더에 있는 숙제가 지워진다.
- 이제 처음부터 다시 과정을 반복하여 숙제를 낸다.
- 그러나, 문제는 이미 숙제를 받아간 학생들이 있으면 그 학생들은 새로 숙제가 나갔다는 것을 알지 못한다.
- 흑판에 따로 공지하여 기존 숙제를 삭제하고 새로 숙제를 받아서 숙제를 하라고 한다.
- 공지할 때 숙제를 변경한 시각을 이야기해 준다.
formgrader로 숙제 걷고, 채점하고 돌려주기.
학생들이 제출한 답안 가져오기
- [Collect] 버튼을 누른다.
- [# Submissions]에서 보이는 숫자가 바뀌면 새로 받아온 숙제가 있다는 뜻이다.
채점하기
- [# Submissions] 밑에 있는 (0이 아닌) 숫자를 누른다.
-
먼저 [Autograde]를 눌러 자동채점을 한다. 그런데 이렇게 하는 건 하나하나 하는 것이고 모든 숙제를 한꺼번에 자동채점하는 법이 있는데 터미널을 열어
- /opt/anaconda3/bin/nbgrader autograde HWName
하면 된다.
- [학생 이름] 누르고 [숙제이름] 누르고 개별 파일들 열어 수동채점하거나 교수님께 수동채점 하셔야 한다고 알린다.(채점의견 넣을 수 있음)
- 수동채점시 점수나 코멘트를 넣을 칸으로 이동하는 건 탭 키로 하는 게 제일 좋은 것 같다.
- 수동 채점시 주의사항 : 하나 채점 마치고 다음으로 넘어갈 때 점수가 기록이 되지 않는 것처럼 보이는 경우가 관찰되었다. 이는 사실 nbgrader의 문제가 아니라 브라우저의 문제로 보이는데, Windows 10에서 인터넷 익스플로러로 수동채점할 때 점수가 기록이 안 되는 것처럼 보이는데 로그아웃 후 다시 로그인하여 보면 점수가 들어가 있기는 하다. 그러나 채점 도중 previous 눌러 앞으로 가 보면 점수가 기록되지 않은 것으로 보여 굉장히 불안하다. Windows 10/ MS Edge 로 하면 기록이 잘 된다. 이런 현상이 생기고 있는지 아닌지 확인하는 법은, 하나 점수 기입 후 next 로 갔다가 previous로 가서 점수가 제대로 기입되었는지를 보는 것이다. 이는 JavaScript의 문제로 보이는데 아마 크롬 부라우저에서는 이런 문제가 발생하지 않을 것으로 생각한다. SageMath 사용시 threejs 가 IE에서는 안 되나 Chrome에서는 잘 되었던 것과 같은 맥락이라고 생각된다. 이걸 염두에 두고 수동 채점을 진행하라.
- 한 채점이 다 되면 [Next]를 눌러 다음 숙제를 채점한다.
점수 백업 및 블랙보드에 올리기
- 수동채점까지 완료되면 점수를 csv파일로 받는다.
- 터미널을 열어 (해당 과목 디렉토리에서) ‘$/opt/anaconda3/bin/nbgrader export –to 날짜.csv’ 를 실행하면 됨.
- 생성된 날짜.csv 파일을 서버에서 내려받아 로컬 컴퓨터에 보관할 것
- 블랙보드에 성적을 올린다.
학생들에게 돌려줄 채점결과 및 채점의견이 들어있는 파일 만들기
- 과목 디렉토리로 이동
- $/opt/anaconda3/bin/nbgrader feedback 숙제폴더이름
위에서 생성한 채점결과 및 채점의견이 있는 파일을 학생들에게 주기
- 이제까지와는 달리 이 작업은 주피터허브가 돌고 있는 서버에서 직접 해야 함.
- 주피터허브가 돌고있는 서버에 과목이름으로 로그인
- 홈폴더/과목이름/autograded/사람이름/ 에 채점된 숙제 폴더가 있음을 확인할 것
- $sudo /opt/anaconda3/bin/python return-feedback.py 숙제폴더이름
- 아직은 루트 권한으로 실행해야 함.
양성덕의 주피터 서버 사용법(조교 편) 동영상 강의
사용 문의 환영
- 사용법에 관하여 질문이 있는 경우 언제든지 양성덕에게 문의바랍니다.