'돈'을 내고 공부를 한다는 것

미국 석사 유학을 한 달 앞둔 시간에 대한 단상

by 모라키무

CS50, 유학을 앞둔 나만의 준비 방식

나를 유학 길에 오르게 한 티스토리 작가가 있다. 유학 준비를 하면서 이 분의 글을 수 십 번씩 읽으며 미국에서 공부해서 개발자가 되겠다고 다짐하던 나날이었다.

3월 중순에 합격 소식을 받고서도 한 달 넘게 지속된 방황으로 인해 5월이 되어서야 본격적으로 떠날 준비를 시작했다. 위의 포스팅에서 추천한 MOOC 수업 중, Introduction to Computer Science(a.k.a CS50)라는 edx 수업이 있었는데 작년 11월, 원서 쓰기 전부터 시작했음에도 아직 Lecutre 4에 머무르고 있다. 합격-방황-수용-준비의 단계를 거쳐 6월 말인 지금, 하루에 하나씩 수업 듣기를 실천한 지 이틀 차가 되었다. 이번 주에는 제발 Lecture 6까지 들었으면 좋겠지만 인생은 또 어떻게 될지 모르니 이틀 동안 들은 나를 충분히 칭찬하며 하루를 마무리 지을 것이다.


CS50 수업은 '원래 이런 거니까 외워'라는 식의, 내가 제일 싫어하는 교수법을 최대한 지양한다. Lecture 0, 1을 들을 때, 갓 대학생이 된 아이들의 질문을 들으면서 '이런 것도 질문을 할 수가 있구나?'라는 신선함을 맛보았는데 이제는 저런 시각으로 질문을 하는 아이들이 부러울 정도다. 저렇게 다채로운 관점에서 무언가를 바라볼 수 있는 시기가 나보다 훨씬 빨랐다는 것에 개발자의 길을 걸어갈 사람으로서 부러움을 느끼는 중이다.


오늘 수업(Lecutre 4)의 시작은 MEMORY 였다. Memory, heap, stack, garbage 등등 일을 하면서도 늘 마주쳤던 개념이었지만 일을 하는 데 있어 이 개념들을 모른다고 해서 크게 문제 될 것은 없었다. 주어진 업무 요청을 코드로만 작성하면 되는 직업을 가진 이후, 컴퓨터의 내면에 무엇이 있는지 알 필요도 없었고 궁금하지만 들여다볼 시간도 없었다.


하지만 이번 수업에서 C의 pointer, memory를 다루면서 내가 여태껏 '이렇게 두 개가 들어가면 바뀐다'라고 수십 번 되뇌어도 이해가 가지 않던 부분을 유레카! 를 외치며 깨닫게 된 순간이 있다. 심지어 교수님께서 pointer를 설명하기 위해 Lecture 1부터 빌드업했다는 사실에 감탄하며 수업에 빨려 들어가서 듣고 있었는데 거기에 memory, heap, stack의 개념과 함께 '어떤 식으로 pointer를 사용하는가'를 단 번에 이해가 가게 정리해 주셨다.


오늘 수업에서 피식거리면서 들은 파트가 있다(David가 교수님이고 Brian이 조교인 듯).

Brian에게 주어진 두 개의 잔
David: 빨간 물이랑 파란 물이랑 내용물을 바꿔 줄 수 있겠니?
Brian: (잔 두 개를 그냥 바꿈)
David: 에헤이~ 그렇게 말고 컴퓨터 메모리는 그렇게 물리적으로 바꿀 수 없잖아~ 컴퓨터 메모리처럼 잔을 움직이지 않고 내용물을 바꿔줄래?
Brian: (웃으면서) 바꿀 수는 있는데.. 그럼 파란 물을 빨간 물에다 그냥 갖다 붓나요?
David: 그럼 여기서 어떻게 해야 잔을 움직이지 않고 물을 바꿀 수 있을까?

그렇게 학생들은 '빈 와인 잔 하나가 더 필요해요!'라고 댓글로 남겼고 그렇게 세 번째 잔을 통해서 Brian은 성공적으로 내용물을 바꾼다.

잔의 내용물을 바꾸는 Brian

이렇게 눈으로 직접 본 내용을 코드로 구현한 David는 학생들에게 방금 본 현실 세계의 상황을 C 코드로 작성하면서 설명을 이어나간다.

C 코드로 구현한 잔 바꾸기

하지만 여기서 내부 함수로 swap(int a, int b) 처리했음에도 main 함수의 x, y는 값이 바뀌지 않는다. 왜 그런지에 대한 설명은 이렇게 이어진다.

Memory와 Pointer를 설명하는 수업 화면 캡처

미국 감성이 짙은 Oscar the Grouches들이 가득한 나무 보드에 4 bytes(int), 8 bytes(pointer) 짜리 블록으로 변수를 표현하고, MAIN/SWAP 집게로 heap 메모리를 설명하면서 방금 그 코드에서 왜 main함수의 x, y가 값이 바뀌지 않았는지, 또 pointer를 써야지만 어떤 식으로 값이 바뀌는지 설명을 이어나간다.


내가 여태껏 '이렇게 값이 들어오면 이렇게 두 개 바꾸는 거다.... 앞에 들어온 거 이렇게 처리하고 뒤에 들어온 거 저렇게 처리한다...'라고 매번 되뇌어도 이해를 뒤로한 채 냅다 외워오던 것의 원리를 깨닫게 된 순간이었다. 진작에 이렇게 배웠으면, 머릿속에 개구리랑 저 나무 보드만 있었어도 이렇게 포인터에 대한 개념이 어렵진 않았을 텐데 말이다.


생각의 힘을 길렀던 '철학의 은유들'

대학교를 다니면서 모든 교양 수업이 행복했지만 그중에서도 가장 마음에 드는 수업을 고르라면 단연 애령마마의 '철학의 은유들'이다(인기 수업이라고 블로그 포스팅도 있다). 한 학기 동안 여섯 가지의 은유를 다루시면서 일주일에 두 번은 철학적인 물음을 끊임없이 낳게 했었다.

공부란 사고할 수 있는 근육을 기르는 것이다.

아마 이 수업의 첫 강의 시간에 교수님께서 하셨던 말 같다. 그때는 인기 강의에 재밌어 보여서 수강 신청을 한 수업이었기에 근육이니 사고의 힘이니 그런 것에 대해 크게 고민하지 않고 살았던 것 같다. 애령마마의 수업을 듣다 보면 그저 1시간 15분 동안 홀린 것처럼 호로록 지나가곤 했는데 아마도 그렇게 몰두하고 이해하고 집에 가는 버스에서 수업을 되새기던 시간 모두가 사고하는 힘을 기르는 과정이 아니었을까란 생각이 든다.


나의 하굣길은 항상 광화문을 지나야 했다. 이 수업을 들을 때가 2016년 2학기였는데 학교도 뒤숭숭하고 매주 주말마다 광화문은 촛불 집회로 교통이 마비되는 수준이었다. 평일 낮 하굣길임에도 불구하고 수십 대의 경찰차와 수많은 경찰들을 심심치 않게 찾아볼 수 있었다. 그 광경을 볼 때마다 머리가 복잡해서 '철학의 은유들' 자유 게시판에 익명으로 나의 생각을 글로 남기곤 했었던 것 같다. 글을 쓰러 들어간 김에 다른 벗들의 이야기도 읽어보고 댓글을 남기고 또 다른 나의 생각을 남기고 하면서 머릿속에 있는 생각을 글로 표현하는 법을 기르고 길렀던 것 같다.


나의 유학에 대한 단상

어쩌면 내가 그때 애령마마의 수업을 들으며 생각의 힘을 길렀던 덕분에 앞으로 나에게 펼쳐질 미국 수업은 마음껏 근육을 쓸 수 있는 기회가 되지 않을까란 생각이 든다. CS50를 보고서 이렇게 신이 나다는 것은 어쩌면 애령마마가 길러준 근육 덕분에 머릿속에 있는 나의 지식들을 연결 짓고 여태껏 몰랐던 부분들을 스스로 이해하고 다시 또 궁금해 할 수 있도록 꾸준히 연습시키셨던 것은 아닐까 싶다.


또한, 그렇게 힘을 길렀던 덕분에 인생을 살아가는 데 있어 머리가 복잡해지면 글을 쓰고, 그 사람이 입장이 되어보려 하고 문제를 다른 각도에서 바라보는 법을 기를 수 있지 않았을까 감히 혼자 짐작해본다. 학교에서 애령마마가 들려주신 이야기는 철학의 질문을 왜, 어떻게, 다른 사람들은 어떤 식으로 바라보았는지에 대해 함께 생각해 보았다면 이제는 내 인생에 펼쳐진 무수한 물음들을 나 스스로가 다각도로 바라보며 나를 지켜나가야 하기 때문이다. 새로운 환경에 대한 적응, 인종 차별, 젠더 이슈 등등 익숙함에 겪어 보지 못한 문제들을 맞닥뜨리며 '석사'라는 가장 큰 목적 이외에도 따라올 무수한 문제들을 헤쳐나갈 힘 또한 길렀으리라 생각해본다.


미국에서 3년 동안 유학을 앞둔 상황에 이래저래 스트레스받아하는 나에게 아빠는 이런 말로 위로를 했다.

돈 내고 공부를 하는 데는 다 이유가 있다.

노동의 가치로 얻은 돈을 나를 위해 쓴다는 것, 무엇인가를 배우기 위해 돈을 쓴다는 것은 단순히 숫자로만 매겨지지 않는 가치를 가지고 있을 것이란 생각이 든다. 석사 유학을 나선다는 것이 그저 기회비용, 투자 비용으로 가치를 논할 수 없기에 그 안에서 배울 것은 지식뿐만이 아닐 것이다. 그렇기 때문에 나에게 펼쳐질 앞으로의 시간이 더욱 궁금하고 기대된다.



+ 그리고 Lecture 4 의 마무리

https://xkcd.com/138/