11월 1일 오전 9시에 본 "컴퓨터통신과 네트워크" 시험을 끝으로 중간고사가 끝이 났다. 시험 공부 한답시고 최근에는 블로그에 글을 쓰지 않았다. 결과는 Not so good... "시험 공부를 할 땐 절대 컴퓨터 앞에 앉지 말자"를 다시 한 번 뼈 속 깊이 새기는 계기가 되었다. 핑계라면, 시험 기간 중에 했던 알고리즘 과제 Traveling Salesperson Problem이 매우 많은 시간을 잡아먹었고, IRC에서 "인터넷에서 과제를 참고하는 것이 정당한가"에 대한 토론을 하다 보니 시간이 마구 지나갔던 것이었다.
공부를 하긴 한 것 같은데 막상 시험을 보면 답이 안 보였다. 이런 현상은 수학 관련 과목일수록 심해져서, 10월 27일 밤 9시부터 11시까지 보았던 선형대수 시험을 위해 가장 많은 시간을 공부했지만 결국 모든 과목 중 가장 낮은 점수가 나올 것으로 예상되는 상태(아직 채점 결과가 나오지 않았으므로)이다. 4 x 4 matrix를 4개의 2 x 2 matrix block으로 묶어서 역행렬을 구하는 문제가 있었는데, 도저히 답이 나오지 않았다. 시험지에 "좌절"이라고 쓰고 나올 수밖에 없었다... 쉬운 문제의 계산마저 틀린 것 같은데, 과연 점수가 어떻게 나올지.. 다른 학우들의 베이스를 깔아주는건 아닌지 걱정이 된다.
알고리즘 과목은 벌써부터 재수강을 생각하고 있다. 시험을 보면서 Dynamic Programming에 대한 이해가 한참 부족하다는 것을 절실히 느꼈다. 이해를 제대로 못하는데 어떻게 식을 유도한단 말인가.. 외워서 쓴 것 같으면 무조건 30%의 점수만 주었다는 교수님의 말씀에 나 뿐만 아니라 대부분의 수강생들이 비슷한 반응을 보였다. "GG다..."
윈도우 프로그래밍 과목은 공부한만큼 나온 것 같다. 아직까진 어렵지 않은 내용을 다루었기 때문에 별 어려움 없이 문제를 풀 수 있었다. 코드를 완벽하게 외우진 못했지만 디테일한 코드를 완벽하게 작성하지 못해도 내용을 이해하고 있으면 예상보다 높은 점수를 받을 수 있었다. 아직 "윈도우 프로시저"의 의미조차 완벽하게 이해하지는 못했지만 말이다...
컴퓨터통신과 네트워크, 역시나 계산을 요하는 문제(이것도 수학 관련일까?)에서 많이 나간 것 같다. 계산 실수를 했거나, 식을 잘못 세웠거나, 아니면 정답이 틀린 것일 텐데... 객관적으로 물어보는 문제는 정답이 잘못된 것들을 찾아내어 교수님께 말씀드려 바로잡아 가산점을 얻었지만 계산 문제는 정답이 정말 맞는지 틀린지 알 수가 없었다. 가장 아까운 것은 데이터의 총 전송 시간을 구하는데 내가 계산한 것은 0.081초인데, 정답은 80.3ms란다. 0.0007초의 차이가 발생하는데.. 내 답은 정답일까 아니면 오답일까? 한가지 실수를 했는데, Circuit Switching 망의 예로 전화선을 들고 이 망에서 참조하는 헤더를 "전화번호"로 적어버린 것이다. Circuit Switching 헤더 이야기를 듣지 못했기 때문에 어림짐작으로 넣어버렸는데, 차라리 아무것도 쓰지 말 걸 그랬다. 사실 Circuit Switching은 헤더를 이용하지 않는데 말이다..
성서의 이해 - 우리 학교는 기독교 학교인지라 성서의 이해라는 교양필수 과목을 반드시 이수해야만 한다. 이번 중간고사는 오픈북이었던데다가 자신의 의견을 쓰는 문제가 많았기 때문에 특별히 어려운 내용은 없었다. 게다가 기독교인이라는 이점을 이용하여 그다지 어렵지 않게 시험을 볼 수 있었다. 아마 가장 잘 본 과목이 아닐까 한다.
결론은? 알고리즘은 재수강을 해야할 것 같다, 수학을 잘하고 싶다, 실수하지 말자, 역시 시험 공부를 위해서는 책을 읽는 것보다는 강의자료를 여러 번 읽는 것이 훨씬 도움이 된다...
일단 시험이 끝났으니 당분간은 널널할 듯. 이미 알고리즘 과제가 부여되어 있지만, 다음주 월요일까지이므로 시간은 많이 있다. 이번 주말은 오랜만에 즐겨야겠다!
'알고리즘'에 해당되는 글 2건
- 2006/11/01 드디어 중간고사 종료
- 2006/10/13 KAIST의 알고리즘 숙제 문제
몇 주 전에 피보나치 수열 알고리즘 숙제를 하면서 프로그램이 동작하는 데 걸리는 시간을 측정하기 위해 구글을 이용하여 웹을 검색한 적이 있었다. 그 중에서 눈에 띄는 사이트를 하나 발견했으니, 과목 프로젝트로 Linux Shell을 구현했다는 것이었다. 댓글에 나노 초 단위로 시간을 재는 함수를 써서 실행 시간을 쟀다는 내용과 함께(아마도 구글에서 이 댓글의 내용이 검색되었던 듯하다.).
그때는 그냥 멋진데~ 라는 생각을 하고 페이지를 닫았었다.
며칠 후, HanIRC의 어떤 채널에서 이야기를 나누고 있었다. 시험 기간만 되면 평소엔 거들떠보지도 않던 것들 - 예를 든다면 게임 - 이 갑자기 마구 하고싶어진다는 것이었다. 그러다 보면 밤을 새우게 된다, 밤은 새지 말자. 어쩌구. 그런데,
그때는 그냥 멋진데~ 라는 생각을 하고 페이지를 닫았었다.
며칠 후, HanIRC의 어떤 채널에서 이야기를 나누고 있었다. 시험 기간만 되면 평소엔 거들떠보지도 않던 것들 - 예를 든다면 게임 - 이 갑자기 마구 하고싶어진다는 것이었다. 그러다 보면 밤을 새우게 된다, 밤은 새지 말자. 어쩌구. 그런데,
[22:04:46] < > 안 새려고 해도
[22:06:10] < > 다만
[22:06:29] < > "이번 수업은 C언어를 씁니다" 하고 일주일 후에 "2주 듀 줄테니 리눅스 쉘짜오세요"
[22:06:30] < > 라고 할 뿐
[22:06:31] < > ....
[22:06:40] > 와. 대단하네요
[22:06:55] < > ...
[22:08:12] < > 마지막에 가서는
[22:08:28] < > remote shell에다가 ftp + 파일분할동시전송(multi-thread) 기능까지
[22:10:05] < > Lokken: 마지막 프로젝트 코딩 끝내고 나서
[22:10:24] < > 멀티쓰레드로 파일 분할 전송이 쫙 되면서 progress 상태가 화면에 실시간으로 보여졌을 때
[22:10:27] < > 감동의 눈물이
[22:10:28] < > ...
[22:06:10] < > 다만
[22:06:29] < > "이번 수업은 C언어를 씁니다" 하고 일주일 후에 "2주 듀 줄테니 리눅스 쉘짜오세요"
[22:06:30] < > 라고 할 뿐
[22:06:31] < > ....
[22:06:40] > 와. 대단하네요
[22:06:55] < > ...
[22:08:12] < > 마지막에 가서는
[22:08:28] < > remote shell에다가 ftp + 파일분할동시전송(multi-thread) 기능까지
[22:10:05] < > Lokken: 마지막 프로젝트 코딩 끝내고 나서
[22:10:24] < > 멀티쓰레드로 파일 분할 전송이 쫙 되면서 progress 상태가 화면에 실시간으로 보여졌을 때
[22:10:27] < > 감동의 눈물이
[22:10:28] < > ...
어, 저건 예전에 내가 봤던 그 페이지랑 같은 내용인데, 하는 생각이 머리를 스쳤다.
그래서 그 페이지에 대해 물어보았다. 그 사람이 맞단다. 자신이 운영하는 사이트의 주소를 알려주어 들어가 보았더니, KAIST 05학번이란다.
나랑 학번이 같은 것이었다. 단지 학교가 다르다는 것뿐.
나는 봄 학기 때 무엇을 하고 있었던가. 링크드 리스트의 소트를 자바를 이용해서 만들다가 자꾸만 Null pointer exception이 나서 포기하지 않았던가.
그래도 컴퓨터 학부 와서 열심히 하고 있다고 생각했는데, 경쟁자는 저 앞에서 뛰어가고 있었다.
KAIST 알고리즘 과목의 숙제 중 하나를 나에게 보여주었다. 문제를 이해하는 것조차 쉽지 않았다. 혹시 관심 있는 사람이 있다면 다음의 링크를 따라 들어가 보기 바란다(Adobe Reader 필요).
http://tclab.kaist.ac.kr/~cs202/2006/pshw5.pdf
역시 KAIST는 달랐다. 레벨이 다르다. 괜히 KAIST일까. 부지런히 노력하지 않으면 이 바닥의 끝자락마저 잡지 못할지도 모른다. 더욱 열심히 해야겠다.
