KAIST 회고 (1): 공부법 정리

(2021-08-29 초안 작성)

성적을 잘 받기 위한 기본 정리 1: 시험과 과제 마감일은 우리를 기다려주지 않는다
내용)
  1. 오늘 들은 강의는 이틀 내에 복습하라
해설)
  • 엘리베이터 앞에 몇 초만 늦게 도착해도 먼저 엘리베이터에 타고 올라간 사람보다 많게는 수 분 가량 늦을 수 있다.
  • 학교는 학생의 학습 능력을 매 초 마다 연속적으로 체크하지 않는다. 억울하지만, 시험 당일이나 과제 제출 당일에 퍼포먼스를 제대로 못 보여주면 그 후폭풍은 거대하다.
  • 예를 들어, 한 학기 동안 매번 당일 수업 내용으로 다음 날 시험을 보는 상황을 가정하자. 매일 복습을 하는 학생과 항상 수업 이틀 뒤에 복습을 하는 (즉, 시험치고 다음 날) 학생이 있다면, 해당 학기가 끝난 뒤 두 학생의 이해도는 별반 차이 없을 것이다. 둘 다 공부를 제대로 했다는 가정 하에, 복습을 며칠 미룬다고 큰 차이가 날 리가.
  • 다만 시험 성적은, 앞의 학생은 충분히 높을 것이고, 뒤의 학생은 비교적 낮을 것이다 (수업을 듣자마자 모든 걸 깨닫지 않는 이상).
  • 이 예시에서 두번째 전략을 취한 학생은 매우 억울할 것이다.
  • 그러나 이게 현실이다. 시험은 '당일까지'의 이해도를 측량한다. 과제도 마찬가지다. 
  • 현실에서는 시험이나 과제 전까지 충분히 시간을 주지 않느냐 반문할 수 있다.
  • 그러나 매 강의는 시간 의존적이다. 오늘 듣는 강의는 필연적으로 지난 수업 일이나 저번 주, 심지어 선수 과목의 내용과 밀접한 연관이있다.
  • 따라서, 당연히도, 오늘 들은 강의 내용을 다음 수업일까지 복습하지 않는다면, 다음 수업일의 강의 내용을 이해하는 게 매우 힘들어지고, 수업 시간에 제대로 이해하지 못하니 복습할 내용과 다시 공부할 내용은 눈덩이처럼 불어난다.
  • 더 심하게는, 수업 시간에는 하나도 이해 못하고 시간을 날린 뒤, 방에 돌아와서 당일 강의록을 보면서 스스로 처음부터 공부해야 할 수 있다. 실제로 KAIST에서도 많은 학생들이 이런 식으로 공부하면서 강의 하나를 이해하는 데에 드는 시간을 두 배 혹은 그 이상으로 소비한다.
  • 결론적으로, 다른 학교도 비슷하지만, KAIST의 교과목들은 일반적으로 월-수요일에 강의를 하거나 화-목요일에 강의를 하는 등 이틀 간격으로 강의를 하기 때문에, 오늘 들은 강의는 무조건 이틀 내에 복습하자. 수요일이나 목요일에 듣는 강의도 웬만하면 다음 주가 되기 전까지 복습해두자.
  • 사실 이 내용은 아마도 초등학생 때부터 귀에 가시가 박히듯 들어왔던 진부한 내용일 수 있지만, 실행에 옮기기는 정말 쉽지 않다.

성적을 잘 받기 위한 기본 정리 2: 수업 이후 복습할 것을 염두에 두고 수업에 임하라
내용)
  1. 복습 시간을 줄이기 위해, 수업 중 막히는 게 있으면 무조건 질문하라
  2. 복습 시간을 줄이기 위해, 가능하다면 수업을 녹화 혹은 녹음하라
  3. 수업 중에는 강의록에 뻔히 있는 내용보다 안 나와있는 내용을 필기하라
  4. 제대로 질문하기 위해, 다시 말하지만, 수업 전에 꼭 지난 수업 내용은 복습하라
해설)
  • 강의는 공부의 시작이다. 이 말은 공부를 수월하게 하기 위해 첫 단추를 잘 꿰야한다는 의미와, 강의를 듣는 건 공부의 아주 작은 일부일 뿐이라는 두 가지 다른 의미를 내포한다. 따라서, 수업 이후에 복습할 것을 염두에 두고 강의 시간을 전략적으로 잘 활용해야 한다. 강의 시간에 에너지를 쏟아야할 부분과 쏟지 않아도 괜찮은 부분을 나눠야 한다.
  • 내용 1.과 2.는 자명하리라 생각한다. 특히 1.에 관해서는 누구나 아는 얘기지만 실천을 못한다. 실천 무조건 해야 한다. 학생은 분명히 수업료를 내고 강의를 듣는 서비스 소비자다. 매일 수업료로 얼마나 소비하고 있는지 계산해볼 때, 돈 아낀다고 학식 먹는 것보다는 강의를 충분히 방해(?)하면서 막히는 부분을 강의 시간 내에 최대한 해소하는 게 훨씬 남는 장사다. 또한, 질문을 많이 하면서 수업 시간을 끌면 시험 범위도 (아주) 약간 감소하는 효과를 볼 수 있다.
  • 3.의 경우, 강의록에 뻔히 나와있는 내용은 전혀 필기할 필요가 없다. 나도 그랬지만, 많은 학생들이 수업을 듣는 중에도 필기 노트를 온전하게 (self-contained) 그리고 예쁘게 만들기 위해 열심히 강의록에 있는 그래프 그리고 강의록에 있는 정리와 정의 등을 받아 적는데, 그러느라 강의자가 강의록에 없는 내용을 말하는 걸 놓치는 건 정말 효과적이지 못한 필기법이다. 항상 본질에 집중하자. 수업 중 필기는 나중에 방에서 스스로 공부하고 복습하면서 방향을 잘 잡기 위해 대강 가이드를 만드는 것이지, 그 자체로 완벽한 시험 준비서를 만드는 게 아니다. 시험 준비서는 복습할 때 차근차근 만들자.
  • 강의자는 강의록을 단순히 줄줄 읽는 게 아니라 강의록에 없는 내용도 살을 붙여서 설명하기 때문에, 강의록에 없는 내용에 집중하여 노트 필기하자. 그리고 2.처럼 녹음 또는 녹화가 가능하다면, 수업 시간에 굳이 필기를 많이 할 필요는 더욱 더 없다. 잡다한 내용을 필기하는 데에 체력을 낭비하지 말고, 강의자가 말하는 내용들을 즉각 이해하는 데에 온 힘을 집중하자. 
  • 그 과정에서 제대로 이해가 안되는 것을 바로 질문하자. 원래 자신이 모르는 게 무엇인지 아는 게 가장 어렵다. 대부분은 자기가 모르는 게 뭔지도 모른다. 수업 시간에 강의자가 말하는 내용을 이해하는 데 집중해야 질문이 튀어나온다. 그래서 4.처럼 최소한 이전 수업 내용은 제대로 알아야 이번 수업을 따라갈 수 있고, 이번 수업에서 모르는 게 무엇인지 알 기회가 생긴다.
  • 수업 중 바로 질문하는 게 정 쑥스럽다면 수업 끝나고 어떤 내용을 질문할지 빠르게 노트에 스케치하자.
보충)
  • 2.의 경우, 수업을 강의자 허락없이 녹음하는 행위는 저작권법상 불법으로 알고있다. 교칙 상으로도 제한이 있던 것으로 기억한다. 법리적인 건 잘 찾아보고 녹화 및 녹음하자. 교수님께 양해를 구하고 수업 며칠 이후에는 폐기하겠다고 하면 허락해주실지도? 최근은 코로나19 때문에 비대면 강의가 많아지면서 수업 영상을 직접 촬영해서 KLMS 등에 업로드 해주시는 고마운 교수님들도 계신다. 적극 활용하자.

성적을 잘 받기 위한 기본 정리 3: 시험 전까지 복습을 다양한 방법으로 하라
내용)
  1. 매 수업 이후에는 정리 노트를 만들어라 (지금까지 설명한 '복습'은 이걸 말한다)
  2. 시험 몇 주 전에는 정리 노트를 처음부터 읽으면서 개정하라
  3. 시험 며칠 전에는 시험에 가장 나올 법한 내용들을 종이 한 장에 모두 요약해서 시험장에 들고가서 봐라
  4. 과제 전에는 과제를 수행하는 데에 필요한 수업 내용을 복습하고, 과제 이후에는 자기가 짠 코드를 복습하라
해설)
  • 1. 정리 노트를 만들 때 논리적으로 막히는 부분이 있으면 꼭 풀고 넘어가야 한다. 위키피디아를 참고하든 구글링을 하든 기술 블로그를 보든 교수님이나 조교를 붙잡고 늘어지든, 제대로 이해하지 못한 내용, 정의, 정리, 수식, 코드를 필수적으로 정복하라. 이걸 매일 수행하기 좀 버겁다는 건 인정한다. 그래도 화이팅...! 이렇게 평소에 공부하고 나면 놀랍게도 다들 시험 공부로 바쁠 시즌에는 딱히 더 공부할 게 없다.
  • 2. 개인적으로는, 매 시험 3주 전부터 시험 공부를 시작했다. 한 학기가 총 16주 이므로 중간 기말 고사 기간을 제외하면 14주, 그 중 절반은 7주이다. 시험 전 21일 중 초반 14일은 7주치 수업들의 강의 노틈 와 슬라이드, 강의 녹화 또는 녹음본, 나의 정리 노트를 다시 천천히 공부하면서 기존 정리 노트에서 부족했던 부분들을 포스트잇 등을 이용해 채워 넣었다. 매 강의는 상호 연관성이 높기 때문에 나중에 들었던 강의가 초반에 들은 강의의 이해에 도움을 주기도 하고 그 반대로 도움을 주기도 한다. 따라서 한 번에 7주치 강의를 훑으면 머리 속에서 지식 구조가 매우 촘촘해진다.
  • 1.이 수업 내용을 적절히 정리 노트로 인코딩하는 과정이라면, 2는 정리 노트가 수업 내용의 제대로 포함하고 있는지 놓친 내용은 없는지 디코딩하는 과정이다.
  • 3. 그 뒤 남은 일주일 동안은 시험에 나올 만한 내용들에 머리를 최적화시키면 된다. 이전까지는 수업의 모든 내용들을 막힘없이 깔끔하게 이해하는 데에 집중했다면, 일주일 동안은 시험 만을 위해서 최적화하자. 이럴 거면 처음부터 시험을 위해 최적화하면 되는 것 아닌가 싶을 수 있지만, 그런 식으로만 공부하면 성적만 좋은 빈 깡통이 될 것 같아 개인적으로 지양했다. 시험은 자신의 실력을 공식적으로 확인받는 무대이긴 하지만, 그 범위는 매우 제한적이다. 앞서 말한 엘리베이터 예시처럼, 성적은 실력의 가늠자가 되기 힘들 때가 많다. 이과스럽게 말하면 biased estimator. 항상 공부의 본질에 집중해야 하고, 스스로에게 도전적인 과제를 줘야한다.
  • 3. 나는 어릴 때부터 암기력이 또래보다 좋은 편은 아니었다. 영어 단어 외우는 것도 정말 못했고. 카이스트 학부 입시 때도 매우 초보적인 무한 급수 공식을 새하얗게 까먹곤, "기억이 잘 안나는데 처음부터 증명해보겠습니다!"하고 교수님들 앞에서 증명해서 다시 풀었다. 대신 이해력은 내가 평가하기에도 아주 좋다. 그래도 시험장에서는 암기할 건 암기해야 하니까, 막판까지 머리 속에 남아 있어야할 내용들을 A4 한장에 요약해서 시험장에 들고 가서 시험 치기 직전까지 거듭 외웠다.
  • 4.의 경우, 수업에서 활자로만 봤던 알고리즘을 프로그램으로 옮기는 것 자체가 대단히 효과적인 복습이다. 또 전산학부의 여러 시험에서 자신이 짰던 코드를 그대로 옮기거나 변형해야 하는 문제가 심심치 않게 나오기 때문에 코드 복습은 상당히 효과적인 공부법이다.

성적을 잘 받기 위한 기본 정리 4: 스스로 동기부여 하라
내용)
  1. 각 과목의 의의를 숙지하라
  2. 수업에서 배우는 내용이 어디에 쓰일지 항상 고민하라
  3. 전공 필수 과목부터 학부 초반에 몰아듣기 보다는 선택 과목이라도 진심으로 즐길 수 있거나 호기심이 가는 과목이라면 주저 말고 수강하라
해설)
  • 단순히 학점을 채우기 위해 공부하는 게 아니라, 각 과목의 존재 이유에 관해 질문을 던져야 하고, 종강 시점에는 그 질문에 대한 답을 찾아야 한다.
  • 개강 전에 각 과목의 쓰임새를 얄팍하게 나마 블로그나 유투브 등에서 훑어보고 수업에 임하는 게 좋다.
  • 학기 중에도 항상 각 과목의 큰 그림에 대해 고민하라. 예를 들어, Quora나 구글 등에 '데이터 구조 모르는 개발자' 이런 식으로 검색을 해서 포스트들을 읽어보면 동기부여가 생길 것이다.
  • '이거 왜 배우지'하는 질문을 항상 스스로 그리고 교수님께 던져라.
  • 학기를 보내면서 개강 전에 생각했던 각 과목의 의의를 수정해 나가라. 아마 개강 전에는 추상적으로만 느껴졌던 문장들이 점점 또렷해질 것이다. 사실 개강 전에 위키피디아에 '운영체제'라고 검색해서 글 읽어봐야 머리 속에 별로 안남을 것이다. 그러나 공부를 할 수록 '그 때 그 말이 이런 의미였구나'하고 깨닫게 된다. 공부는 이렇게 불완전했던 지식을 하나씩 채우는 쾌감으로 해야 한다.
  • 기말 고사 공부가 끝났을 시점에는 이미 각 과목의 존재 이유와 과목의 내용을 몇 줄 짧은 문장으로 정리가 가능해야 한다.
  • 약간 극단적일 수 있으나, 기초 없이 일단 상위 과목부터 들은 뒤 어떤 기초 지식들이 필요한지 제대로 느낀 다음, 하위 과목을 (이미 상위 과목에서 공부한 내용을 토대로) 매우 수월하게 수강하는 것도 실력에 자신만 있다면 해볼 법하다. 예를 들어 기초필수 과목 몇 개 안듣고 전공 과목부터 들어볼 수 있다.
  • 3.의 경우, 생각보다 자신이 좋아하는 게 무엇인지 발견하는 게 꽤 힘들다. 즐길 수 있을 과목, 호기심이 마구 생기는 과목을 발견했다면 아주 운이 좋은 것이다. 당장 수강해보자. 그것 만큼 강력한 동기부여는 없다. 설령 그 과목의 선수 과목들을 좀 안들어봤더라도 도전해보자. 두 배로 공부하면 된다!!!? 개인적 경험으로, 굉장히 흥미로운 과목이 있었는데 선수 과목을 전혀 수강하지 않은 상태였다. 교수님께서 그런 학생은 수강을 취소를 하라고 하셨지만 끝내 취소하지 않고 들어본 경험이 있다 :) 이러면 사람이 자존심이 있어서 어떻게든 공부하게 된다. 재미없어 보이는 전필 꾸역 꾸역 듣기보다는 재밌어 보이는 과목도 좀 끼워 넣는 게 동기부여에 큰 도움 된다. 또, 그렇게 기본 없이 날뛰면서 여러 과목을 듣다보면 전필 과목들에 동기부여가 생기기도 한다. Buttom-up 공부 방식이 꼭 누구에게나 맞는 것은 아니므로 적절히 순서를 조정해가면서 수업을 듣는 것을 추천한다.

성적을 잘 받기 위한 기본 정리 5: 적응하라
내용)
  1. 전산학부에는 매우 다양한 스타일의 교과목들이 있고 최적의 공부법은 과목마다 다름을 명심하라
  2. 심지어 전통적인 시험식 공부로는 씨알도 안먹히는 과목들도 많음을 인지하라
  3. 다양한 과목들을 수강하고 넓은 전산학의 세계에 적응하라
  4. 성적은 실력의 가늠자가 되기 힘들 때가 많으며, 운의 요소도 많이 작용함을 인정하라
해설)
  • 현대 전산학이 다루는 범위는 너무나 넓다.
  • KAIST 전산학부에는 이산 구조, 알고리즘 개론, 계산 기하학, 그래픽스 등 수학과 (특히 시험이) 비슷한 과목이 있는가 하면, 인간-컴퓨터 상호작용, 전산학 프로젝트, 전산학특강 중 몇 과목처럼 프로젝트 중심으로 굴러가거나 인문사회적 요소가 많은 과목들도 있다. 어떤 과목들은 냉정하게 시험 점수 순서대로 성적이 나뉘지만, 또 어떤 과목들은 peer review 등 학생들끼리 발표나 토론을 통해 상호작용하면서 점수를 매기는 경우도 있다.
  • 시스템 관련 과목들은 마치 생물학 과목처럼 암기할 게 꽤 많다.
  • 몇몇 과목은 족보가 많이 나돌지만, 어떤 과목들은 족보 자체가 있을 수 없는 (발표 위주 과목 등) 경우도 있다.
  • 그래서 한 가지 전략이 모든 과목 공부에 다 적용 가능할 수는 없으며, 여러 과목을 들으면서 자신만의 전략을 세우고 잘 적응해야 한다.
  • 이렇게 전산학부에서 다양한 성격의 과목들을 공부하면서 구르다보면(?) 대학 이후에 펼쳐질 다이나믹하고 예측 불가능한 생활에도 잘 적응할 수 있을 것이다.

댓글

이 블로그의 인기 게시물

기록: UCL Course on RL 요약 및 정리 (Lecture 6: Value Function Approximation)

기록: UCL Course on RL 요약 및 정리 (Lecture 9: Exploration and Exploitation)