$$\newcommand{\Z}{\mathbb{Z}} \newcommand{\R}{\mathbb{R}} \newcommand{\Q}{\mathbb{Q}} \newcommand{\N}{\mathbb{N}}\newcommand{\C}{\mathbb{C}} \newcommand{\oiv}[1]{\left] #1 \right[} \newcommand{\civ}[1]{\left[ #1 \right]} \newcommand{\ad}[1]{\text{ad}(#1)} \newcommand{\acc}[1]{\text{acc}(#1)} \newcommand{\Setcond}[2]{ \left\{\, #1 \mid #2 \, \right\}} \newcommand{\Set}[1]{ \left\{ #1 \right\}} \newcommand{\abs}[1]{ \left\lvert #1 \right\rvert}\newcommand{\norm}[1]{ \left\| #1 \right\|}\newcommand{\prt}{\mathcal{P}}\newcommand{\st}{\text{ such that }}\newcommand{\for}{\text{ for }} \newcommand{\cl}[1]{\text{cl}(#1)}\newcommand{\oiv}[1]{\left] #1 \right[}\newcommand{\interior}[1]{\text{int}(#1)}$$

본문 바로가기

카테고리 없음

2020 2학기 (3학년 2학기) 돌아보기

gratus907.com/119?category=867755

 

과연 한학기가 어떻게 지났을까?

비대면 학기는 여전히 너무 이상하다. 안타깝지만 21-1학기도 별로 대면이 될 것 같아 보이지는 않는다.

 

I. 컴공 전공과목

- 시스템 프로그래밍 : 예상했던대로 비슷하게 흘러갔다. system-level I/O, malloc()의 실제 내부 원리, linker와 loader, thread와 process를 이용한 병렬 프로그래밍 비슷한 무언가, 네트워크 기초 정도를 배웠다. 재밌었지만 소개원실때문에 기말고사 공부를 거의 하나도 못하고 봐서, 기말고사를 굉장히 심하게 말아먹었다.

 

- 소프트웨어 개발의 원리 및 실제 : 하고싶은 말은 많지만, 생각보다 이 블로그를 아는 내 주변 사람이 조금 있기 때문에 하고싶은 말을 모두 적을 수는 없고... '로드가 엄청나다고 알려져 있고' 라고 적어 놨었는데, 그렇게 표현하기는 조금 부족하다. 체감상 지난 학기 18학점? 정도까지는 아니어도 지난학기에 들었던 과목들 중 다섯개 정도 합치면 소개원실 하나랑 로드가 비슷하다. 대략 체감상 로드는 12~15학점 정도였다고 생각한다.

프로젝트 마지막에 가서 밤새서 해야 할일도 많았고, 무엇보다 이 프로젝트 때문에 다른과목 기말고사를 거의 공부하지 못했다. 결국 팀원 모두가 이부분은 거의 공통적이었던 것 같은데다가, 내가 팀에서 딱히 공헌이 부족하지는 않았지만 그렇다고 막 특출나게 공헌한 것도 아니고...우리는 roughly 비슷한 수준으로 공헌했다고 생각하기 때문에 누군가를 Blame할 수 없다는 사실은 조금 슬프다.

개발이 적성에 맞지 않는다는 생각은 조금 들었다. Theory 에 대한 논문 읽고, 알고리즘 공부 하는것과는 달리 장점이라면 progress가 눈에 보인다는 것 정도 있겠다. 그외에는, 사용하는 언어부터 비대면 시국의 팀 프로젝트, 처음 배워보는 javascript, django, web programming 등등... 모든것이 처음인데 비해 요구하는 프로젝트의 수준이 지나치게 높다는 감은 지울 수 없는 것 같다. 그런데 신기한 것은 어떻게든 되기는 되더라... React/Redux, Django 등등을 한번도 접해보지 않은 학생 4명으로 구성된 팀이 학기말에 어쨌든 굴러가는 것처럼 보이는, cloc 기준 6천~1만 이상의 규모를 가진 웹서비스를 만들 수 있게 된다는 점에서 대단한 과목이기는 하다. 그 과정에서 그 학기의 모든 것을 희생해야 한다.

원래는 이 수업에서 머신러닝을 이용한 웹 개발을 해야 하지만, 우리는 그 머신러닝을 아주 살짝 우회했다. (우회했다고 보기는 조금 그렇고... 뭐라고 해야할지 잘 모르겠다. 어쨌든 '머신러닝을 사용' 하긴 했으니까..?') 이 부분은 아마 나중에 혹시 내가 우리 소개원실 프로젝트에 대한 소개를 이 블로그에 쓸지도 모르기 때문에 (팀원들이 허락해준다면..?) 말을 아끼기로 한다.

소개원실 수강 전에 누군가가 '소개원실 듣는 학기는 그냥 소개원실 학기다' 라고 얘기해 줬는데, 끝나고 나서는 매우 동의한다. 이거 프로젝트 없었으면 한 22학점쯤 수강했어도 들을만 했을 듯.

내가 개발자로서의 진로를 잡았거나, 또는 진로를 고민하는 중에 있었다면 더 많은 도움이 되었을 것이다.

 

 

II. 수학 전공과목

- 최적화의 수학적 이론 및 계산 : 중간고사 때까지는 제대로 공부를 못 했다. 기말고사 전에는 수학과 16학번의 지인과 함께 스터디 식으로 책에 있는 거의 모든 연습문제를 풀어봤고, 증명들 따라가 봤는데 많은 도움이 되었다. -킹- 덕분에 버스 탔다고 생각한다 :P 

Convex optimization은 한 5주 정도 나갔고, 그 후에는 주로 monotone operator를 이용한 내용들을 나갔다 (Convex도 중요하게 쓰이기는 한다) ADMM 등 알고리즘들을 엔지니어로써 사용하기는 하더라도 그 이면의 원리나 수학적인 이론, 수렴성의 증명과 조건 등등에 대해 명확하게 이해하기가 쉽지 않은데, 그런 틀을 잡을 수 있는 과목이었다. 해석학적인 베이스가 조금 더 있었다면 (다 까먹은 해개 1이 내 해석 베이스 전부니까) 훨씬 재밌게, 잘 들을 수 있었을 것 같다는 아쉬움은 조금 남는다. 중간고사 이전에 공부를 안한게 아쉬운 과목.

 

- 수치해석개론 : 청강하다가 중간에 소개원실에게 잡아먹혔다. 수치해석은 컴공/수학 조합인 나한테 내 선호와 무관하게 한번쯤은 들어야만 한다는 그런 생각이 드는 과목이라서, 다음학기든 언제든 제대로 수강을 하던지 책을 혼자 제대로 공부를 하던지 해볼 생각이다. 강의가 매우 compact하고 과제가 많아서, 모든 과제를 다 하려면 꽤 힘들어 보였다 (청강이라서, 과제는 중간부터 그냥 내려놓았다. 소개원실이 아니었으면 아마 이것도 다 할 수 있었을 것이다) 

 

 

III. 기타 과목

- 기계공학 개론 : 수능 물리II를 3년 전에 응시했던 vague memory에 의존해서 공부했고, 중간고사 전까지 하는 CAD는 나름 새롭고 재밌었다. 그외에는 stress나 관을 흐르는 유체의 속력에 대한 내용 같은것들을 배웠고 전반적으로 물리I + 알파였는데, 이게 앞으로 내 공부에 도움이 될 일이 있지는 않을 것이다. 그러나 그건 모든 O공개가 마찬가지일 것이었기 때문에 내 소거법 선택이 옳았다고 생각한다.

새로 알게된 기계과 (타학교) 나보다 한학년 아래 지인이 있어서 과제를 꿀빨아 보려고 시도했지만 CAD과제는 쓰는 프로그램이 다르고 다른부분은 과제가 없어서 별로 꿀빨 여지가 없었다. 

 

 

IV. 랩 인턴 (UROP)

사실 뭔가를 막 잘 한건 아니고...연구원님께도 그렇고 논문읽으면서도 그렇고 다른데서는 접하기 힘든것들을 좀 접해볼 수 있었다. 진로가 어느정도 정해진것 같다. 겨울방학 때 해야 할 일이 조금 남았기 때문에 일단 여기서 많은 얘기를 하지는 않을 것이지만, 비대면이라 특히 별로 뭔가를 하지 못했는데도 공부가 많이 되었다.

아마 졸업하고 자대 대학원에 진학할 것 같다는 생각이 더 강해졌다.

 

 

V. 프로그래밍 대회 / PS

이 항목에 있는 거의 모든 내용을 소개원실이 잡아먹었다.

- SCPC 2020 : 예선 1라운드, 박살난 예선 2라운드. 능지가 박살나지 않았다면 본선에 진출정도는 했을 것이다. 다행히 2라운드 끝나고 whining할때 썼던, 인생이 지나치게 행복해서 그 글을 다시 읽어야 하는 일은 일어나지 않았다.

 

- SNUPC 2020 : Div2에서 아쉬움이 많지만 어쨌든 수상은 했으므로 일단 Ok..? 내년에 Div1이 기대된다.

 

- ICPC 2020 : 지나고 나니, ICPC 2020 본선진출은 애초에 말이 되지 않는 목표였던 것으로 밝혀졌다. 서울대 진출 컷이 예선 10등이었고 서울대가 1등부터 5등인가 까지를 모두 스윕했다. 아마 내년에도 팀에 따라 다르지만 졸업전에 리저널 가보는것도 쉽지 않은 일 같다. 이제 서울대의 리저널 진출컷은 적어도 팀에 2명 정도는 레드급이 있어야 하는 듯. 그래도 새로 급조한 팀 치고는 나름 잘 맞았고, 재밌게 대회를 치를 수 있었다.

 

- CF 2100 : 뛰었더니 1940으로 떨어졌다. printf를 써야 할 자리에 계속 print 와 console.log를 쓰고싶어하는걸 보니 뇌를 깨끗이 포맷할 필요가 있다. 당분간 CP를 쉴 생각이다. (PS는 계속 한다)

 

- Atcoder 2000+ : 1900 후반에서 끝났다. 주말에 앳코더를 뛸 시간이 없었기 때문이라고 생각하기로 했지만 현실적으로 위 항목을 봤을때 뛰었으면 1800으로 돌아갔을 것이다.

 

- 고급 알고리즘 / 자료구조 공부하기 : 소개원실한테 잡아먹혔다.

 

 

VI. 수학 공부

여기에 쓴 두가지 (해석, 대수) 다 소개원실한테 잡아먹혔고 한번도 펴보지 못했다. 


전반적으로... 소개원실 로드를 underestimate했다. 12학점이니 뭐니 했을때 에이 ㅋㅋ 했는데 12학점보다도 큰 것 같다.

결과적으로 개발자로서의 진로를 살짝 체험해본것, 시프랑 최적화에서 얻은 지식 약간? 정도가 이번학기에 얻어간 것이라고 생각한다. 소개원실 덕에 코딩 습관이 조금 정상화됐는데 이건 계속 지키지 않으면 금방 원래대로 회귀할것 같아서 잘 모르겠고... 지식적으로보다는 그런 경험을 가졌다는 데 의의가 있다고 생각한다.

 

programmers에 올려놓은 이력서를 보고 몇군데에서 인턴십이나 병특 등에 대한 offer가 있었다. 어떤부분이 좋게 보였는지 정확히 알 수는 없으나 공통적으로 웹, 머신러닝 등을 언급하는것으로 보아 소개원실 프로젝트라고 생각한다. 확실히 실제 프로젝트 경험이 개발자로서의 진로에 많은 영향을 주는 것 같기 때문에, 그런 점에서 의미를 찾으려고 한다.

 

방학에는 반대로 수학이랑 알고리즘만 공부할 생각이다. 일단 방학때 나를 갈궈주기로 한 수학과 지인이랑 얘기를 좀 해보고... 아마 해석을 위주로 볼 것 같다. 다음학기 4학년 해석을 들을 계획이기 때문에.