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

0. 방문해주신 분들께 & 글을 시작하며

드디어 1학년에 관한 글 두편이 끝마침을 맺었네요. “과연 내가 말해줄게 있을까?” 라는 생각을 하며 글을 쓰기 시작했는데, 저 스스로도 놀랄 만큼 떠오르는 기억도, 하고싶은 말도 많았던 것 같습니다. 누군가 이 글을 볼 진 모르겠지만, 혹시라도 1학년을 성공적으로 마치셨다면,

축하합니다! 정말 고생하셨어요. Wir haben es aber verdient!

오늘은 2학년 1학기에 대해 알아보기 전에, 통과한 분들께는 공감할 수 있을만한 감상을, 앞으로 헤쳐나가야 할 분들께는 각오를 드릴 수 있는 이야기를 해 보려고 합니다.

뮌헨공대에서의 첫 1년은, 특히 한국인으로서는(독일에서 학교를 나온 저 스스로조차도) 굉장히 신선한, 나쁘게 말하면 당황스러운 경험이었습니다.

특히 공부에는 자신이 있던 저 스스로였기에, 어떠한 개념이나 문제에 대해서 “아무리 노력해도 이해가 가지 않을 것만 같은” 벽을 몇 번이고 마주해야 했었던 경험은 도저히 잊을 수 없을 것 같습니다. (물론 이런 경험은 2학년에서도 몇 번이고 이어집니다)

사실 지금 할 말이 제가 그런 압박감과 싸워나가는 도중 누군가에게 가장 듣고싶은 말일 수도 있을텐데요, 1학년 1학기 글에서는 실제로 긴장할 필요가 있는 첫 학기라고 생각했기에 적지 않았습니다만, 1학년을 통과한 여러분들께라면 말할 수 있을 것 같네요. 어쩌면 이미 알고 계실 지도 모르겠습니다.

공부를 충분히 했다면, 시험에 모르는 문제가 나오는 경우는 결코 없습니다! 걱정하지 마세요.

아무리 공부해도 모르는 문제가 나올 수 있다는, 이 테마를 완벽하게 이해하는것은 불가능하다는 막막함은 1학년 내내, 어쩌면 2학년까지도 제 발목을 잡고 제게 공포심을 심어줬었습니다.

언젠가는 내가 지금 공부하는 이 방법이 먹히지 않는 날이 오지 않을까? 혹은,

언젠가는 내 이해력이 한계에 부딫혀서 충분히 공부함에도 불구하고 시험 문제들을 해결할 수 없는 상황이 오지 않을까? 따위의 생각입니다.

이는 주위의 선배들을 보면서 한 층 강해집니다. 충분히 똑똑한 선배들이 2년이고 3년이고 한 두 과목에 묶여 졸업하지 못하는걸 보기 때문이죠. 하지만 자신있게 기우라고 말할 수 있습니다.

저는 특별히 똑똑해서 TUM을 헤쳐나간게 아니며, 그렇다고 특별히 남들보다 X배 노력하였기에 시험들을 통과한 것도 아닙니다.

TUM에서의 성공 여부는 “오로지” Ausdauer, 즉 꾸준함에서 기인한다고도 말할 수 있을 것 같습니다. 물론 그러한 꾸준함을 가지려면 컴공에 대한 흥미가 필요하겠죠. 만약 그러한 흥미가 없다면 애초에 컴공을 시작하는 걸 추천하지 않습니다.

시험기간이 아닌 평소 학기중, 하루에 딱 3시간만 잡고 매일 공부해보세요

올바르게 집중하여 공부하고, 친구나 Tutor등의 주변 상황을 적극 활용한다면, 합격 못 할 과목이 없다고 자신있게 얘기할 수 있습니다. (저는 2시간만 했었습니다. 한 시간 더 투자해서 저보다 좋은 성적 가져가세요! :D)

1학년을 해낸 여러분들은, 그게 아니라면 입학을 준비하는 여러분들이라도, 충분히 해내실 수 있을겁니다. (물론 시험기간에 좀 더 열심히 하셔야해요!)

그럼 오늘의 잡설은 여기까지, 본격적으로 2학년 1학기에 대해 알아보겠습니다. 평소처럼 말투는 딱딱해지니 유의해주세요!

1. 명심해야 할 것

2학년 1학기는 어쩌면 내게 있어서 가장 쉬운 학기였다. 정보보안등의 자신 있는 과목들이(공부를 하지 않더라도 내 지식만으로 통과할 수 있는) 라인업 되어있었기에 크게 부담감을 가지지 않고 학기를 시작했다. 하지만 2학년 1학기는 Andwendungsfach, 즉, 부전공을 정해야하는 시기이기도 하다.

따라서 오늘은 어떠한 부전공들이 있고, 특징은 무엇인지 알아보는 시간을 가지면 좋을 것 같다. TUM Informatik에서 제안하는 “공식적인” 부전공들의 목록은 다음과 같다:

  • BWL (경영학, 경제학) : 난이도 하
  • Elektrotechnik (전자공학) : 난이도 최상
  • Maschinenwesen (기계공학) : 난이도 상
  • Mathematik (수학) : 난이도 중
  • Medizin (의학) : 난이도 하

의학이 부전공으로 있는게 조금 의아할 수 있는데, 당연히 심도있는 의학을 배우는 건 아니고 바이러스나 단백질 등 의료공학에 접목할 수 있는 과목을 중점적으로 편성되어있다고 들었다.

가장 쉬운 과목은 의학과 경영학이다. 경영학이야 암기과목이 대부분이고, 포함되어있는 경제학 과목의 수학도 공과대의 수학시험에 비하면 장난 수준이다. 의학 또한 보기와는 다르게 거의 시험문제를 떠먹여준다고 들었다. (내 친구 한 명은 시험 전날 6시간 공부하고 만점을 맞았다고 했다)

내가 고른 과목은 경영학이었다. 경영학을 원래부터 공부하고 싶기도 했고, 솔직히 부전공에 엄청난 시간을 투자하고 싶은 마음도 들지 않았다. 부전공으로서의 경영학에 관한 후기는 따로 블로그에 포스팅해보도록 하겠다. 하지만 결론적으로 말하자면 경영학은

  • 현재 하고있는 회사일과 맞물려 새로운 인사이트를 제공했으며
  • 쉬운 난이도로 다른 학업에 집중할 수 있게 만들어준 좋은 선택이었다.

반면에 수학, 전자공학, 기계공학은 당연히 어렵다. 특히 전자공학같은 경우는 정말 흥미가 있거나 그 쪽으로 명확하게 자신의 진로를 설계할 수 있는 학생이 아니라면 추천하지 못할 것 같다.

친구들 중 소수가 전자공학과 기계공학을 선택했는데, 그 공부를 하느라 오히려 컴공의 공부량을 채우지 못해 정작 중요 과목에서 낙제하는 경우를 목격했기 때문이다. 실제로 과목 자체가 클래식 전공 수준으로 편성되어있다고 들었다. 만약 순수 프로그래머, 순수 컴공지식만이 활용되는 직업을 목표로 하고 있다면 꼭 다시한번 생각해보고 결정하자!

수학은 어렵긴 하지만 우리가 일반적으로 배우는 컴공수학+@정도의 난이도이기 때문에 실제로 겹치는 부분이 많아 생각보다는 할 만 하다고 들었다. 당연히 경영학과 의학의 난이도보다는 어렵다.

1.1 Anwendungsfach, 중요한가요?

누군가가 나에게 대놓고 묻는다면, 대답은 “글쎄?” 이다.

수학의 경우는 당연히 컴공수학의 심화적인 이해를 도우며 여러모로의 시너지가 존재한다. 나도 수학을 골랐으면 하는 미련(물론 그래도 경영학을 골랐을 것 같다!)이 조금은 남는다. 하지만 적어도 지금까지 내 주위에 부전공을 활용하여 무언가를 진행한 경우는 보지 못했다.

물론 의학공학같은 경우 Medizin을 부전공으로 했다면 추후 연구나 학업, 논문에 도움이 충분히 될 수 있을 것이고 전자기계공학 또한 마찬가지일 것이다. 하지만 내 친구들도 아직 석사를 시작한 사람들이 없고 진지하게 우리가 배우는 부전공들의 수준이 기술 접목에 관한 인사이트를 주는 수준 이상으로 전문성이 있다고 말할 수 있을까? 는 조금 더 고민해봐야 하는 문제라고 생각한다.

하지만 자신이 흥미가 가는, 혹은 추후에 컴공과 접목시켜가고싶은 분야가 있다면 과감히 난이도를 무시하고 그 과목을 선택하길 바란다. 절대 후회하지 않을 것이고 재미 또한 충분히 얻을 수 있다고 생각한다. 물론 공부량은 조금 늘어날 수 있겠지만 다른 과목을 고른다고 졸업을 하지 못하는 대참사가 발생하는 걸 본 적 또한 없다.

반대로, 뭘 할지 모르겠다면?

그냥 경영학을 하는게 정신건강에 이롭다.

경영학 자체로도 흥미있는 이야기들을 많이 들을 수 있고, 난이도도 적절하다. 시험공부가 조금 지루하긴 하지만 난 개인적으로 추천한다!

그럼 지금부터는 대망의 2학년 1학기 필수과목들에 대해서 이야기해보자.

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

2학년 1학기는 다음과 같은 과목들로 이루어지며, 여기에 일반적으로 부전공에서 1~2과목정도를 추가로 수강한다.

  • Analysis (미적분학, 낙제율: 40~50%)
  • Grundlagen der Datenbanksysteme (데이터베이스 기초, 낙제율: 30~40%)
  • IT Sicherheit 1 (정보보안 1, 낙제율 45~50%)
  • Grundlagen der Betriebsysteme (운영체제 기초, 낙제율 50~55%)

대부분 무난한 낙제율을 보이는 과목들이고, 점수 가산점을 꽤나 많이 주기 때문에 조금은 좋은 학점을 노려볼 수 있는 학기이다. 나의 경우에는 2학년 1학기때 다른 학기에 비해서 공부에 투자를 조금 적게 했는데도 불구하고 정말 무난히 통과할 수 있었다. 그럼 각 과목들에 대해서 조금 자세히 알아보도록 하겠다.

2.1 Analysis

내 스스로는 수학의 꽃이라고 생각하는 미적분학이다! 무슨 말이 필요할까, 고등학교 때 배운 미적분학에서 모든것을 엄밀히 정의하며, 증명 문제 또한 많이 나온다. 이 부분은 선형대수학 때와 마찬가지로 정말로 많은 부분이 한국 대학의 교육과정과 일치한다.

유의해야 할 것은, 미적분학은 절대로 미분과 적분하는법을 배우는 과목이 아니라는점이다.

과목에서도 대체로 연속성이나 함수, 수열의 특성에 대해서 공부하며 이런 특성들을 증명하기 위한 도구로 미분과 적분이 사용된다. 따라서 당연히 미분과 적분법들을 배우고, 한국에서 고3과정을 끝내고 왔다면 장점이 많은것도 사실이지만 너무 방심하기보단 1.0을 목표로 공부해보도록 하자.

이 과목에도 역시나 숙제가 존재하며, 3인의 팀으로 문제를 풀어 일요일 밤에 제출한다. 일정 수준 이상으로 문제를 풀었다면 그 주의 보너스를 받을 수 있으며, 총 12주중 9주 이상에서 보너스를 받았다면 최종 성적에 가산점이 붙는다.

대체적으로 무난한 수학 과목(물론 미적분이 정말 안 맞는 사람이라면 조금 많이 어려울 수 있다. 하지만 타 수학 과목보다는 쉽다는게 내 의견이다.)단지 시험이 조금 어렵게 나올 때도 있는데, Analysis는 대체로 문제들이 그 해에 출제되는 숙제&과제 문제들과 비슷한 경향이 있다. 따라서 숙제로 나오는 문제들과 전년도에 출제된 문제들을 (3회차정도) 답안을 외우다시피 달달 공부하는 방법이 내게는 가장 효율적이었다.

문제들이 비슷하게 출제된다는건 크나큰 장점이며, 이를 활용하면 충분히 고득점을 노려볼 수 있기 때문에 (나의 경우에는 1을 받았다) 2학년 1학기 과목중에서는 가장 시간을 많이 투자해 볼 가치가 있는 과목이다.

2.2 Grundlagen der Datenbanksysteme (A.K.A. GDB)

가장 쉬운 컴공 과목이라고도 말할 수 있을만큼 쉬운 난이도를 자랑하는 과목이다. 배우는 건 크게 4가지정도로:

  • SQL의 전신인 relational algebra
  • 다양한 SQL 구문, 재귀구문
  • 데이터베이스의 다양한 디자인과 목적 commit, rollback 매커니즘
  • Transaction Mechanism, 즉 뱅킹 시스템

으로 요약 할 수 있겠다. 여기서 가장 어려운 부분은 첫 번째 파트인 relational algebra인데, 특이한 기호가 정말 많이 나오고 Tupelkalkuel같은 듣도보도못한 집합론적인 쿼리도 배운다. 이런저런 증명도 간혹가다가 보이기 때문에 꽤 추상적이라 머리가 아플 수 있는데, 시험에서의 차지하는 비율은 굉장히 적기 때문에 크게 걱정하지 않아도 좋다.

결국 이 과목에서의 중심은 SQL이다. 물론 무조건 SQL 구문을 쓴다기보다는 relational algebra같은 경우에도 결국 큰 관점에서는 데이터베이스에 query를 보내는것과 일치하기에

데이터베이스와 소통하는 방법을 익히는게 중요하다

책은 Kemper교수님의 저서를 추천하는데, 담당 교수님이시지만 정말 유명하신 교수님이시고 애초에 그 분 책에서 대부분의 문제가 (변형되어서) 나온다. 도서관에서는 이미 학기 초에 빌려가는 애들이 수두룩하기때문에 서두르거나, 만약에 다 대출되었다면 비싼 책도 아니니 한 권 사서 연습하도록 하자. 테마별로 문제가 꽤 많이 준비되어있기 때문에, 그 책에 나오는 문제들만 다 풀어도 충분히 고득점을 노릴 수 있다.

다만, 재귀 쿼리 (rekursive Anfrage)같은 경우에는 조금 복잡하기 때문에 다른 테마보다 조금 더 연습하는 걸 추천한다. 이 문제가 실제로도 배점이 가장 크다.

이 과목은 특이하게 Tutorium의 참석이 의무화된다. Tutorium에 모두 참석하고, 총 2번이상 숙제를 발표하면 가산점을 받는다. 슬슬 2학년 1학기쯤 되면 모든 Tutorium에 가지 않아도 된다고 생각할 때인데, Tutorium은 무조건 가는게 이득이니 Notenbonus를 위해서라도 꼭 방문하기를 추천한다!

2.3 IT Sicherheit (A.K.A. ITSec)

내가 가장 기대했던 과목이고, 가장 실망했던 과목이기도 하다. 스스로가 현재 관련업계 인력으로 일하고 있기도 하고, 이 블로그를 보면 알겠지만 취미도 해킹, 업무도 해킹관련일을 하고 있는 나이기에 얻어갈 게 많은 과목이라고 생각했다.

결론적으로 말하자면: 헛다리 짚었다.

뭔가 대단한 테크닉이나 이론을 배울 것이라는 기대와는 달리, 대부분의 수업이 해싱, 암호학, 방화벽 구성, Kerberos나 기타 프로토콜, TLS 등 CIA (Confidentiality, Integrity, and Availability)를 확립하는데 필요한 기술등에 대해 배운다. 이들이 전혀 쓸모없는 테마라고는 말할 수 없지만 보통 기대하게 되는 것 과는 조금 다른, 지루한 수업들이 뒤를 잇는다.

물론 SQL Injection이나 XSS등 정말 기초적인 해킹 기법에 관해서도 배우지만, 정말 기초적인 것 이상은 배우지 않는다. 해킹은 역시 혼자 공부해야하는 학문이 맞다. TUM에서의 정보보안은 나도 곧 세부전공으로 골라 심도있게 공부할 계획이기에 나중에 기회가 된다면 그에 관한 후기를 써보도록 하겠다.

해킹에 관한 공부법이 궁금하다면(나도 초심자에 불과하지만) 이 블로그에 다른 글들을 참조하도록 하자!

재밌는 점은, 학기중에 숙제가 해킹 문제로 나온다는 점이다. 사실 해킹 문제라기보다는 CTF (Capture the Flag) 문제들에 가깝다. 숨겨져있는 Flag를 찾아서 제출하면 된다. 2인조로 팀을 짜며 보통 그 주에 배운 프로토콜이나 기법을 응용한 문제가 나오는데, 몇몇 암호학 문제들을 제외하고는 정말 쉬웠다. 대놓고 어떤 기법을 쓰면 되는지 알려주고 Tutorium에서 이미 연습을 하기 때문에 조금 응용해서 코드를 쓰면 금방 합격된다.

오히려 “이렇게 쉽게 풀릴 리가 없는데” 하고 여러가지 다른 어려운 방법들로 시도하다가 더 오래걸렸던 적이, 친구의 방법을 보며 어? 진짜 저거만으로 풀리는 문제라고? 싶었던 적이 더 많았던 것 같다.

총 22점을 얻을 수 있고 일정 이상으로 문제를 풀면 0.3점의 가산점이 붙는다고 알고있다.

GRA처럼 랭킹이 존재해서 문제를 빨리 풀고 많이 풀수록 높은 등수에 랭크된다. 근데 별 의미는 없다고 보면 된다. 상이 있는것도 아니고, 문제가 오픈되는 시간이 랜덤이기 때문에 하루종일 컴퓨터 앞에 앉아있는 것이 아닌 이상 랭킹은 신경쓰지 않는 편이 편하다.

나는 당연히 모든 문제를 풀었고, 꽤 높은 랭킹을 (700팀중 10등 내외였던걸로 기억한다) 얻었지만 당연히 평소에 하는 모의해킹에 응용할 수 있는건 하나도 없기도 했고 애초에 분야도 난이도도 너무 다른 문제들이어서 금방 흥미를 잃었다.

시험 자체도 그렇게 어렵지 않다. TLS프로토콜 문제와 MD5등의 암호학 해싱 문제가 배점이 가장 크니, 그걸 위주로 공부하는 것을 추천한다. 나 같은 경우는 애초에 그쪽 지식이 있기에 거의 공부하지 않고도 정말 수월하게 통과했다.

하지만 좋은 점수를 받은 게 아니라 지금와서 생각해보면 지루해도 충분히 공부할 걸…이라는 후회가 가장 많이 남는 과목이다. 나중에 다른 ITSec계열의 과목에서는 열심히 해서 교수님께 좋은 인상을 남겨야겠다.

2.4 Grundlagen der Betriebssysteme (A.K.A. GBS)

가장 기대를 적게 하고 들어갔지만, 가장 많은것을 배우고 (물론 성적이 아주 잘 나왔다는 말은 아니다!) 나온 과목이다. 운영체제의 거의 대부분의 것을 배우는데, 대표적으로는:

  • Linux의 기초 커맨드
  • 스케쥴링
  • 내부 저장장치의 구성
  • Interprocess communication과 파이프라이닝
  • Virtualization

등을 배우는 것으로 기억한다. 실제로 해킹에서 저런 부분을 모르는게 내 약점으로 다가왔었기 때문에 배우면서 많은 깨달음을 얻을 수 있었다.

물론 그와는 별개로 사실상 2학년 1학기에서 가장 공부할 것이 많은 과목이기도 하다. (물론 나는 그다지 많이 하지 못했다! 글을 읽고있다면 나보다는 꾸준히 시간을 투자하길 바란다)

특히 Virutalization같은 경우는 거의 학기말에 배우기도 하고, 교수님이 설렁설렁 말씀하시고 끝내버리셔서 별로 중요하지 않구나 생각했었는데 우리때의 (2023 ET) 문제가 거의 50%가 해당 섹션에서 출제되는, 사상 초유의 낙제율 60%를 넘기는 대참사가 일어나기도 했다.

컴공 과목중에서는 암기의 비중이 가장 높은 과목이기도 한데, 따라서 학기 내내 공부하는것과는 별개로 시험기간에 집중해서 공부해야 할 과목이다. 위에 설명했듯 Uebungsleitung의 기분에 따라 출제양상이 크게 변하기도 한다는 것을 배웠으니 어떤 테마든 가리지 않고, Folien 스킵하지 않고 공부하는 것이 좋다. 차라리 암기면 FPV보단 낫지 않겠는가?

GBS도 숙제가 존재하는데, GRA와 PGDP사이 어딘가쯤의 문제들이 출제된다. 우리는 C언어로 풀이를 작성해 Artemis에 제출했었지만 시스템이 조금 바뀐다고 들어서 내년부터 어떻게 진행될지는 지켜봐야 할 것 같다.

흥미로운 과목이고, 수많은 컨셉들을 배운다. 실제로 어디선가 본 적 있는 단어들과 개념들이 많이 나오기때문에 수업을 들으면서 즐거운 과목이다. 물론 교수님은 조금 지루하시지만… 많은 걸 얻어갈 수 있는 과목이라고 자신있게 말할 수 있다!

3. 글을 마치며

이로서 2학년 1학기에 모든 과목을 알아봤습니다.

또다시 분량조절 실패입니다! 항상 할 말이 어떻게 이렇게 많아지는지… 다음 글은 더욱 길어질 것 같아 고민이네요. 다음 글은 대망의 마지막(적어도 학기의 진행에 관해서는)글이 되겠습니다! 2학년 1학기도 건승하시기를 바라며, 곧 다음 글, 지옥의 2학년 2학기로 돌아오도록 하겠습니다.

Source

  • Me!