BCIT CST를 졸업하며... (Term4 리뷰 편)
드디어 BCIT를 마치며 시리즈 마지막 포스팅이다. 혹시 term1, term2, 그리고 term3에 대한 리뷰 포스팅을 보고 싶다면 아래의 링크를 참고하면 된다.
Term4 종합 리뷰
BCIT CST Diploma의 마지막 학기인 term4는 언뜻 보면 많이 널럴해 보일 수도 있다. 그런데, 복병들이 많은 관계로 역시나 학기 초에 세워두었던 계획인 "개인 프로젝트를 진행하면서 취업준비도 병행해보자"는 개뿔... 그저 주어진 학사 일정에 따라가기도 솔직히 힘들었다. 일단 4800을 포함하여 4736, 그리고 옵션 과목에서 프로젝트를 진행하기 때문에 프로젝트의 term이라고 불려도 과언이 아닐 정도로 프로젝트에 치여서 살게된다. 게다가 정말이지 이 것을 왜 배워야하는지 도저히 이해가 안되는 과목이 하나 있었으니... 그건 아래쪽 리뷰에 썰을 풀어보도록 하겠다. 개인적인 체감 난이도는 Term1 << Term2 ≒ Term4 <<<<< Term3 정도로 정리할 수 있겠다.
공통 과목은 3과목이며, 프로젝트 과목인 4800이 붙고, 옵션에서 2과목을 듣게 되어서 총 27학점 이다. 이렇게 해서 34(term1) + 27(term2) + 32(term3) + 27(term4) = 120. 즉, 2년 동안 총 120학점을 듣게 되어버러는 미친 스케쥴이 나오게 되는 것이다. 나 한국에서 대학교 다녔을 때 4년에 140학점듣고 졸업했는데...ㅋㅋㅋ
역시나 8:30 수업이 2개나 있다. 참고로 4800은 수업이 있는건 아니고 그냥 잡아둔거라 월요일은 쉬는 날.. 아니 랩, 어싸, 퀴즈, 프로젝트에 집중하는 날이다. 이렇게 8:30 수업이 두개나 박혀있기 때문에 일단 물리적으로, 또 신체적으로 빡셈이 예견되어있는 게임이라 할 수 있겠다. 특히나 금요일.. 하지만 우리 패러다임 옵션의 최대 장점이 mid term이 없다는 것 외에, 또 하나가 있었으니 lab시간이 유동적이라는 것이다. 패러다임은 lab시간에 궁금한거 질문하고 그런 시간을 활용하는데, 알버트 행님도 그렇고 우리 모두가 lab시간을 깍두기로 생각하기 때문에 별다른 일이 없다면 lab은 skip이 된다. 따라서 패러다임 두과목의 lab은 뺀다고 보면 되겠다. 그래.. 이렇게라도 숨은 쉬게 해줘야지.. ㅋㅋㅋ
COMP 4537 Internet Software Architecture
Term2에 지호쌤이 있고, Term3에 제프가 있었다면 Term4에는 아미르가 있다. 아미르는 다운타운과 버나비 둘다 강의를 하니깐 이 역시 CST에 들어온 친구들에게 최대 축복이지 않을까 한다. 그만큼 강의도 좋았고, 배운 것도 많은 과목이기도 했다. 이 과목에서는 Vanilla Javascript에 대해서 아주 밑바닥부터 하나씩 차근차근 배우며, Node, Express, DB, RESTFul API까지 전부 훑어낸다. 사실, term1때 애런한테 날림으로 배운걸 아미르도 다 눈치까고 있어서 그런지 아예 기초부터 잡아주기 때문에 나한테는 너무나도 좋았다. 그리고 솔직히 자바스크립트를 극혐하고 있는 입장이었는데 아미르 덕에 살짝 좋아지기도 했다. 랩은 대부분 2인 1조 팀 플레이이며, 난이도는 그리 어렵지는 않다. 하지만 랩을 직접 아미르에게 데모하고 코드 및 동작을 직접 설명하고, 또 질문에 답변을 제대로 해야 full mark을 받기때문에 난이도가 쉽든 어렵든 준비는 철저하게 하고 가야한다. 나는 다행히도 내가 랩을 주도하다 싶이 코드의 대부분을 짰기때문에 데모랑 설명을 매번 액티브하게 해냈다. 그 결과 아미르와 신뢰관계를 형성하게 되어서 짜잘한 실수가 나오거나 혹은 부족한 부분이 나와도 free pass가 되는 케이스였다. 대신 내 파트너가 좀 고생을 했다. 왜냐하면 아미르도 내가 코드를 대부분 짰다는 것을 알기때문에 내 파트너한테 집중 공격이 들어갔기 때문이다. 어쨌거나 자바스크립트에 대해서 흥미를 갖게 되었고, 정말 다양한 웹 프로그래밍 기법들과 이론에 대해서 접하게 되는 기회를 이 과목을 통해 누릴 수 있다는 것이 너무 만족스럽고 좋았다. 그래서 이 과목은 정말 힘들었지만 즐기면서 하게 되었고, 결론적으로는 종합 94점으로 마무리를 했다. (당연한 얘기지만 잘 나온 과목만 점수를 깐다 ㅋㅋㅋ)
COMP 4737 OS
강사는 라힘인데, 솔직히 이 할아버지도 거의 오늘내일 하는 것처럼 힘이 하나도 없다. 게다가 목소리도 모기소리 만해서 들리지도 않는데다, 강의도 못해서 조금 힘들었다. 대신, OS라는 내용 자체가 재미있고 유익하기 때문에 나름 재미를 붙이면서 공부했던 과목이다. Linux 시스템을 통해서 File, Memory, Thread 등에 대해서 그 동작 원리와 구성에 대해서 공부를 했는데, 실제로 OS에서 배운 내용이 패러다임 과목의 프로젝트에서 사용되기도 할 정도로 유익했다. lab은 MSWORD로 그날 랩시간에 주어지며, 해당 랩시간 안에 제출을 해야하는데 그리 어렵지는 않다. 그리고 퀴즈 3번, midterm, final exam으로 구성되어 있는데, 흥미를 가지고 공부를 해서 그런지 어렵다는 생각은 들지 않았다. 아직 성적이 나오지는 않았지만 final exam 보기 전에 이미 pass 성적을 만들었기 때문에 그리 걱정이 되지 않는 과목이기도 하다. 랩시간에 C언어를 사용하긴하나, 코딩을 할줄은 몰라도 된다.(이게 무슨 의미인지는 랩시간에 해보면 안다. ㅋㅋㅋ) 어쨌거나 컴퓨터 구조와 동작원리에 대해서 제대로 공부할 수 있는 기회이니만큼 기왕 하는거 열심히 해보길 추천하는 바이다. 다만 라힘이라는 점에서 동기부여가 조금 힘들 수도 있다. 예전에는 지호쌤이 OS도 강의를 했었는데, 그게 좀 아쉬울 따름이다.
LIBS 7102 Ethics
Term4에 들어서 가장 힘들었던 과목이 바로 이 Ethics이다. 이건 아마 CST를 졸업한 친구들이라면 모두가 200% 공감할 수 있지 않을까 싶다. 강사는 바스코, 랩강사는 사이먼이며, 만약에 랩강사가 할머니라면 조금 빡세다고 들었다. 나는 다행이도 사이먼이라 아주 널럴하게 랩을 들었다. ㅋㅋㅋ 이 과목은 철학에 대해서 배우는데, 다른 CST 과목들과의 접점을 전혀 찾을 수가 없을 정도로 힘들었다. 밴덤, 칸트, 밀 뭐 이런 행님들이 등장해서 주장하는 철학 사상을 이해하고 그것에 대해서 내 생각을 펼쳐내는 것들인데, 솔까 한국말로 번역을 해서 봐도 무슨 소린지 전혀 이해를 못할 정도이다. 그래서 다들 힘들어한다. 매주 퀴즈가 있고, 에세이 2번 쓰고 midterm, final exam을 보는데.. 퀴즈는 그저 다들 대놓고 ChatGPT 돌려서 푼다(이게 웃긴게 ChatGPT를 돌린다고 해도 full mark이 안나온다 ㅋㅋㅋㅋ) 그리고 에세이야 뭐 그냥 개똥철학이든 어찌어찌 쭉쭉 써내려가면 되는데, midterm, final exam이 쥐약이다. 전부 서술형 문제이며 대략 6~7문제 정도가 나온다. 이중에서 5~6 문제만 선택해서 푸는 형식인데, 그게 중요한 건 아니고... 예상 문제라고 챕터별로 10~15개 정도 뽑아서 미리 주는데, 그것 역시 서술형이라서 그냥 생짜로 외워야한다. 난 암기에 무척 약한 스퇄이기 때문에 진짜 고생했다. 그리고 대박은 final exam.. 여기서는 미니 에세이가 추가되고, 시험 범위가 전범위로 바뀌기 때문에 진짜 힘들다. 물론, final exam 전에 겨우 턱걸이로 pass 점수를 확보해서 그나마 심리적으로 위안을 얻었지만 이번학기 최대의 블랙홀이라고 해도 과언이 아니다.
COMP 4958 Concurrent Programming
패러다임 term4 첫번째 옵션 과목이다. Elixir, Erlang, 그리고 Go를 배운다.. 고 하지만 90%가 Elixir에 치중되어 있고, Final exam도 Elixir에서만 나온다. 이미 Term3에서 OCaml 맛을 봤기 때문에 Elixir는 그나마 할만했다고 생각한다. 만약 OCaml을 겪어보지 않았다면 여기서 진짜 멘붕을 맞았을 것이다. 과목의 제목처럼 process와 thread를 여러개 생성해서 하나의 서버에 다수의 클라이언트들이 접속하는 상황을 만들어두고 어떻게 하면 동시성 이슈를 잘 극복해가면서 퍼포먼스를 유지해 나가는지를 탐구하는 것이 이 과목의 핵심이다. 나는 사실 Go와 Rust를 배우고 싶어서 프로그래밍 패러다임을 선택한 것이었는데 정작 Go는 대략 3주 정도밖에 배우질 않는다. 그럼에도 불구하고 Go언어의 매력은 충분히 느낄 수 있으며, 이후 내가 Go를 주력 언어로 삼기로 결정하는 데에는 충분한 시간이기도 하다. Go의 최대 장점은 Go언어 자체적으로 GoRoutine이라는 경량 스레드를 가지고 있다는 점이다. 그래서 동시성 제어에 최적화된 환경을 제공하기도 하고, 문법 자체가 굉장히 심플하고 단순하기 때문에 익히기도 편하다. 그렇다고 성능이 떨어지는 것도 결코 아니기 때문에 주력 언어로 삼을 만 하다고 판단을 한 것이다.
지난 학기에 각 컴포넌트별로 모두 50%를 넘어야 한다는 극악의 생존 조건 때문에 챌린지를 많이 받았는지, 이번에는 그나마 완화되서 이렇게 lab과 전체 50%만 넘으면 된다는 아주 널럴한(!) 생존조건으로 바꼈다. 그래서 다들 이제는 OCaml의 지옥문을 뚫고온 최강 전사들이라 그런지 이정도 쯤이야 껌으로 여기고 final exam 전에 우리 6명 전원 pass 조건을 만족시켜 버렸다고 알버트 행님이 엄청 좋아하셨다. ㅋㅋㅋㅋ 다만 어싸와 랩의 비중이 어마무시하게 크기 때문에 사실 학기 내내 시간과 노력을 많이 들여야한다. final exam이 무조건 손 코딩인데다가 어떤 문제가 나올지 모르기 때문에 무적권 final 보기 전에 pass를 만들어 놓아야 한다는 것이 불문율이 되어버렸기 때문이기도 하다. 난 final 보기 전까지 77.6점을 만들어놨고, 사실 final exam은 손을 놓아버렸다. 그래서 여기서 대충 시험을 봤고 최종 87점으로 굳히기 들어감. 음...? 분명 날림으로 썼는데, 알버트 행님이 점수를 후하게 주신거 같다. final 15점 만점에 10점 받았으니 대만족!!! ㅋㅋㅋ
COMP 4959 Selected Application of Programming Paradigms
이 과목에서는 Rust를 배운다. 사람들이 왜 Rust가 어렵다고 얘기를 하는지를 이 과목을 들으면서 절실히 깨달았으며, Rust는 아직은 내가 들어가기에는 조금 멀다는 사실도 알게되었다. 일단 Rust는 코딩을 하면서 개발자가 생각하고 신경써야할 부분이 너무나도 많다. 일례로 variable을 borrow하는 개념이 들어있기 때문에 미세 컨트롤이 가능한 반면, 손이 많이가고 머리를 많이 써야한다. 일단 lab은 어느정도 따라갈만한 수준으로 주니 무리없이 하면 되고, 40%짜리 프로젝트가 있다. 이 프로젝트는 총원 6명이 다 같이 참여해야하는 것으로 주제는 자유주제로 주어지되, Elixir 및 Phoenix framework를 사용해서 구현해야한다. 그 이야기는 deploy까지 해내야 된다는 것을 말한다. 사실 나는 조금 쉬운 주제인 같은 그림 찾기를 하고 싶었는데, 몇몇이 테트리스에 꽂혀서 결국 그것을 하게 되었다. 물론 그걸 주장한 애들이 코드는 대부분 짰고, 나는 Postgres DB를 구축, 연동 및 deploy하고 Elixir Phoenix framework까지 deploy하는 부분을 맡았다. 사실 DB 구축하고 연동하는 거는 S/W Architecture에서 신물나게 하기 때문에 어려운 부분은 아니었는데, Elixir를 deploy하는 부분에서 고생을 좀 했다. 가급적이면 deploy를 자동화해주는 서비스에서 해보려고 Flyio, Gigalixer 등을 전전하다가 마지막 순간에는 도저히 안되서 AWS에서 ubuntu를 설치하고 거기서 deploy를 성공하게 되었다. 그리고 여기서 OS에서 배웠던 각종 이론들을 접목하게 되면서 깔끔하게 마무리를 하게 되었는데.. AWS의 ubuntu에서 Elixir를 돌리는 다양한 방법들이 있겠지만, 가장 직관적이고도 심플한 방법은 우분투에서 직접 코드를 컴파일해서 실행을 하는 방법이다. 하지만, 인스턴스를 브라우저에서 닫아버리면 서버가 같이 종료되는 현상이 발생해서 그것은 OS에서 배웠던 백그라운드로 실행해야 된다는 것을 적용해서 해결을 했고, 또 빌드 및 컴파일 과정에서 메모리가 부족해서 자꾸 process가 kill되는 현상은 swapping 설정을 통해서 해결을 했다. 내가 만약 이러한 것들을 OS에서 배우지 않았더라면 절대로 해결할 수 없었을 것이다. 이 과목은 나름 열심히하고 또 잘해서 90점으로 마무으리~!!
BCIT CST 총평
2년간 정말 힘들었다. 어떻게 고3 생활을 2년 동안 했는지 나 자신이 스스로 너무 대견하다는 생각이 들 정도였으며, 자신감 뿜뿜으로 버프를 받게된 상태이기도 하다. 이 버프가 얼마나 갈지는 모르겠지만.. ㅎㅎ 그리고 혹자는 학교에서 배우는 것이 하나도 없다고 하는데, 나의 경우는 정말 너무나도 많은 것들을 배웠다. 사실, CS는 그 어디에서도 제대로 배워본 적이 없었기에 더욱 그렇게 느끼는 것인지도 모르겠다. 그리고 코딩이야 뭐 어디 부트캠프나 학원, 인강같은 것을 통해서 배우겠지만, 알고리즘, OS, DB, OOP, 아키텍쳐 이런 개념들을 여기서 배워볼 수가 있을까? 당장 코딩에는 도움이 안되는 과목들이긴 하지만, 결국 코딩도 컴퓨터와 대화를 나누는 수단의 하나이고, 그러기 위해서는 컴퓨터의 구조와 동작 원리에 대해서 아느냐 모르느냐가 나중에는 많은 차이를 낼 것이라 생각하기 때문이다. 그리고 정말 신기한 점은 이런 과목들을 배우는 그 당시에는 이런걸 왜 배우나.. 싶었는데, term이 하나씩 올라가고 시간이 흐르면서 이 과목들이 서로 유기적으로 연결이 되면서 또 하나의 지식 체계를 형성하고 가치를 갖게된다는 것을 느끼게 된 점이다. 물론 학교 수업 잘 안나오고 그저 패스만 목적으로 영혼없이 왔다갔다 하면서 드라마나 쳐보면서 널럴했다 라고 하는 인간들은 절대 이런걸 못느끼겠지만 말이다.ㅋㅋㅋ
어쨌거나 2년 동안 학비 대략 4만불을 내면서 힘겹고 힘겹게 잘 버텨냈고, 드디어 그 빡세다는 BCIT CST에서 생존을 해냈다. 물론 BCIT CST가 과거에 비해서 수준이 많이 떨어졌다는 이야기도 많이 들었고, 실제로 그 수준을 떨어뜨리는 애들과 사건들도 많이 봐왔다. 하지만 그럼에도 불구하고 이렇게 보낸 시간이 결코 헛되지는 않았다고 자부한다. 그래서 만약 시계를 거꾸로 돌려서 다시 2020년도로 오게된다면, 내 선택은 BCIT CST로 변하지는 않을 것 같다. 다만, 과거로 가고싶지 않을 뿐이다 ㅋㅋㅋㅋ
사실 이전 블로그들에서 했던 BCIT 관련 포스팅은 더 많았고, 더 디테일 했었는데 내 블로그를 가지고 조리돌림하면서 뭐 이거는 볼만하네, 저거는 이상하네 왈가왈부하는 넘들이 있었다. 게다가 비밀댓글로 이상한 소리를 달았다가 지운 사건도 있었고.. ㅎㅎㅎ 내가 이 세계 짬밥이 몇년인데, 누군지는 바로 눈치를 깠지만 모른 척하고 있는 중이기도 하다. 뭐 그래도 조리돌림 당하는 상콤한 기분이 그리 달달하지는 않기 때문에 이제는 너무 디테일하게 가지는 않고, 이 정도 선으로 가보려 한다. 구더기 몇 마리 때문에 장을 못담그는 상황이 오면 안되니깐.
혹시 BCIT, 그리고 CST에 대해서 더 궁금한 사람이 있다면 댓글 달아주기 바란다. 내가 아는 한도에서 순도 100%로 답을 해주겠다.
댓글 없음:
댓글 쓰기