6 Oct
2011
Posted in: 양피지
By    15 Comments

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


학부 수업 명장면, 베스트 3
by 신영진(YoungJin Shin), codewiz at gmail.com, @codemaru, http://www.jiniya.net

자주 오시는 분들께서는 아시겠지만 개천절을 기해서 블로그를 리뉴얼 했습니다. 원래 제가 호스팅 받던 곳이 워드프레스 최신 버전을 지원하지 않아서 새로운 호스팅 업체로 옮기고 홈페이지에 있던 자료들도 정리했습니다. 블로깅 하기 이전의 사이트에 있던 자료들을 옮기려고 살펴보다 보니 예전 생각이 새록새록 나더군요. 풋풋한 시절에 제가 작성한 글들에서 묻어나는 풋내랄까요? ㅋㅋ~ 어쨌든 대학 시절에 쓴 글들을 읽고 있으니 자연스럽게 그 시절을 회상하게 되었습니다. 그러다 떠오른 세 가지 장면. 캡쳐해 보았습니다. 학부 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분 사이에 완전 새로워 보이는 기적을 경험했다고나 할까요. ㅋㅋ~ 아마 교수님께서 어렵겠지만 송재경씨를 한 번 수업시간에 초빙해 주셨다면 저는 그 교수님을 ‘신’이라 여겼을지도 모르겠습니다. 어쨌든 그런 기회는 저에겐 없었지만 단지 송재경씨와 친구 사이인 교수님께서 계시다는 사실만으로도 전 제법 감동을 받았습니다.

Browser does not supports flash movie

  • 트랙백 주소: http://www.jiniya.net/wp/archives/4806/trackback

관련 글

    None Found
  • 권교수님 이시면…

    3학년 2학기 실험은 어떻셨나요? 재미있었지만은, 빡셨던 기억이…

  • 임용균

    행님 간만입니다.
    형은 저하고 정말 정반대인듯해요.
    실력도 하이퀄리티고 ㅋ
    생각도 아메리칸스타일.
    행님 글쓴거 볼때마다 제가 너무 촌스러워 보여서 슬퍼요 ㅠㅠ

  • codewiz

    권교수님 이시면… // 3-2 실험이 하드웨어 실험인가요? 하드웨어 실험이라면 제가 고문관이어서 머라 드릴 말씀이 없네요. ㅎㅎ~ 저희 조에 정말 열심히 하는 친구가 있었는데 저포함 두명이 완전 고문관이어서 그 친구가 엄청 힘들어 했었죠. 전 그나마 자판기 역할(자판기에서 커피뽑아 대령하는)은 했는데 다른 친구는 정말 쩔었었죠. 나중에 둘이 또 인공지능을 같이 들었었는데 그 때도 서로 베이스라며 놀렸던 기억이 ㅋㅋ~ 새삼 그 열심히 했던 녀석한테 미안한 느낌이 다시 드는군요. 진짜 열심히 했었는데, 우리 때문에 학점이 ㅠㅜ~

    그 실험 하면서 인생 참 복불복이라는 느낌이 많이 들었습니다. 최종 검사하는데 중간에 잘나갔던 조들이 안되면서 똥망하는 케이스를 좀 많이 봤었던 것 같아서요 ㅋ~

    임용균 // 손발이 다 오그라드는 이 느낌은 머지? 용균아, 너 가을타는구나? 남자가 가을도 좀 타고 해야지. ㅋㅋㅋ~ 언제 술이나 함 먹자규… ㅠㅜ…

  • relilau

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

    이것이 당최 어떻다는 말이죠???

    배열에 항상 -1을 하고 접근을 한 것을 해결하는 거라는 것은 알겠는데 말입니다…

  • codewiz

    relilau // 제가 예전에 그냥 그런 프로그램을 만들 때는 항상 int score[20];을 하고는 score[0]부터 score[19]까지 접근할 수 있기 때문에 학번에 맞는 점수를 찾기 위해서 score[학번 – 1];을 사용해서 접근했습니다. 공간은 20개만 사용하지만 학번 – 1을 매번 해야 하기 때문에 더 많은 CPU 시간을 사용하죠.

    score[21];을 하면 score[0]부터 score[20]까지 접근 가능합니다. score[0]은 버리고 그냥 score[학번]으로 접근할 수 있죠. CPU 시간은 줄어든 대신 공간을 21개 사용해서 앞에 비해서는 1개를 더 사용하게 됩니다.

    끝으로 포인터를 오프셋 시킨 위 코드는 공간은 20개만 사용하면서 동시에 pscore[1]부터 pscore[20]까지 접근할 수 있기 때문에 매번 -1을 하지 않아도 됩니다. 즉, 공간도 20개만 사용하면서 CPU 시간도 작게 사용할 수 있는 방법도 있다는 이야기입니다.

  • http://blog.wimy.com zelon

    @codewiz pscore 재미있네요 :) 저도 ‘절대적인 지식은 없다’ 라는 걸 얼마전에 고전 시트콤 프렌즈를 보면서 다시 느꼈었습니다. ‘니가 아는 진화론이 정말~~~ 조금도~~~ 틀린 점이 없다라고 말할 수 있니?’ 뭐 이런 대화였는데, 상황은 웃긴 상황이었지만, 정말 정말 조~~금도 틀린 게 없을까라는 생각이 들더라구요. (검증되지는 않았다지만) 빛보다 빠른 물질이 발견되었다는 등, 이런 얘기도 많은 요즘 말이죠.

    멋진 글 잘 보고 갑니다~~

  • codewiz

    zelon // 감사합니당. 나이가 들수록 ‘절대적’이라는 말은 점점더 함부로 못쓰게 되는 것 같다는 생각이 많이 드는 요즘이네요. (검증되지는 않았다지만) 빛보다 빠른 물질이 발견되었다는 소식은 정말 ‘충격’이었습니다. ㅎㅎ^^

  • bellfive

    전 본문중에 가장 부러운 말은

    아주 잠깐 동안 이래서 엄마가 대학을 가라고 했던 거구나, 라는 생각을 뼈저리게 했었답니다

    이 부분이네요~
    감탄하면서 수업을 들은 적은 있는데 이런 생각까진 못했었거든요..~

    부럽슴다 ^^

  • codewiz

    bellfive // 감사합니당. 몰랐었는데 복받은 놈이었군요. ㅎㅎ~

  • Pingback: XLGAMES 커버 스토리 | 괴짜 프로그래머의 일상사~

  • 연필이

    저도 #0을 비슷한 내용으로 들었어요! 혹시 같은 대학이신가..? 군대가기 전에 #0을 들었지만, 아직 대학생입니다. #0을 들었을때 저도 머리속이.. 개운해진달까요? 실타래가 순식간에 풀렸달까요?(내가 푼것도 아니면서…) 그런 감동에 가까운 신선한 충격을 느꼈지만, 양피지님이 묘사하신것만큼은 아닐겁니다. 그래서 양피지님이 부러워요.

  • codewiz

    연필이 // 전 연필이님이 “아직 대학생입니다” 라는게 너무 부럽습니다. 제일 좋을 시긴데용. 전역하고 캠퍼스를 주름잡고 다니는 거 아닌가욤? ㅋㅋㅋ~~~

  • 쇠뇌

    학교 선배님이시군요!! 권혁철 교수님 수업 참 좋아합니다. 아직 학부생인 꼬꼬마지만 권교수님 수업은 항상 수강하고 있습니다. 생각했던 것 이상을 얻어갈 수 있더군요.

  • codewiz

    쇠뇌 // 반갑습니다. 쇠뇌님 글 보니깐 학교 다닐 때가 그리워 지네요 ㅋ~ 이것도 인연인데 종종 놀러와 주세요 ㅎㅎ~

  • Pingback: 싸트(SSAT) 수학 문제에 부쳐, 2007 | 괴짜 프로그래머의 일상사~