본문 바로가기
학업/UCL

UCL Computer Science Year 1 Module Review

by plzfday 2022. 6. 25.

ENGF0001: Engineering Challenges

난이도: ⭑⭑⭑✩✩

구성

  • Challenge 1: 거의 초반 3~4주를 완전 의미 없게 보내는데, 결국에는 Embedded Processor, IoT, ESP32와 관련해서 프레젠테이션 비디오 녹화해서 업로드하면 된다. 나도 3일 정도 걸려서 영상을 만들었기에 거의 한 달을 소비할 필요 자체가 없었다. 1학기 초반부터 UCL CS의 부실함이 보였던 부분. 거기에 Peer Review이기 때문에 진짜 이상한 애들만 걸리지 않으면 점수도 못해도 80 이상은 받을 수 있는 것 같다.
  • Challenge 2: EEE 애들이랑 같이 팀 프로젝트로 우간다에 Bioreactor를 설치했다고 가정했을 때 reactor controller를 만드는 것이 목표다. 평가는 proposal presentation, demo, final report 정도 였던 것으로 기억한다. Subsystems (heating, stirring, pH)의 센서와 모터들을 아두이노로 잘 작동시키고 센서 정보를 (telemetry라고 부름) 와이파이가 가능한 ESP32에 연결해서 Thingsboard에다가 visualisation까지 하면 되는 것이다. 우리 팀은 EEE 부분 (센서), CS 부분 (연결성)으로 각각 나눠서 작업했는데 사실상 나 혼자 CS 파트를 진행했다고 봐도 된다. CS는 정말 쉬웠던 게 API가 이미 제공된 것이 있어서 우리가 만든 프로토콜대로만 데이터를 주고받으면 성공이기 때문이다. 하지만 EEE는 하드웨어부터가 문제가 많았고 RPM을 측정하는 것도 phototransistor를 통해 들어오는 정보를 RPM으로 변환해야 하는 아주 복잡한 과정이 있었다. 그리고 데모 전에 온도계 자체가 문제라는 것도 발견되고... 심각했다. 이 프로젝트에서 가장 짜증 나는 부분은 EEE가 정말 어렵기 때문에 테스트베드를 계속 사용할 수 있게 해줘야 하는데 일주일에 단 2~3시간만 사용이 가능했다. 그니까 가용된 시간이 프로젝트 전체를 통틀어서 10시간이 안 된다. 팀도 랜덤하게 뽑혔는데 이러면 기본적으로 실력을 갖춘 팀이 더 유리한 거 아닌가 싶고 내년부터는 꼭 바뀌면 좋겠다.

ENGF0002: Design and Professional Skills 1

난이도: ⭑⭑⭑✩✩

구성:

  • Computer Science: 
  • Scenario 1 & 2:
  • Ethics Report: 

아 그리고 ENGF 과목들의 공통점이 하나같이 뭐 같은 리포트를 쓰는 게 있는데 제발 좀 없어졌으면 한다. 특히 ENGF0001에서 Risk and Security라는 타이틀의 리포트가 있었는데 내용은 우간다에 이 프로젝트로 회사를 세웠을 때 발생할 수 있는 상황을 PESTEL로 구분해서 적고 대응방안을 제시하는 것이다. PESTEL은 Political, Environmental, Social, Technological, Economic, Legal의 약자다. 인터넷에 돌아다니는 빈약한 우간다에 대한 정보로 리포트 쓰느라 죽는 줄 알았다.

COMP0147: Discrete Mathematics for Computer Scientists

난이도: ⭑✩✩✩✩

특징:

  • 교수님 발음이 러시아 쪽이라 초반에 힘들었음
  • 진도가 거북이보다 느림
  • 굉장히 쉽고 사실상 거져먹는 과목

한국 대학에서 배우는 이산수학을 기대하면 안 되고 과목 이름대로 Computer Scientist를 위한 이산 수학이라 교수님이 새로 커리큘럼을 만드신 것 같다. 집합, 함수, Permutation 등으로 초반 진도를 나가면서 군론과 집합론의 일부분도 배운다. 그렇게 해서 Euler's theorem과 함께 다음과 같은 상황에서 해를 구하는 방법을 배운다.

참고로 (d)는 deterministic way가 없음

그다음에 GCD를 구하는 Euclid's algorithm도 배우면서 non-deterministic 함에 대해서도 배웠다. 최초의 알고리즘이다라면서 들뜨신 교수님의 얼굴이 왜 기억에 남는지는 모르겠다. 그리고 RSA 알고리즘도 이에 대한 연장선상으로 배우고... 마지막으로는 matrix에 대해 짤막하게 배운다. 역행렬 구하는 것까지 한다. Cramer's rule은 안 배우고 recursive definition을 배운다. A의 inverse를 구하기 위해서는 A에 augmented matrix로 오른쪽에 identity matrix를 붙여주고 Gaussian elimination으로 기존의 A를 identity matrix로 변환시키는 것이 방법이다. Cramer's rule 같은 건 사실 시험 문제 풀 때는 도움되는데 기억에 오래 남지는 못하는 것 같다. 그리고 이 방법은 가르쳐준 이유도 우리 과목의 목적에 맞는 것 같다.

시험의 경우도 교수님이 여태까지 내주신 연습 문제에서 숫자만 바뀐 정도였어서 아... UCL CS 수준이 이 정도인가라는 생각을 했기도 했다. 하지만 돌이켜 보면 이 교수님 과목이 되게 잘 짜여진 과목이었다는 생각이 든다. 고딩때 RSA 알고리즘 공부할 때는 계산 과정이 제대로 이해되지 않았지만 이 과목을 듣고 다시 보니 되게 명확해졌다. 강의 내용마다 CS에서 수학을 어떻게 사용하는 지에 대해 잘 연결시키려고 노력한 모습도 보이고 나름 의미있는 수업이었다고 생각한다. 물론 PDF는 복습용으로는 적합하지 않았다.

COMP0002: Principles of Programming

난이도: ⭑⭑✩✩✩

구성:

  • C: 선린 다닐 때부터 줄곳 써왔던 C... 별 다른 건 없었다.
  • Haskell: 처음 함수형 프로그래밍을 배웠다. 모나드까지는 다루지 않았다. 그래도 하스켈을 배우면서 CS를 배운다면 한번쯤은 알아둬야 하는 프로그래밍 패러다임이 아닌가라는 생각을 했다. 하스켈은 성능 우선이라기 보단 그냥 패러다임을 표현하기 위한 언어라는 느낌이 수업을 들으면서 많이 들었다. 여기서 배운 지식은 러스트를 좀 더 잘 이해하기 위한 양분이 되었다.

COMP0003: Theory of Computation

난이도: ⭑⭑⭑⭑⭑

구성:

  • Formal Logic: Propositional Logic, First-order Logic, Modal Logic을 배운다. 걍 어렵다.
  • Automata: DFA, NFA, CFG, Regex, Turing Machine을 배운다. 얘도 걍 어렵다.

그냥 이 과목은 시작부터 끝까지 너무 어려웠다. 쉽지 않았고 시험도 쉽지 않았다. 한 학기의 반동안 formal logic을 하고 나머지 반동안 오토마타를 배우는데 굳이 얘네 두 개가 같이 있을 필요가 있나 싶긴 하다. 한번도 교수님 얼굴 F2F으로 본 적 없고 작년에 만든 비디오 보기만 해서 감흥도 없었다. 오토마타 교수님은 일본 출신이시고 (Nakamura 상) IIT에서 학부 CMU에서 박사하신 분이신데 설명도 그렇게 깔끔하지 않고 Emmm... 같은 filling word가 영상의 10% 정도에 마우스 포인터도 설상가상으로 안 보여서 this, it 같은 대명사가 뭘 의미하는지 알아내기 위해 시간을 많이 들였었다..

강의로 보나 시험으로 보나 이 과목은 꼭 필요하지만 더 좋은 방법이 많이 있을 것 같다는 생각이다. Thanks Neso Academy.

COMP0004: Object-Oriented Programming

난이도: ⭑⭑✩✩✩

구성:

  • Java
  • Servlet

COMP0002에서 C를 가르친 Graham이 이 과목 교수님이다. 그냥 그런 과목이다. 신기한 것도 없고 재미있는 것도 없었다.

메모 서비스를 제공하는 웹 백엔드 서버 만드는 Coursework 점수로 60을 받았다. 분명히 프론트는 안 중요하다고 해서 layout만 대충 정리해뒀는데 이 점수를 받았다. 아무래도 CSS와 점수가 연관되어 있다. 난 다른 사람과 다르게 본문 안에 그림도 삽입할 수 있게 만들었는데 점수가 더 낮다. 분명히 문제가 있지만 교수님은 나의 메일을 두 달이 되도록 답장하지 않고 있다. 그리고 피드백 또한 그냥 very good template이라 어디서 깎였는지 알 수가 없다. Graham의 수업 평판을 깎는 주된 원인은 아무래도 최악의 피드백일 것이라 생각한다. 그냥 복붙이라 어디가 개선할 부분이고 어디가 좋았는지 알 수가 없다. 이럴거면 왜 한 달 뒤에서나 피드백을 주는 지 참...

재미있는 점은 COMP0002때도, COMP0004때도 코딩은 많이 짜보고 피드백을 잘 받는 것이 중요하다라고 하는 교수님의 피드백이 항상 복붙이라는 것이다. 그래서 내가 뭘 잘했는지, 뭘 못했는지 알 방법이 없다.

COMP0005: Algorithms

난이도: ⭑⭑⭑⭑✩

Princeton 교재로 쓰인 빨간 Algorithms 책의 내용을 그대로 가지고 수업한다. 이 부분에서는 큰 불만은 없었다. 수업 내용도 좋고 피드백도 정말 좋아서 전체적으로 만족도가 높은 수업이었다. 다만 교수님 말씀하실 때 어...어... 하시는 게 정말 거슬렸다. 이것만 빼면 전체적으로 만족도가 매우 높았던 수업.

COMP0011: Mathematics and Statistics

난이도: ⭑⭑⭑✩✩

원래 2학년에 있던 과목이 작년까지 1학년에 있던 compiler 과목이 3학년 선택과목으로 넘어가면서 1학년으로 내려오게 되었다. 따라서 올해가 첫 시험이자 첫 수업이었다. 교수님은 정말 열정적이신 분이었고 멋지신 분이었다. 배운 내용은 complex number, calculus, matrix, stat 등 얇지만 넓게 다뤘고 시험 수준도 가장 만족스러웠다. 올해가 첫 시도라 내년에는 어떻게 될 지 잘 모르겠다만 유용했던 수업이었다.

'학업 > UCL' 카테고리의 다른 글

3학년 1학기 끝낸 기념  (1) 2023.12.19
UCL 2학년 끝난 지금  (3) 2023.05.21
UCL CS 1학년의 5주차를 경험하며...  (0) 2021.11.02

댓글