본문 바로가기
학교

델프트 공대 (TU Delft) 컴퓨터공학과 후기

by Hongwoo 2025. 3. 25.
반응형

이 글에서는 내가 2019년부터 2024년까지 다녔던 델프트 공과대학교 (TU Delft) 컴퓨터공학과에 대해서 한번 써보려 한다. 델프트에 처음 입학을 준비할 당시에는 이런 정보가 많이 없어서 정보를 찾는데 어려움이 좀 있었기에 만약에 델프트 공대에서 유학을 준비할 때 유용한 정보가 되기를 바란다.

 

이 글에서는 다음과 같은 내용을 다뤄볼 예정이다.

1. 각 과목 후기 정리 (아마 주관적인 난이도와 함께)

2. FAQ

 

각 과목 후기 정리

델프트 공대에서 배우는 과목들은 다음과 같다. 

 

1학년 1학기 

Introduction to Programming  (난이도 ★ ☆)

이 과목에서는 객체지향프로그래밍 기본에 대해 배운다 (Object Oriented Programming). 아주 기본적인 class, method, inheritance, polymorphism, 등등 기본적인 이론에 대해 배운다. 배우는 언어는 자바 Java이다. 이 과목의 과제는 1주부터 6주차까지는 Weblab이라는 플랫폼에서 기본적인 코딩 (자료구조, 함수 등등)을 하고 나머지 주차에서는 입력을 받아서 간단한 프로그램을 만드는것을 한다. 이 과목 기말고사에서 이런 프로그램을 만드는게 시험이기 때문에 꼭 시간안에 프로그램을 작성하는 연습을 하길 바란다.

 

 

Reasoning & Logic (난이도     ☆)

이 과목은 논리적 사고에 대해 배운다. 이 과목은 정확하게 기억이 나지는 않지만 그렇게 어려웠던 과목은 아니었던걸로 기억한다. 만약에 예습을 하고 싶다면 이 링크에 가서 교과서를 한번 읽어보기를 추천한다: 링크

 

 

Computer Organisation (난이도    ☆)

이 과목에서는 컴퓨터 하드웨어에 대해 배운다. 예를 들어서, CPU, RAM 등은 왜 필요한지 등등에 대해 배운다. 내가 수업을 들을 당시에는 설명을 디테일하게 해주지를 않았었는데 내용들은 좀 어려웠던걸로 기억한다. 그리고 이 과목에서는 보너스 과제가 많았다: 문제 풀고 다른 학생들한테 피드백을 주면 보너스 점수를 받는다던지, 추가 코딩 과제를 한다던지 등등. 과제에서는 문제 풀기, 어셈블리어 (어려웠다), 그리고 Brainfuck 챌린지가 있었다.

 

 

Calculus (난이도    ☆)

미적분이다. 아마 한국에서 고등 수학을 했다면 그렇게 어렵지는 않다. 아마 첫 5주까지의 내용은 고등과정 심화 내용의 난이도였던걸로 기억한다.

 

 

CSE Project (난이도     ☆)

첫 코딩 프로젝트다. 자바를 이용해서 CRUD (Create, Read, Update, Delete) 기능을 하는 프로그램을 4-5명이 한 팀에서 개발을 하는 프로젝트이다. 팀은 랜덤으로 배정받고 조교 한명도 배정을 받아서 매주 미팅을 하면서 진전 상태를 체크하고 질문같은게 있으면 해도 된다. 이 과목을 통과하지 못 하면 3년안에 졸업하는게 불가능해지기 때문에 꼭 통과하는게 좋다. 

 

 

Web- & Database Technology (난이도     ☆)

이 과목에선 웹과 데이터베이스에 대해 배운다. 첫 5주는 웹에 대해 배우는데, html, javascript, css 등에 대해 배우고 과제중에 하나가 게임을 만드는였던걸로 기억한다. 그리고 이후 5주에서는 데이터베이스에 대해 배운다. Relational Database (관계형 데이터베이스인) SQL, NoSQL, 그래프형 데이터베이스 등등. 그리고 데이터베이스에서는 필수인 ACID 속성등에 대해서도 배운다. 외울게 많은 과목이지만 컴퓨터공학과에서는 데이터베이스에 대해 잘 아는게 중요하기 때문에 중요한 과목이다.

 

 

1학년 2학기 

Linear Algebra (난이도     ☆)

대선형수학이다. 수학 문제 많이 풀고 하면 어렵지 않다.

 

 

Algorithms and Data Structures (난이도     ☆)

알고리즘과 자료 구조에 대해 배운다. 예를 들어서 스택, 큐, 배열, 리스트, 트리, 그래프 등등. 훗날 취업할 때 코딩테스트에서도 자주 보게 되는 내용이다 보니 잘 하면 되게 유용하다. 하지만 시험이 좀 어려운 편이다. 내가 학생일 당시에는 통과율이 22%였다 (나는 한번에 통과했지만). 이 과목에 집중을 잘 해서 문제를 많이 푸는 것을 추천한다. 그리고 백준 사이트에서 알고리즘 문제를 풀면 확실히 도움이 될 것이다.

 

 

Information and Data Management (난이도     ☆)

솔직히 이 과목에 대해서는 기억이 잘 나지는 않아서 난이도는 별 3개를 매겼지만 그렇게 기억에 안 남는거 보니 엄청 어려웠던거 같지는 않다. 하지만 1학기 2쿼터에 있는 Web and Database Technology의 데이터베이스의 연장선이라고 생각하면 될거 같다. 좀 더 데이터베이스와 데이터를 어떻게 처리하는지에 대해 깊게 배우는 과목이다.

 

 

Probability Theory and Statistics (난이도 ★    ☆)

확률과 통계. 수학 문제 많이 풀면 그렇게 어렵지는 않았던걸로 기억한다.

 

 

Software Quality and Testing (난이도 ★    ☆)

프로그램을 테스팅하는 방법들을 배운다. Unit test, Integration test, Mock test 등등. 이 과목은 실제 회사에서 일할 때도 테스팅하는 방법들은 필수이기 때문에 열심히 배우면 무조건 도움이 된다. 과목 난이도는 그렇게 어렵지는 않은 편이고 암기할 것도 그렇게 많지는 않다.

 

 

Computer Networks (난이도     ☆)

네트워크에 대해 배운다. 정확히는 OSI Model - 7 Layers에 대해 배운다. 외울게 좀 많은 편인데 암기만 잘 하고 이해를 하면 엄청 어려운 편은 아니었던걸로 기억한다.

 

 

 

2학년 1학기 

Software Engineering Methods (난이도 ★    ☆)

이 과목에서는 개발할 때 쓰는 실용적인 것들을 많이 배운다. 예를 들어서 실무에서 일하는 방식인 Agile methodology, 디자인 패턴 등등. 이 과제에서도 4-5명으로 한 팀을 이뤄서 microservice를 구현하는 과제가 있고 그리고 발표에 대해 배우는 Oral lesson도 필수로 들어야 한다. 난이도는 그렇게 어렵지 않지만 시간이 많이 소요된다.

 

 

Machine Learning (난이도     ☆)

컴퓨터 공학과에서 꽤 재밌는 과목 중 하나인 머신 러닝이다. 머신 러닝 기초에 대해 배운다. Supervised learning, Unsupervised learning에 등에 대해 배운다. 이 과목에서는 파이썬을 쓰는데 파이썬을 해본적이 없다면 예습하면 도움이 많이 될것이다.

 

 

Big Data Processing (난이도     ☆)

2학년 때는 3개의 트랙 중 하나를 고를 수 있다. Multimedia (이미지, 시그널 프로세싱), System (OS 등), 그리고 Data 트랙이 있다. 나는 Data 트랙을 배웠었다. 이 과목에서는 방대한 양의 데이터를 어떻게 효율적으로 처리할 수 있는지에 대해 배운다. 이 과목에서 쓰는 프로그램 언어는 Scala다. 과제가 좀 어려웠던걸로 기억한다 (물론 지금은 ChatGPT를 쓰면 그렇게 어렵지 않게 할 수 있을거 같다)

 

 

Algorithm Design (난이도     ☆)

1학년 2쿼터에 있었던 Algorithm and Data Structure의 연장선. 이 과목에서는 그리디 알고리즘, 분할정복, 다이나믹 프로그래밍, 그리고 네트워크 유량에 대해 배운다. 이 과목에서는 교과서 읽는게 중요하다 (교과서에 나오는것중 하나가 아마 시험 문제 중 하나가 될 확률이 높다). 코딩 시험은 주어진 과제만 다 하면 충분히 할 만하다. 이 과목 역시 백준에서 문제를 많이 풀면 무조건 도움이 된다.

 

 

Computer Graphics (난이도     ☆)

컴퓨터 그래픽, 즉 흔히 말하는 CG 기본에 대해 배운다. 과제 점수 비중이 좀 큰 편이었던걸로 기억하고 시험은 개인적으로 어려웠다. 쓰는 프로그래밍 언어는 C++이다.

 

 

Data Mining (난이도     ☆)

이 과목에서는 데이터에서 어떻게 하면 우리가 필요로 하는 데이터를 뽑아 쓸 수 있는지에 대해 배운다. 우리가 일상 생활에서 많이 쓰는 Anomaly Detection (많은 데이터중에 아웃라이어를 어떻게 판별하는지), Recommendation System (넷플릭스 처럼 유저한테 추천을 하는 프로그램) 등에 대해서도 배운다. 그리고 이 토픽들에 관해 Kaggle 챌린지가 있는데 상당히 재미있는 편이다 (나는 Anomaly Detection 챌린지에서 2등을 했었다). 참고로 이 과목은 암기량이 엄청 많아서 학생들 사이에서는 악명이 자자했다.

 

 

2학년 2학기

Automata, Computability and Complexity (난이도     ☆)

이 과목에서는 컴퓨터가 어떤 문제들을 풀 수 있는지에 대해 배운다. 기억나는 것은 Markov Model, Regular expressions, Context free grammar, NP Hard, 등등에 대해 배운다. 코딩은 없고 이론 수업인데 많은 학생들이 어려워하는 과목중에 하나이다. 다만, 교과서에 나와있는 문제들도 풀고 매주 과제를 하면 충분히 한번에 통과할 수 있다.

 

 

Concepts of Programming Languages (난이도     )

컴파일러가 어떻게 쓰여졌는지에 대해서 배운다. 쓰는 언어는 Rust. 개인적으로는 모든 과목중에 가장 어려웠던 과목이다. 하지만 한번만 이해하면 코딩 문제들도 충분히 풀만하다. 이 과목은 이해만 하면 무난히 통과할 수 있기 때문에 이해하는것에 집중하는게 좋겠다.

 

 

Computational Intelligence (난이도 ★    ☆)

머신 러닝의 연장선 과목이다. AI랑 유사한 과목. 이 과목에서는 Artificial Neural Network, Genetic Mutation, Reinforcement Learning에 관해 배운다. 이 과목은 배우는 양도 많지 않고 과제 점수 비중이 크다. 이 과목 조교를 했었는데 개인적인 팁은 과제를 하면서 TA들한테 조언을 들으면서 하면 고득점도 할 수 있다.

 

 

Software Project (난이도 ???)

인턴을 하는 프로젝트다. 5명으로 이루어진 팀을 만들어 회사들한테 직접 제안서를 내면서 소프트웨어 개발자 인턴으로 10주간 일을 하는 프로젝트이다. 나중에 이력서에 인턴 경력을 쓸 수 있기 때문에 많이 경험해보길 바란다.

 

 

3학년 1학기

3학년 1학기는 부전공, 혹은 교환학생을 가는 학기이다. 만약에 한국이 그립다면 KAIST로도 교환학생으로 갈 수 있으니 미리미리 잘 알아보고 하고 싶은걸 미리 알아보는게 좋다.

 

 

3학년 2학기

Elective 과목들: 6개 과목들에서 3과목을 골라서 듣는다. 

1. Functional Programming (자세한 정보는 이 링크에서 찾을 수 있다).


2. Introduction to Quantum Computer Science (퀀텀 컴퓨팅. 난이도는 좀 어렵다고 들었다).


3. Collaborative Artificial Intelligence (난이도 ★    ☆)

(2학년 과목 Computational Intelligence의 연장선. 과제가 좀 많지만 난이도 자체는 그렇게 어렵지는 않다). 


4. Computer Security (난이도 ★    ☆)

보안에 대해 배운다. 암기할게 좀 많은 과목이지만 디도스등 실생활에서 들어본 내용들이 많아 재밌다.


5. Algorithms for NP-Hard problems

2학년 과목 Automata, Computability and Complexity의 연장선. 난이도는 잘 모르겠다.


6. Human Computer Interaction  (난이도 ★    ☆)

이 과목은 어떻게 사람들이 프로그램을 더 사용하기 쉽게 할 수 있는지에 대해 배운다. 리포트 쓸게 좀 많은 대신에 코딩할거는 거의 없다. 디자인 과목에 가깝다.

 

 

Research Project 

논문이다. 10주동안 논문을 쓴다. 매주 수퍼바이저와 미팅이 있고 담당 교수는 2차례정도 만난다. 

 

 

2. FAQ

1. 프로그래밍을 해본적이 없는데 적응할 수 있을지

물론 당연히 코딩 및 프로그래밍을 해본적이 있으면 당연히 좋다. 컴퓨터공학과이기 때문에 거의 모든 과목에서 코딩을 한다. 하지만 1학기 첫 과목 Introduction to Programming에서 처음 배우는 사람들을 위해 기초부터 배운다. 그리고 내가 학교를 다닐 당시 (2019년)에는 튜토리얼이라고 해서 처음 코딩을 공부하는 학생들을 위한 추가 세션들이 있었다. 그래서 만약에 수업을 들었을 때 좀 어렵다 싶으면 이 튜토리얼 세션에 가서 설명도 다시 한번 듣고, 좀 더 난이도가 쉬운 과제들을 하면서 공부하면 좋을거 같다.

 

2. 3년안에 졸업이 가능한지

3년안에 충분히 졸업할 수 있다. 나도 그랬고 내 주변에도 3년안에 졸업한 사람들이 꽤 있었다. 3년안에 졸업을 하기 위해서는 과목들 한번에 통과하는게 중요하니 매주 꾸준히 하는게 중요한거 같다. 그리고 1-2주정도 미루면 공부양이 엄청 쌓이니 꾸준히 하는게 가장 중요한거 같다.

 

3. 집 구하기 등등

보통 1학년 때는 학교를 통해서 구한다 (학비를 내는 순으로 방을 배정받기 때문에 합격이 되고 학비를 빨리 내는걸 추천한다). 그리고 네덜란드에서 학생이 집 구하는건 정말 어렵기 때문에 1학년 때는 꼭 학교를 통해서 구하는걸 추천하고 싶다. 학교를 통해서 구하는 방은 1년 계약인데 (연장이 안 된다) 그 후는 개인이 직접 구해야한다. 보통 방은 room.nl (DUWO), pararius, funda, xior, room plaza 등등에서 구한다. Xior과 Room Plaza는 선착순이니 꾸준히 사이트에 들어가서 확인하면 방을 구할 수 있다.

 

4. 군대 휴학이 가능한지

휴학 가능하다. Studielink에서 2년 동안 un-enrol 하고 다시 enrol 하는게 가능하다 (잠깐 학교를 떠나고 다시 다니는 느낌). 개인적인 생각이지만 군대는 1학년을 마친 후에 가는게 가장 편한거 같다. 안 그러면 군대 갈 시기가 언제가 좋을지에 대해 좀 애매해지는거 같다. 졸업을 하고 가자니 전역 후에 취업이 좀 쉽지 않게 되는거 같고 (비자 문제도 그렇고), 그리고 일을 하다가 가면 또 커리어 갭이 생기는거 같다. 

 

 

만약 추가로 궁금한 점이 있다면 댓글로 남겨주세요!

반응형

댓글