학부 수업 명장면, 베스트 3

@codemaru · October 06, 2011 · 10 min read

자주 오시는 분들께서는 아시겠지만 개천절을 기해서 블로그를 리뉴얼 했습니다. 원래 제가 호스팅 받던 곳이 워드프레스 최신 버전을 지원하지 않아서 새로운 호스팅 업체로 옮기고 홈페이지에 있던 자료들도 정리했습니다. 블로깅 하기 이전의 사이트에 있던 자료들을 옮기려고 살펴보다 보니 예전 생각이 새록새록 나더군요. 풋풋한 시절에 제가 작성한 글들에서 묻어나는 풋내랄까요? ㅋㅋ~ 어쨌든 대학 시절에 쓴 글들을 읽고 있으니 자연스럽게 그 시절을 회상하게 되었습니다. 그러다 떠오른 세 가지 장면. 캡쳐해 보았습니다. 학부 4년의 수업 시간 중에서 가장 감동적이었던 장면, 베스트 3입니다.

#0

처음으로 놀랐던 수업은 다름아닌 유명한 권혁철 교수님의 C언어 수업 시간이었습니다. 1학년 과목 중에 유일한 A+이있습니다. — 그거 말고는 전부 D, F였다죠 ㅠㅜ — 수업을 듣기 전부터 C언어를 알고 있었던 지라 수업은 그다지 새로울 것이 없을 거라고 생각하고 들었습니다. 그런데 아이러니한 사실은 대학 4년 동안 프로그래밍이란 관점에서 내지는 제가 프로그래머로 생활하는데 있어서 가장 큰 교훈을 준 수업은 바로 그 시간에 있었습니다. 그 후에도, 그 전에도 대학교 프로그래밍 수업에서 그런 감동을 느꼈던 적은 없었던 것 같네요.

사설이 길었습니다. 어떤 내용이었는지 궁금하실 것 같네요. 바로 다름아닌 배열에 관한 내용이었습니다. 간단하게 학생 번호와 학점을 입력 받아 평균을 계산하는 프로그램이 예제였습니다. 너무 쉽죠. 그런데 그전까지 저는 매번 그런 프로그램을 작성할 때마다 항상 배열 오프셋에 -1을 하는 코드를 추가해서 계산을 했었습니다. 왜냐하면 C언어는 특성상 배열 인덱스가 0에서 시작하고 학생 번호는 1에서 시작하기 때문이었죠. 그 때 교수님께서 그러시더군요. 이렇게 멍청하게 하지 않는 방법은 없을까? 조용했습니다.

교수님 설명이 이어졌습니다. “그럴 필요 뭐 있어. 그냥 배열을 1크게 잡으면 되는 거지.” 학생이 20명이면 21개를 배열로 잡으면 되는 거고, 30명이면 31개를 배열로 잡으면 되는 거라는 말씀이었습니다. 그게 컴퓨터 공학에 있어서의 숙명, 공간과 속도 사이의 트레이드오프라는 설명을 같이 해주셨습니다. 저에게는 샥(shock)이었습니다. 뭔가 번갯불이 머리를 스쳐 지나가는 느낌이었죠.

여기서 끝이 아니었습니다. 교수님께서 말씀하십니다. “컴퓨터 공학에서 속도와 공간이라는 문제는 흔히 두 마리 토끼에 비유된다. 하나를 잡으면 다른 하나는 놓칠 수 밖에 없는 것이란 말이다. 하지만 이 조차도 때로는 고정관념에 불과하다. 이런 관점에서 앞선 문제를 좀 더 똑똑하게 해결할 수 있는 방법을 아는 사람?” 다시 조용해 졌습니다. 그리곤 포인터를 오프셋만큼 옮기는 테크닉을 설명해 주셨습니다. 배열을 정해진 크기만큼 할당하고 배열의 시작 위치에서 -1한 지점을 가리키는 방법이었죠. 아래와 같이 코딩한 다음 pscore를 배열로 사용한다는 의미입니다.

int score[20];
int *pscore = score - 1;

설명을 다 듣고 울었습니다. 물론 가슴속으로 말입니다. 그리곤 아주 잠깐 동안 이래서 엄마가 대학을 가라고 했던 거구나, 라는 생각을 뼈저리게 했었답니다. 지금도 무엇인가를 설계할 때, 프로그래밍을 할 때 가끔 그 수업 시간을 떠올리곤 합니다. ‘더 좋은 방법은 없을까? 내가 진리라고 믿고 있는 것 조차도 고정 관념이 아닐까? 내 틀에 갇혀 있는 것은 아닐까?’ 라는 생각을 하면서 말입니다.

#1

두 번째 수업은 3번씩 재수강을 하고도 한번도 패스하지 못했던 일반물리학 수업 시간이었습니다. 변명을 좀 하자면 사실 전 물리를 제법 잘합니다. 고교 이과 선택과목도 물리 II였고, 수학능력시험에서 하나도 틀리지 않는 기염을 토했으며, 물리경시대회에 참가하기도 했었죠. 특별한 사유(?!)가 있었습니다. 너무 치명적인 사유였죠. ㅠㅜ

계절학기 첫 수업 시간이었던 것 같습니다. 교수님께서 들어오시더니 본인의 인생사 이야기를 잠시 하셨습니다. 이어서 일반 물리학 책을 펼치면서 말씀하십니다.

“여기 뉴턴이 이해한 물리학이 있다. 난 그걸 내가 해석한대로 가르칠 생각이다. 여러분은 여러분의 버전으로 그 내용을 이해하면 된다. 여기에 정답이란 없다. 뉴턴이 잘못된 생각을 했을 수도 있고, 우리 모두가 엉뚱한 착각에 빠졌을 수도 있다. 의문이 있다면 가지는 것이 당연한 일이다. 권위 앞에 주눅들 필요 없다. 그래야 우리 후배들은 더 정확한 물리학을 배울 수 있게 된다.”

교수님의 짧았던 이 이야기는 저에게 자신감을 주는 동시에, 겸손함을 가르쳐 주었습니다. 정답은 없다는 사실. 누구나 의문을 제기할 수 있다는 사실. 저에게는 세상을 살아 나가는데 무엇과도 바꿀 수 없는 정말 값진 교훈이었습니다. 이 평범한 사실이 말입니다. 그 전에도 그 후에도 누구도 저에게 이런 이야기를 해주진 않았거든요.

#2

학부 마지막 감동 수업은 복학하고 들었던 컴퓨터 구조 수업 시간이었습니다. 지루하던 찰나, 교수님께서 굴곡진 인생을 살았다는 학부인지 대학원인지 동기에 관한 이야기를 하셨습니다. 처음에는 무슨 이야긴가 싶었습니다. 누구지라는 의문이 잠시 들다가 이야기가 중반을 넘어서면서 바로 알겠더군요. 그 친구가 누구인지 말이죠. 한국 프로그래머의 살아있는 전설로 불리는 바로 그 분, 송재경씨였습니다. 신선한 충격이었습니다. 우리 학교에 그 분과 친구였던 교수님이 있다는 사실이 말이죠. 교수님이 그 이야기를 하시는 10분 사이에 완전 새로워 보이는 기적을 경험했다고나 할까요. ㅋㅋ~ 아마 교수님께서 어렵겠지만 송재경씨를 한 번 수업시간에 초빙해 주셨다면 저는 그 교수님을 ‘신’이라 여겼을지도 모르겠습니다. 어쨌든 그런 기회는 저에겐 없었지만 단지 송재경씨와 친구 사이인 교수님께서 계시다는 사실만으로도 전 제법 감동을 받았습니다.

@codemaru
돌아보니 좋은 날도 있었고, 나쁜 날도 있었다. 그런 나의 모든 소소한 일상과 배움을 기록한다. 여기에 기록된 모든 내용은 한 개인의 관점이고 의견이다. 내가 속한 조직과는 1도 상관이 없다.
(C) 2001 YoungJin Shin, 0일째 운영 중