thumbnail
뮌헨공대 컴퓨터공학과 (Informatik) 재학생의 회고록 (4)
KOR / 독일유학 / TUM / Computer Science
2024.08.18.

0. 방문해주신 분들께

드디어 2학년 2학기, TUM Informatik 졸업의 마지막 관문까지 왔습니다.

2학년 2학기는 가벼운 말로라도 안심하라고는 할 수 없는 학기입니다. 전 글에서도 몇 번이고 언급했지만, 학생들 사이에서 입학시부터 그 악명을 가장 많이 접하는 학기이며

실제로 그 악명에 걸맞는, 절대적인 양과 난이도를 자랑합니다. 물론 지금까지 열심히 해오신 독자분들이라면 이 또한 충분히 넘어가시리라고 믿으며

아마 가장 긴 글이 될 수도 있는 이번 글을 시작해보도록 하겠습니다. 언제나 그렇듯, 딱딱한 문체로 진행하니 양해 부탁드립니다!

1. 글을 시작하며 & 명심해야 할 것

아마 1학년을 무사히 졸업한 학생이라면 지나가는 말로라도 이러한 말들을 들아보았을 것이다:

Na, viel spass mit THEO und DWT im kommenden Semester (다음학기 THEO와 DWT 수고해라!)

어디서든 학교생활을 하며 만나게 되는 선배들 또는 Tutor들에게 들을 수 있으며, 자조적이게도 이러한 설명이 따라붙는다.

Lass uns dann gerne mal zusammenlernen (같이 공부할 수 있으면 좋겠다!)

즉, 자신들도 떨어져서 과목 시험을 재수해야한다는(…) 쓴웃음 섞인 농담이다.

실제로 THEO 과목의 Tutorium을 들어가보면 30%이상이 작년에 통과하지 못한 THEO 재수생으로 차 있기도 하다. (심지어 3수생도 심심찮게 볼 수 있다. 이들은 한번 더 떨어지면 사실상 퇴학이기에 굉장히 간절히 공부한다.)

그만큼 난이도가 어려운 과목들로 가득 차 있고, 공부하면서 포기하고싶은, 조금만 타협하고싶은 마음이 수천번도 더 들었던 학기였다. 난이도에 대해 감이 잘 잡히지 않는다면 예시를 한 번 들어보도록 하자:

내가 아는 한 선배의 경우, 모든 과목을 우수하게 통과했으며 이미 학사 논문까지 제출한 상황에서 2학년 2학기의 한 과목 때문에 X년째 졸업을 하지 못하고 있었다.

강조해서 말하지만, 절대로 멍청하거나 노력하지 않는 선배가 아니다.

그 선배는 자신의 상황에 대해 이렇게 표현했다.

2학년 2학기는, 특히 THEO는 늪과 같다.

어째서 늪이라는 단어를 골랐을까? 단순히 어려운 것이 아닌걸까? 조금 자세히 알아보도록 하자.

1.1 2학년 2학기를 필히 “한 번에” 통과해야 할 이유

2학년 2학기까지 과목들을 밀리지 않고 통과한 학생이라면 아마 조금은 마음의 여유가 생겼을 수 있다. 충분히 Exmatrikulation을 면할만한 ECTS를 모았기 때문에 당장 퇴학을 걱정해야하는 시기는 진작에 지났기 때문이다. 하지만 2학년 2학기를 “과하게” 노력해서 한 번에 통과한다면 다음과 같은 장점들이 있다:

  1. 졸업까지의 1~2년을 자신의 커리어 개발을 위해 온전히 사용할 수 있다.

이는 Informatik 학생이라면 얼마나 큰 장점으로 다가올 지 바로 알 수 있을것이다. 무사히 통과만 한다면 3학년부터는 NumProg라는 아주 쉬운 과목을 제외한다면 모든 과목이 선택과목으로 이루어지며, 자신의 Focus에 따라 진로를 위한 심화과정을 학습할 수 있다.

  1. 심적/시간적인 여유가 생긴다.

사실 1번보다도 더욱 커다란 장점이라고 할 수 있다. 앞으로 진행되어야 할 Bachelorpraktikum이나 논문작성에 걸림돌이 사라지며 졸업예정자라는 타이틀을 자랑스럽게 사용할 수 있게 된다.

확실히 말하지만, 뮌헨공대의 선택과목들은 쉽다! 모든 과목들이 그런 것은 아니지만, 1.0을 받는 비율이 전체 수강생의 20%가 넘어가는 과목들도 꽤나 자주 보인다. (선배들에게 키워드: Gratis 1.0을 질문해보자!) 공부야 하기 나름이겠지만, 떨어진다고 전혀 졸업에 지장이 가는 과목들이 아니기에 대부분이 (1)번처럼 스스로의 자기계발에 더욱 투자하는 분위기다.

이는 결국 시간적 여유로 이어지고, 학교 외적인 공부나 액티비티에도 신경을 쓸 수 있게 된다. 실제로 나 또한 정보보안 관련 공부에 열을 올리고 있으며, 회사의 업무시간 또한 자발적으로 늘려서 여러가지 일을 추가적으로 맡고 있다. 당연히 이런 널널하고 퇴학이란 말이 사라진 독일의 대학, 특히 이 뮌헨이란 도시에선 많은 것을 즐길 수 있게 될 것이다.

이렇게 설명하면 마치 2년동안 달려온 우리에게 상을 주는 듯한 장점으로 보이지만 여기에는 꼭 짚고 넘어가야 할 부분이 있다.

반대로 말하자면, 저 두 가지의 장점은 통과하지 못했을 시 온전히 치명적인 비수로 내게 되돌아온다.

아까 잠깐 언급했지만, 2학년 2학기 과목 중 하나인 THEO는 실제로 학생들이 퇴학당하는 경우가 아주 많은 과목이다. 잘 알겠지만 TUM에서 1학기를 제외한 퇴학은 사실상 Maximale Semesteranzahl인 10학기를 넘어서까지 통과하지 못했다는 것을 의미한다. 즉 5년의 시간이 학위 없이 삭제될 수 있다는 말과 다름없다.

이런 경우는 저 한 선배만의 케이스가 아니다. 공식적으로 나온 통계는 없지만, 꽤나 큰 비율의 학생이 2학년 2학기, THEO나 DWT라는 마지막 문턱을 끝내 넘지 못하고 다른 과로 전과하거나 학교에서 나간다고 전해진다. 졸업논문까지 다 써놓고 한두과목때문에 퇴학당하는 불상사가 일어날 수 있다는 말과 같다.

이는 당연히 학생들의 마음에 부담으로 쌓이게 된다. 하지만 그래봤자 한 두 과목일 뿐인데, 내년에 다시 공부하면 한 번 해봤던 내용인데 그만큼 열심히 하면 더 쉽지 않을까?

남은 3학년이 시간적/심적인 여유가 충분한 학기라고 이야기했지만 그렇다고 영 놀기만 한다는 것은 아니다. 과연 스스로가 다음 년도에는 이번 년도보다 더 많은 시간과 열정을 다해 한 번 떨어진, 슬슬 질리는 과목을 공부할 자신이 있나 생각해보도록 하자. 또한 이미 내용들을 알고있다는 점 또한 자만으로 잘못 빠져 노력을 덜 하게 되는 경우도 분명 있을것이다.

결국 그 선배는, 이번 학기에 오직 한 과목만 신청하는 초강수를 두었고, 4.0으로 턱걸이 통과했다.

개인적으로 선배가 아주 여기서 늪이라는 단어선택에 관해 이해할 수 있는 힌트를 얻을 수 있다. 마치 딱 하나만 더 모으면 상품을 받는 쿠폰과 비슷한 심리로 설명할 수 있겠다.

  • 여기까지 왔는데, 다른 과목을?
  • 딱 하나만 통과하면 되는데, 내년에 할 수 있지 않을까?
  • 어차피 똑같은 내용인데 4~6번중에 한 번을 통과 못하겠어?

결국 매년마다 THEO와 DWT의 시험을 보며 통과하기만을 기다리는, 첫 글에서 설명한 TUM의 망령들이 생겨나는 가장 주된 이유가 이러한 것이라고 생각한다.

1.3 그렇다면 왜 어려운걸까?

THEO를 설명할 때 다시 한 번 자세히 언급하겠지만, 2학년 2학기 특히 THEO의 악명은 절대 예외를 두지 않는 엄격한 채점방식에서 기인한다. 조금 더 정확히 말하자면

답안과 조금이라도 다른 답을 제출 할 시 자비없이 0점을 먹인다.

절대로 부분점수따위가 존재하지 않으며, 아무리 직관적으로 맞는 답변이라도, 사실상 과목을 공부한 우리들이 보기에는 무슨 말인지 대번에 납득이 가능한 수준의 답변이라도 가차없이 선이 그어진다.

이 말은 내가 모든 테마들을 완벽하게 이해하고 있더라도, 논리적인 주장법을 모른다면 혹은 수학적으로 귀결되는 증명방식에 익숙하지 못하다면 언제든지 내 모든 답변이 0점처리되는 대참사가 일어날 수 있다는 말이고, 이러한 부분을 보완하지 못한다면 결국:

내년에 다시 도전한다고 하더라도 통과는 보장할 수 없다.

그리고 이는 말했다시피, 앞으로의 계획에 있어서 아주 큰 차질을 빚게 만드는 요소이다. 따라서 가장 열정이 있을 2학년 2학기에 최선을 다하여, 마지막 힘까지 짜내어서 결승점을 통과하는것이 TUM에서의 학사 프로그램을 제대로 활용할 수 있는 방법이라고 한치의 의심도 없이 말할 수 있다. 단순하게 말해서 2년을 공짜로 번다고 생각하자.

3. 2학년 2학기 과목들과 팁

앞서서 겁을 많이 줬지만, 이는 어디까지나 긴장하고 최선을 다해야한다는 의미에 지나지 않는다. 첫 글에서 내가 한 말을 다시한번 반복하고싶다:

나는 천재가 아니며, 도서관에서 2년을 산 Guru는 더더욱 아니다.

그럼에도 나는 2학년 2학기를 무사히 통과했고, 지금 이렇게 글을 쓰며 회상하는 여유를 가질 수 있게 되었다. 그렇기에 다른 선배들로부터 듣지 못했던, 하지만 이제는 자신있게 말할 수 있는 이 한마디를 꼭 전해주고싶다:

노력하자. 노력하면 100% 통과할 수 있다.

긴장하고, 노력하고, 반복하자. 결국 THEO와 DWT 또한, 수많은 졸업생들이 통과해야 했던 Bachelor의 과목일 뿐이며 알맞은 전략으로 준비한다면 반드시 통과할 수 있다고 자신한다.

그럼 2학년 2학기의 필수과목들에 대해 알아보자:

  • Diskrete Wahrscheinlichkeitstheorie(확률론) : 낙제율 약 45~55%
  • Rechnernetze und verteilte Systeme (네트워크 이론) : 낙제율 약 40%
  • Einfuehrung in die theoretische Informatik (이론정보학): 낙제율 약 6575%, Retake 기준 낙제율 **8090% 이상**

THEO의 낙제율이 생각보다 높지 않다는 것에 의아해 할 수도 있는데, 저건 재수, 삼수생이 아주 많이 섞인결과라는 것을 잊지 않으면 좋겠다.

그럼 과목별로 자세히 알아보자.

3.1 Theoretische Informatik (A.K.A. THEO)

THEO에 대해서는 따로 글을 쓰는게 좋다고 판단했다. 그 만큼 열심히 공부한 과목이기도, 또 할 말이 많은 과목이기도, 특히 여기까지 글을 읽어오고 Informatik의 여정을 함께하고자 하는 분이라면 더욱 자세히 이야기를 듣고 싶을 과목이기도 하기 때문이다.

따라서 다음 글에서 THEO라는 과목에 대해 조목조목 뜯어보고, 내가 공부한 방법과 전략을 포스팅해보도록 하겠다. 이번 글에서는 과감히 스킵하여 다음 과목으로 넘어가보자!

3.2 Diskrete Wahrscheinlichkeitstheorie (A.K.A. DWT)

내가 TUM에서 공부한 과목 중 이렇게 호불호가 갈리는 과목이 있었던가? 싶을정도로 친구들 사이에서 평가가 극명하게 갈렸던 DWT다. 한국어로는 이산확률론이라고 한다.

아마 THEO 다음으로 악명이 높을 것 같다고 판단하는데, 이건 정말 Case by case로 나같은 경우는 딱히 어렵게 느껴지진 않았으며 조금의 공부로 통과할 수 있었다.

아마 후자의 경우 (즉, 이 과목과 잘 맞지 않는 경우)는 문제를 보자마자 느껴질 수 있는 과목일 수도 있을 것이다. 그 이유는:

  1. 문제를 완벽하게 이해해야하고
  2. 상황에 맞는 공식을 적용해야 하기 때문이다.

우리는 TUM에서 2년 내내 증명 내지는 조금은 추상적인 방법들로 대수들과 논리들을 정의해왔다. 이 과목은 역으로 정말 실생활에서 일어날 수 있는 문제(확률론)들을 다루기 때문에, 역으로 오래간만에 학교 과정처럼 공식을 적용해야하는 상황이 오는데, 이에 익숙해질 필요가 있다.

A라는 상황에는 A’라는 공식을 사용해야하고, B라는 상황에서는 B’라는 공식을 사용해야만 문제를 풀 수 있는데, 문제를 확인하고 이게 어떠한 공식을 쓸 수 있는 상황인지 판단하는것이 처음에는 꽤나 버겁게, 그리고 뜬구름 잡듯이 느껴진다. 하지만:

사실 우리같은 한국인들은 쎈수학 문제집을 달달 풀던 방식으로 접근하면 아무 문제가 없다!

유일하게 걸리는 점은, DWT의 문제들의 특성상 꽤나 많은 수준의 독일어 어휘가 요구되며 그 중에는 정말 독일인이 아니면 유학생인 우리에게는 알기 힘든 어휘들이 (예를 들어 동물이나 특정 곤충 등의…)나올 때가 있다는 점이다. 나 같은 경우야 독일어가 많이 수월한 편이라고 할 수 있으니 크게 걸림돌이 되지 않았지만 주위의 유학생 친구들중에는 문제가 이해하기 어렵다고 불평하는 친구들이 종종 있었다. 이거야 단기간에 해결할 수 없는 문제이기도 하고, 뉘앙스로 대충 이해하고 넘어가면 되는 부분도 있기 때문에 (단어 하나가 전체 문제에서 요구하는 바에 미치는 영향이 적다고도 할 수 있겠다)너무 겁먹지 않아도 될 것 같다.

각설하고, DWT를 위해 내가 한 공부는 딱 두가지이다.

  • 매 주 나오는 숙제들을 꾸준히 (혼자서) 풀고
  • 시험기간에는 그 숙제들을 (이번년도것과 저번년도것)7~8번정도 반복해서 풀었다.

애초에도 그렇게 어렵게 느껴지는 과목은 아니었지만, 이 방법으로 나를 제외한 이 과목을 좋아하지 않던 친구들도 모조리 한 번에 합격하는 쾌거를 이뤄냈다!

정말 별 거 아닌 방법이라고 생각하면, 정답이다. DWT는 시험에 나오는 문제의 유형이 철저히 전 년도 것들과 일치힌다. 조금 비틀어서 말하자면 숙제나 Uebung에서 나오는 문제 형식들 외에는 출제되지 않는다! 증명문제가 (조금의 증명 테크닉은 들어갈 수 있겠지만) 전혀 나오지 않는 과목이기에, 딱히 한 공식의 증명을 철저히 공부해서(물론 이렇게 할 수 있다면 훨씬 좋은 점수를 받을 수 있겠지만) 모든 시스템을 이해하기보다는, 문제를 파악하고 공식에 대입하는 연습이 훨씬 효율적이다.

그렇다면 공식을 외워야하는가? DWT에는 약 50+a개의 공식이 존재하는데, 이를 모조리 외우라는것은 어불성설이며 애초에 TUM의 스타일이 아니다. 시험에는 A4용지 한장의 Cheat Sheet를 가져갈 수 있기에 이 곳에 필요한 공식들과 증명들을 빽빽히 적어가는 것이 필수적이다. 다른 과목에서도 Cheat Sheet는 허용하는 편이지만, 난 솔직히 다른 과목 시험에서 시험중 Cheat Sheet의 내용을 확인한 적이 없다. 하지만 DWT는 다르다. Cheat Sheet만 완벽히 준비해가도 50%정도는 통과했다고 볼 수 있다. 물론 나머지 50%는 문제풀이 연습이다.

시험에서 가장 어려운 부분은 아이러니하게도 첫 챕터이자 시험에서도 첫 문제를 차지하는 Urnemodell인데, 1학년 1학기 DS에서 배웠던 DS의 연장선이다. 여긴 조금 통계학적 감각이 필요한 부분이라 어떻게 공부하라고 말하기는 어렵지만, 애초에 시험 문제의 20%밖에 차지하지 않으니 다른 곳에서 점수를 챙겨간다면 무리없이 좋은 점수로 통과할 수 있다. 나머지 문제들은 정말 숙제와 비슷하게 출제되니 잘 숙지했다면 걱정할 필요가 없다.

전반적으로 재미있지만 조금 짜증나는 (학교수학의 지루함을 다시 겪어야하는)과목이었다. 일주일에 딱 서너 시간 정도만 투자한다면 충분히 시험기간에 여유있게 공부할만한 시간이 주어질정도로 테마에 숙달되니 꾸준한 복습 + 2~3주정도의 공부기간을 가지고 공부한다면 수월히 합격할 수 있다.

너무 어렵다는 말들에 너무 귀 기울이지 말고, 연습하고 또 연습하도록 하자. 생각보다 별 거 없는 과목이다.

3.3 Rechnernetze und verteilte Systeme (A.K.A. GRNVS)

네트워크 이론! 2학년 2학기 과목들 중 가장 재미있게 공부했던 과목이며, 2학년 2학기의 통과만 해도 감지덕지한 과목들 중 고득점을 노려 어느정도 학점을 유지할 수 있게 만들어주는 고마운 과목이다.

네트워크 이론에서는 OSI 7 Layer 계층에 대해 공부하며, 아래에서부터 위로 (Layer 1~)올라가며 우리가 매일 이용하는 통신이 어떻게 이루어지는지 배운다.

사실상 Layer 1을 제외하면 정말 새롭게 배우는 것은 많지 않은 과목이다.

각 계층을 대표하는 프로토콜 정도가 (Layer 3의 경우 그 유명한 IPv4, IPv6 프로토콜 등) 가장 메인이 되는 내용인데, 지금까지 TUM의 수업을 착실히 들어온 학생이라면 이미 이해하는데 필요한 배경지식을 모조리 갖추고 있기 때문에 그냥 개념정도만 이해하고 문제를 풀어보면 바로 넘어갈 수 있는 정도이다.

그럼에도 불구하고 정말 간략하게 각 계층에 대해 설명해보자면:

  1. Layer 1 : 기계단에서 전자공학적으로 어떻게 데이터가 전파로 변환되는지 (푸리에 변환이나 Modularization, Line Code 등…)
  2. Layer 2 : Local Network에서 케이블로 연결된 상대 파트너간의 통신법 (LAN Protocol)
  3. Layer 3 : Global Network에서 Host to Host의 통신을 정의하는 IP Protocol
  4. Layer 4 : Global Network에서 Host to Host의 통신을 더욱 효율적(Multiplex)으로 활용하기 위한 Port의 도입과 이에 따른 TCP UDP Protocol의 정의, 또한 이에 따른 Router의 NAT 관리
  5. Layer 5~7 : Obere Schicht, 즉, 사용자의 편의의 맞게 High Level에서 Application의 데이터 인코딩이나(예: URL Encoding) 압축, Session 관리등을 정의하는 부분. (http 등 우리가 아는 프로토콜이 여기 속한다.)

정도로 요약할 수 있고, 이 계층에 맞는 프로토콜들과 역할, 보안성이나 효율성 따위에 관해 배운다고 보면 된다.

네트워크 패킷들이 실제로 어떻게 구성되어있느냐 하는 부분인데, Wireshark등을 이용해서 네트워크 패킷을 직접 뜯어보고 중첩되는 (가장 겉의 LAN프로토콜 Header부터 Layer 7의 프로토콜까지, 마트료시카를 생각하면 편하다) 헤더들을 살펴보며 이 패킷은 어떠한 역할을 수행하는 지 파악하는 게 가장 중점이 되며, 시험 문제에서도 가장 큰 부분을 차지한다.

GRNVS는 타 과목들처럼 많은 공부가 필요하지 않지만, 꼭 추천하고 싶은 부분이 있다.

GRNVS의 코딩 문제들을 꼭 풀도록 하자!

GRNVS는 여타 TUM 과목들과 비슷하게 코딩 문제가 존재하지만, gitlab을 통해서 제출해야 하며 한 번 제출하면 결과가 나오기까지 최소 12분은 기다려야 한다. 로컬로 디버깅이 불가능한 문제들이기 때문에 한 번 디버깅을 위해서 12분을 기다려야한다는 쌍팔년도식 인내심이 필요하다. 또한 디버깅이 거의 불가능할정도로 장황하게(당연히 docker pipepine이니..) 메세지들이 출력되는 문제가 있어서 문제를 제출하고 컴파일 될 때 까지 기다려도 뭐가 틀렸다는건지 도통 이해할 수 없는, 문제의 난이도에 비해, 또한 보상에 비해 지나치게 짜증나는 반복작업이 요구된다.

그리고 애초에 THEO와 DWT로 바쁜 학기를 보내고 있기 때문에, 적당히 풀고 다른 방법으로 적당히 보너스 점수를(GRNVS의 보너스 시스템은 조금 복잡하다. 자잘히 할 게 많은데 매년 변하기에 설명은 생략하도록 하겠다) 받은 다음 시험을 응시하자는 전략을 세우는 친구들이 많다.

하지만 과감히 말하건데, 이 코딩 문제들이 시험에 극도로 도움이 된다! 기본적으로 쓸데없는 부분에서 잡고 늘어지는 문제들이고, 상기 기술한 LAN, IP 프로토콜 패킷등을 내가 직접 비트단위로 Flag를 컨트롤해가며 전송하고 받기를 반복해야하는 문제들이기 때문에 프로토콜을 보낼 때 패킷들의 세부사항에 대해서(언제 1이고 언제 0인지, 어떤 비트가 뭘 위해 존재하는지) 이골이 나도록 쳐다보게 된다.

위에서 설명했듯, GRNVS 시험의 메인 테마는 이러한 프로토콜의 패킷을 뜯어보고 이해하며, 필요한 곳에 필요한 Flag를 세우는것이다. 이런 문제들이 짜증나고 귀찮더라도 진득하게 앉아서 풀어나가다보면 어느새 시험 문제를 풀 때도 지루해서 하품을 하고있는 자신을 발견할 수 있을 것이다.

그리고 보상 또한 적절하기 때문에, 적어도 5개의 프로그래밍 문제중 4개는 풀어보는 것을 추천한다. 마지막 문제의 경우 시험기간 도중에 풀어야 하기 때문에, 굳이 완벽하게 푸는 것을 추천하지는 않겠다. 하지만 그 전의 4개의 문제를 풀었다면 아마 높은 확률로 가장 중요한 부분을 (14계층 프로토콜. 57계층은 시험에서 상대적으로 비중이 적다)커버하고 충분한 보너스 점수 또한 확보했을 것이기 때문에 그 역할을 다했다고 할 수 있겠다.

GRNVS는 아주 흥미롭고, 졸업 후에도 (적어도 나의 경우에는)충분히 제 역할을 다할 수 있는 지식을 얻어갈 수 있는 과목이라고 평가한다. Lehrstuhl에서 전년도 문제들을 친절히 제공해주기 때문에, 처음에 서술했듯 충분히 공부한다면 (DWT와 병행해서 하는것도 좋은 방법이다) 통과가 문제가 아닌, 보너스 점수와 더불어 고득점을 노릴 수 있는 과목이다. 모두 노력해서 2학년 2학기의 평균을 조금이나마 올려보도록 하자!

4. 글을 마치며

결국 시리즈의 마무리를 완전히 짓지는 못했네요. 쓰면서 한 편 정도를 더 이어가야겠다고 생각이 들긴 했지만, 최대한 줄이도록 노력해봤는데도 어쩔 수 없나봅니다.

그만큼 전달하고 싶은게 많은 학기이고, 가장 최근에 보낸 학기이기에 아직까지 기억이 생생하게 떠오르거든요.

방학이 빠르게 지나가고 있는 한 편, 날씨가 정말 무더워진 요즘입니다! 다들 더위 조심하시고, 책상 앞에서 편안히 코딩하는 오늘이 되셨으면 좋겠습니다! :)


Source

  • Me!