2023. 4. 26. 03:46ㆍ회고
벌써 정글에 입소한 지 두 달이 지났다.
정글의 커리큘럼을 보니 딱 중간 단계에 와있다.
지금까지 정글에 와서 정말 많은 공부를 했다.
배운 것들을 머릿속에만 남겨놓기 아까우니 여기에 남겨놔야지~!
1 ~ 4주차 :: 컴퓨팅 사고로의 전환
첫 4주동안은 난생처음 들어보는 자료구조와 알고리즘을 배우면서 정말 많은 알고리즘 문제를 풀었다.
이 세상엔 다양한 알고리즘이 very many 존재한다는 것을 알게 되었고, 이걸 모르고 살았던 인생이 아까울 정도였다.
복잡한 문제를 코드 몇 줄로 뚝딱 간단한 문제로 바꿔버리는 것이 아주 매력적이다.
요즘은 특히 다익스트라에게 아주 빠져버렸다 ㅎㅎ dijkstra <- 네덜란드 동네 이름 같고 너무 예쁨,
나도 내 이름으로 된 알고리즘 하나 만들고 싶다 ㅋㅋ
그리고,
입소하기 전에 SILVER4였던 백준 티어가 지금은 무려 GOLD1이 되었다!!!
여기 들어오기 전에 알았던 친구들 중에서 내가 제일 높다 ㅎㅎㅎ
그렇지만 이 세상엔 역시나 똑똑한 사람들이 많다,, 나보다 높은 티어를 가지고 계신 선생님들이 매우 아주 많다.
이 천재들은 다들 어디에 숨어있는 걸까?🤔
알고리즘을 제대로 공부하기 전엔 GOLD만 되어도 어마어마해 보였는데, 이제 내가 그 티어를 쟁취했으니
머지않아서 지금의 내가 생각하기에 말도 안 되는 단계에 오를 것이라고 확신한다! 미래의 나야 잘 부탁행😘
알고리즘 주차가 끝나고 나서는 (알고리즘으로 이 세상을 지배할) 형인이와 틈 날 때마다 한 문제씩 풀기 위해 노력 중이다.
코치님께서 추천해주신 LeetCode에서 주최하는 콘테스트도 참가해보았는데, 생각보다 문제도 많이 어렵지 않고 문제가 길지 않아서 영어 독해에도 큰 어려움은 없었다.
처음에는 영어로 문제를 푸는 짓을 하고 싶지 않아서 전혀 할 생각이 없었는데
형인이가 엄청 꼬셔대는 바람에 참가한 것인데, 생각보다 아니 엄청 재밌었다 ㅎㅎ
그동안 지레 겁을 먹고 놓쳐버린 재미가 이 세상에 많을지도 모르겠다.
그 이후로는 낯설거나 어려워 보이는 문서를 읽게 되거나 과제를 받았을 때 거부감이 덜해진 것 같다.
요즘 같이 공부하는 형인이는 생각하는 속도가 굉장히 빠르고 다양한 아이디어를 로직으로 아주 잘 녹여낸다. (민기 오빠가 인간 permutation이라고 했다 ㅋㅋㅋ)
본 지 두 달이 되어가는데도 아직도 하루에 한두 번씩은 놀랄 일이 생긴다.
같이 공부해주고 많이 알려줘서 항상 감사하고, 조만간 내가 재낄 거다.. 기다려 형인아..
5 ~ 7주차 :: 탐험 준비
알고리즘 이후에는 파이썬이 아닌 C언어로 하는 과제들을 받았다.
자바스크립트를 많이 다뤘다 보니 파이썬을 배우는 것은 크게 어렵지 않았다.
자바도 옛날에 해봤으니 C언어를 배우는 게 크게 어렵지 않을 거라고 생각했고,
미리 유튜브에서 인강도 들어서 별걱정이 없었다.
하지만 괜히 C언어 C언어 하는 게 아니었고,
코치님께서 이렇게 겁을 주신 이유가 있었다.
진짜 포인터와 구조체와 거기에 연산까지..🤯 아주 복잡스럽지만,
슬슬 적응이 되는 것 같다 ㅋㅋㅋ 역시 인간은 적응의 동물
사실 주소에 직접 접근할 수 있는 건 또 마음에 든다.
😳 : 리턴을 안 받아도 변수 값을 바꿔줄 수 있다고?! 쩐다!
다른 언어도 마찬가지지만 C언어는 정신 제대로 안 차리고 코딩했다간 정말 큰 일이 날 것 같다.
디버깅을 할 때도 눈에 확 들어오지 않고, 하나 하나 타고 들어가야 해서 시간도 오래 걸린다.
그래도 추리하는 맛이 있다.
GDB도 아직 잘 쓰진 못하지만 이거만 잘 활용해도 ~ C언어 쯤이야 ~..?
C언어로 코딩하는 것도 결국 다 인간이 하는 일이니까 ㅎㅎ 예쓰아캔두!
첫번째 과제 "Red-Black tree를 직접 구현해 보아요."
RB Tree가 뭔지도 모르겠는데, 일단 트리인 건 알겠는데, 그걸 구현하라니..
너무 겁먹었지만, 마침 또 울트라천재 형인이와 팀이 되어서 늘 그랬듯이 당연하게 성공해냈다!
책도 제대로 안 보고 개념만 훑고 바로 머리를 맞대고 뚝딱뚝딱 구현해 나간 게 지금 생각해도 대단하다. 👍🏻
코딩하면서 찍어둔 사진의 함수명을 보니 살짝 정신이 나간 것 같지만, 진~~짜 재밌었다 ㅋㅋ
node_is_free();
)
이제 나는 자료구조를 손수 구현해본 사람이 되었다.
다음 과제는?
두번째 과제 "지난 주에 사용했던 malloc을 이번 주에는 만들어 보아요."
RB Tree를 만들면서 이제 malloc을 언제 왜 써야 하는지는 대애애애애충 알겠는데,
이 주차에는 그걸 만들..었다.
처음에는 정말 감이 안 와서 힘들었다.
일주일 동안 Carnegie Mellon 대학교의 malloc을 구현하는 과제를 하는 것이었는데,
미국에서 잘나간다는 대학교 수업도 들어보고, 그 학교 학생들이 하는 과제를 내가 한다고 생각하니
기분이가 아주 좋았다 ㅎ.ㅎ
처음에 너무 어려워서 책만 내내 읽다가
한 가지 방법을 잘 익히고 나니 그다음은 아주 수월했다!
정글의 한 선배님만이 (세계 최초로?!) 성공했다는 buddy-system까지 도전해볼 수 있었다. 😆
이런저런 방법을 조합도 해보고 다양한 시도를 해보았다.
C언어로도 구현하는 맛을 조금씩 느끼게 되는 과제였다.
이렇게 채점을 돌려가면서 얼마나 구현됐나 확인할 수 있는데, 게임하는 것 같아서 재밌었다.
하지만 정성을 더한다고 점수가 오르진 않았다. 점수는 더 발전한 로직을 적용해야 올랐다. (그러니 공부하자..)
그리고. 메모리 진짜 아껴 쓸 거임.
세번째 과제 "웹서버를 만들어보기! (프록시 서버까지)"
서버요? AWS 뭐 그런 건가요? 서버가 그냥 코드 쳐서 만들어지는 거야?
대체 뭘 만들라는 건지ㅠㅠ
이번에도 일단 책을 꾸역꾸역 읽어보았다.
malloc을 했을 때보다 처음 보는 용어들이 더 많았다.
개념이 정말 많았다는 말이다.
통신에 필요한 것들이 뭐가 있는지 간단한 지식조차 없으니 정말 어려웠는데,
참 신기하게도, 이 과제도 간단한 서버를 먼저 구현하고 나니까
다음 과제인 프록시 서버를 만들고 캐싱을 추가하고 하는 일들이 별로 어렵지 않았다.
팀원들과 머리를 싸매고 로직을 짤 때는
진짜 서버가 없는 세상에서 서버라는 것을 만드는 사람이 된 것 같은 착각이 들기도 했다.
그런 건 그런 거 하는 사람들이 하는 일이고 ~ 라고 생각했던 '그런 거'를 해낸 기분, 아주 저 하늘 높이 날아갔음🌪
차근차근 로직이 쌓여가고 탄탄해지는 걸 보면 너무 짜릿했다.
이런 거 만드는 일은 지금은 누가 하지? 랩실의 교수님들?! 그런 미래도 나쁘지 않을 것 같다는 생각이 든다.ㅎㅎ
8주차 :: 정글 끝까지
결국 대망의 pintos가 시작되었다.
지금까지 RB Tree, malloc, proxy 이게 다 정글을 탐험하기 위한 '준비'일 뿐이었다니 ㅋㅋㅋ
pintos 과제를 받기 전부터 점점 동기들은 준비가 이거면 pintos는 대체 어떤 거야~ 라는 말을 달고 살았다.
멀게만 느껴졌던 OS 프로젝트는 생각보다 빨리 다가왔고
지금 그 첫째 주 과제를 하고 있다.
처음 과제를 받기 전에는
카네기멜론 과제도 (하고 나니까) 별거 없었는데, 스탠포드, 카이스트 과제라고 그렇게 많이 어렵겠어? 라고 생각했는데,
과제를 받고 나니까 '이걸 학기 중에 하는 학교가 있다고..?' 하는 생각이 들었다.
과제 설명서 자체가 사이트 하나를 통째로 차지하고(매뉴얼 수준..),
읽는데도 무슨 말인지 하나도 모르겠고
한 문장에 모르는 단어가 3~5개씩 나왔다 ㅋㅋㅋ
게다가 영어로 되어있으니, 아찔 😣
과제 해석하는 데만 꼬박 이틀이 걸렸다.
혹시라도 내가 팀에 도움도 안 되고 결국엔 과제를 해내지 못하는 일이 발생할지도 모르겠다는 생각에 내내 마음이 불편했다.
그런데 또 너무 겁을 먹었던 건지
지금 벌써 필수 과제를 다 끝내고 선택 과제를 하기 전에 짬이 나서 회고를 쓰고 있다. ㅋㅋㅎ
이렇게 지금까지 했던 과제 중심으로 글을 써보니 전부 처음에 과제를 받았을 때는
너무 어렵고 해낼 수 있을까 걱정이 앞섰던 것들
모두 다 잘 달성하고 여기까지 와있었네? 역시 난가..
앞으로 남은 정글도 무사히 뿌셔버리길💖
'회고' 카테고리의 다른 글
[KAIST 정글] 나만무 프로젝트 회고 (1) :: 팀 형성, 초안 발표 (37) | 2023.10.22 |
---|---|
[KAIST 정글] 0주차 프로젝트 (0) | 2023.03.04 |
[KAIST 정글] 1주차 에세이 (0) | 2023.03.04 |