https://pocu.academy/ko/Courses

들어가는 말

 

비전공자라면 꼭 들어야 할 과목.

 

그리고 COMP1500을 들었다면 COMP1000을 통해서 이제 POCU 대학교 1학년 (정도) 클리어라는 타이틀을 얻게 되는 과목.

 

 

목차

 

  • COMP 1500 수강 후 느낀점 
    • 개발자의 현실
    • 코드몽키의 미래
  • 수학과목을 들어야할 이유
    • 프로그래밍에 수학이 필요한 이유
    • 일타강사 포프킴 교수님
    • 대학온라인 강의와 비교
    • 수학을 통한 새로운 시각
    • 심도있는 코딩 
    • 학생들이 해주는 코드 리뷰
  • 수학과목의 단점
  • 수학과목과 함께 하면 좋을것들
  • 마치며

 

COMP 1500 수강후

 

프로그래밍 입문 (COMP 1500) 은 정말 힘들었다. 비전공자이기 때문에 더욱 열심히 해야지 라는 생각도 있었고, 프로그램을 배우기로 마음먹었으니 최선을 다하자는 마음이 더 컸기 때문이다. 하지만, 처음 프로그래밍을 접하고 comp1500을 들어본 사람은 알겠지만, 실습과 과제들이 만만치 않았다. 그냥 과제만 통과하는 게 아닌 리펙토링을 하고 테스트 케이스를 조금이라도 만드는 과정 속에서 새벽 2시까지 식은땀을 흘리면서 코딩을 해야 했기 때문이다.

 

아직도 기억나는 것은, 실습 1로 주어지는 소스 트리 git설정을 할 때, 오류가 나서 설정이 되지 않고 계속 무한 오류만 나는데 다른 사람들은 알려준 방법대로 설치하니 다 잘되었다는 말뿐이어서, 나 혼자만 못하나 보다라고 마음속으로 울면서 어떻게든 오류를 해결하였다. 물론, 많은 분들이 나보다 잘하고 과제나 실습을 잘하셨기 때문에 나만 느리게 따라가는 걸 수도 있다.

 

그리고 윈도에서 /r/n 줄 바꿈과 맥에서 /r의 차이를 알지 못해서 실습 중에 왜 코드가 돌지 않는지 문제를 찾는 과정 또한 힘든 과정이었다.

 

 

+마치 아래와 같이 같은 그림이 운영체제마다 다르게 표기되는것처럼 윈도우와 맥은 다른 존재이다

윈도우에서 나타나는 PNG
애플에서 나타나는 PNG

 

Ambiguous Decodes · Issue #3 · DavidBuchanan314/parallel-png-proposal

I have identified a potential (security?) flaw with this approach. I think it is possible to craft a file, where: decompress(a + b) != decompress(a) + decompress(b) This could happen if a ends midw...

github.com

그렇기에 COMP 1500을 수강하고 난 뒤에, COMP 1000을 시작하기까지 너무나 힘들어서 몇 주간 쉬는 기간에는 컴퓨터에서 VS studio는 한 번도 열어보지 않았다. 그냥 책을 읽고, 다른 분야의 지식을 습득하면서, 머릿속으로만 프로그램을 개발해 봐야겠다는 생각만 했었다.

 

그렇게 잠깐 숨을 돌리면서, 문득 든 생각은 탑 프로그래머이신 포프 님이 아닌 다른 개발자들은 어떻게 살고 있는지, 어떤 상황인지 알고 싶었다.

 

 

개발자 현실

 

1. 개발자 현실 - 블라인드 글

 

이직·커리어: 개발자들이 개발쪽으로 가려고 하는 비전공자들에게 절대 가지 말라는 이유

횽들 이거 토픽에 올리고 싶은데 회사명은 공개하고 싶지 않아서 공감되면 옮겨줄 형들 계시나요? 부탁드립니다~* 위 글은 비전공자를 비방하는 글은 절대 아니며, 어떤 상황이든 예외적 요소가

www.teamblind.com

현업에서 종사하는 개발자들이 쓴 글을 찾다 보니 블라인드에서 좀 유명한 글이 있었다.

 

그리고 그중에서 가장 눈에 뜨였던 부분은

 

"요즘 같은 시대에 상대적으로 취업 잘 되니까", "대기업 가면 높은 연봉받을 수 있어서." "비전공자들도 능력 있으면 쉽게 인정받을 수 있어서.", "성공하면 프리랜서로 일 할 수 있어서." 등 개발자가 되고 싶은 이유는 천차만별이고 그것을 비난하고 싶은 생각은 전혀 없다. 계기가 어찌 되었든 적성과 재능이 맞아 업으로 삼는 사람들도 많다.

 

그러나, 생각보다 쉽게 단순 생각해서 "잘 되는 사람 = 나"라고 생각하는 사람이 많다. 그 사람들을 무조건 비난을 하려는 것이 아니라, 보이는 거와 비교해서 고급 개발자가 되기 쉽다는 생각은 버려야 한다.

 

현실을 얘기해 주자면, 취업은 잘 된다. 우리가 상상하는 높은 연봉의 고급 개발자가 아닌, 그냥 빠르게 코딩과 개발을 할 줄 아는 사람들이 나 포함하여 절대다수라 이런 사람들은 쉽게 쉽게 뽑히고 쉽게 쉽게 잘린다. 고급 개발자들은 수요는 많은데 공급은 적다. 그래서 돈을 많이 받는다.

 

입사해도 개인 공부하면서 연봉 상승률도 높은 사람이 있는 반면, 연봉 상승률도 3% 이하인데 자기 계발은커녕 잠자는 시간도 부족한 워라밸을 갖고 있는 개발자도 많다

 

라는 부분들이었다. 필자의 아는 형이 개발자이고 필자에게 비슷한 말을 했기에 이 글은 대부분의 개발자의 현실을 반영함을 알 수 있다. 

 

 

2. 임베디드 개발자님의 글

 

회사 생활은 연봉이 다가 아니다 - 코드도사

최근들어 '프로그래머'라는 직업은 코로나 팬데믹과 4차 산업 혁명이라는 물결에 힘입어 조금씩 각광을 받고 있다. 특히 '네카라쿠배'로 불리는 거대 IT 기업들의 쏘아올린 공으로 프로그래머들

codedosa.com

대우가 좋은 it대기업의 자리는 여전히 한정적이다. 따라서 그런 대기업을 가기 위해서는 입사 조건을 통과해야 하므로 가기가 쉽지 않다. 그래서 많은 수의 프로그래머들은 중견 혹은 중소 규모의 회사에 입사를 하게 된다.

 

 

프로그래머라는 직업에 대한 고찰 - 코드도사

'프로그래머(혹은 개발자)' 라는 직업은 일반적으로 PC나 모바일에서 동작하는 프로그램을 개발하는 사람들을 일컫는다. 언뜻 보기에 뭔가 전문적이고 깊이가 있으며 사무실에서 우아하게 모닝

codedosa.com

인터넷 광고나 언론에서는 “프로그래머”에 대한 장밋빛 내용이 그득하다. 4차 산업의 필수 요소인 it수요가 많기 때문에 신입 프로그래머도 많은 연봉을 받을 수 있다고 현혹한다. “네 카라 쿠 배”와 같은 it서비스 대기업을 가면 신입도 연봉 6천만 원을 받을 수 있다고 하니 신입 프로그래머들에게는 꿈같은 연봉일 수 있다.
하지만... 실제로 인력 시장에서는 여전히 “경력”을 선호한다. 당장 내가 재직 중인 회사에서도 “신입”을 채용한다고는 하지만 실제로 거의 뽑지 않을뿐더러 신입은 지원조차 하지도 않는다.

 

위와 같은 글들을 보니, 대부분의 개발자의 인생이라고 작성 한 글들은 매우 어둡기 짝이 없었다. 평범한 개발자는 코더로 살아가고 그로 인해 받는 처우는 대기업 개발자의 발끝도 쫓아가지 못할뿐더러 평생 일해도 자신의 노력을 인정받을 수 없다는 게 그분들의 말씀이었다.

 

 

코드 몽키의 미래

 

COMP 1500을 듣기 전에 포프 님의 코드 몽키의 미래 동영상을 보았지만, 솔직히 와닿지 않았다. 프로그래밍은 언어만 배우면 그다음은 쉽지 않을까 라는 막연한 생각 때문이었고, 다른 부트 캠프에서 후기들을 보면 다들 언어를 빠르게 배우고 여러 가지 결과를 도출해 내는 것 같아 프로그래밍 언어만을 아는 것이 매우 중요하다 라는 생각이 있었기 때문이다.

 

하지만, COMP 1500을 수강하고 난 뒤에는 프로그래밍 언어는 작은 도구에 불과하고 실제로 이 도구를 제대로 사용하려면 방대한 지식이 필요하다는 것을 알게 되었고, 습득하기에는 많은 노력과 시간이 필요하다는 것을 깨닫게 되었다. 그렇기 때문에 많은 사람들이 적당히, 그저 그런 개발자가 될 수밖에 없고, 개발자로의 인생에서 뼈를 깎는 노력을 하는 사람은 극 소수기에 탑 프로그래머가 소수일 수 밖에 없겠구나 라는 현실을 알게 되었다.

주인공 로봇이 합체하는 것처럼, 이산수학, 운영체제, 알고리듬 등 많은 지식이 합체되어야만..진정한 개발자로 가는 길이지 않을까.. (출처 루리웹)

게다가 pocu가 최고 품질의 교육을 자랑한다고 하여도 이 강의를 수강한 모든 수강생이 스스로의 실력을 정규분포표의 끝자락에 위치하도록 최선을 다해서 노력하는 것이 아니라면, 대부분은 정규분포표 중앙값에 있지 않을까 라는 생각이 들었다. 누구나 특급 개발자가 될 수는 없으니까 말이다.

 

그래서 더욱 무서웠다. 내가 이 모든 것을 다 습득하고 인력 공급 시장의 하나의 상품으로써 내가 그만한 가치를 가질 수 있을지.. 어쩌면 그냥 그저 그런 코드 몽키가 되어 현재에 만족하고 살게 될지..

 

비전공자인 우리의 실력은 정규분포표 가운데에 수렴하는건 아닐까?...

 

이렇게 무서운 현실을 마주하더라도 탑 프로그래머가 된다고 믿는다면 수학과목을 들어야하고 그 이유들은 다음과 같다. 

 

 

수학 과목을 들어야 할 이유

 

1. 1% 개발자가 되려면 필요한 수학 지식

컴퓨터 공학을 전공했다면 알겠지만, 대부분의 컴공 필수 과목으로 이산수학이 있다. 그리고 이 과목에서 논리, 집합, 함수, 관계, 조합론, 증명 기법, 수학적 귀납법, 재귀 함수, 재귀 관계, 그래프 론, 등에 대하여 다루는 것을 알 수 있다.

비전공자가 컴퓨터 전공자와 경쟁하려면 이산수학 강의 수강은 필수이다.

K대학교의 컴공 필수 수강 과목들

 

그리고 또한 재미있는 개발자 유튜버인 Joma tech를 보면 왜 개발자가 수학을 써야 하는지 알려주는데, 개발 중 99%의 확률로 수학을 사용하는 일은 없지만 나머지 1%의 상황에서 고급 개발자와 평범한 개발자가 나뉜다고 말한다.

 

그만큼 알아두면 어디든지 써먹을 곳이 있다는 것이다. 그리고 POCU를 듣는 수강생이라면 탑 프로그래머가 될 것이기 때문에 수학은 깊게 파고들지 못하더라도 어느 정도 알아두어야 할 것이다.

 

움직이는 도넛 https://www.a1k0n.net/2011/07/20/donut-math.html

위의 도넛은 여러 수학공식을 사용한다

위의 공식을 이용해서 좌우 위아래로 회전하는 도넛을 만든다

why you need math for programming

 

일타강사 포프킴 교수님

 

일타강사 포프님 - 원본 https://blog.popekim.com/ko/2018/04/01/popetv-book-1.html

왜 포프킴 교수님의 수업을 들어야 하는지는 COMP1500에서 설명해 두었지만, 포프 TV에 올라온 영상 또한 참고해 보면 좋을 것 같다.

 

POCU Comp1500 후기

POCU COMP 1500 수강 후기를 써보려고 한다. 프로그래밍을 배우게 된 계기 행정병 복무 시절 대대 행정병으로 인사일만을 해도 바쁜데 재정담당관님의 육아휴직으로 인해 재정일까지 떠맡게 되었었

rocketnoning.tistory.com

좋은 선생 VS 나쁜 선생님

포프 님이 말씀하신 좋은 선생님의 조건에

1. 가르치는 과목에 대한 진지한 고민

2. 그것을 가르칠 수 있는 방법을 찾아내거나 발전시켜서 가르치는 것

이라고 한다

 

1. 가르치는 과목에 대한 진지한 고민

 

거의 모든 과목들이 그렇겠지만, comp1000만을 예를 들자면 이 과목에서는 수학 공식들을 증명하기보다는 수학을 어떻게 프로그래밍에 녹여 사용할지에 대한 고민들을 만나볼 수 있다. 특히 진법 변환, 수학적 귀납법, 확률과 통계 등 프로그래밍에 필요한 주제들을 배우면서, 이것들을 어떻게 프로그래밍으로 어떻게 녹여낼 수 있을지 학생들이 고민할 수 있도록 세심하게 설계된 과목이다.

 

2. 가르칠 수 있는 방법을 찾아내거나 발전시켜서 가르치는 것

 

다른 comp 1000 리뷰를 보았다면 알겠지만, 실습은 퀴즈, 코딩 혹은 논리게이트 작성 과제로 이루어져 있고, 과제는 논리게이트 및 코딩 과제로 이루어져 있다.

 

빌드 봇에게 빌드 요청을 할 때마다 어디서 틀렸는지 작은 힌트를 찾을 수는 있겠지만, comp1500과는 다르게 누군가가 작성해준 테스트 케이스가 거의 제공되지 않는다. 즉, 해설이 하나도 하나 없고 답만 맞고 틀림을 알 수 있을 때, 문제 풀이에 대한 생각을 다르게 접근해봐야 하고 잘못된 논리를 고치기 위해서 강의를 몇 번이나 다시 들어야 할지도 모른다.

 

하지만, 이런 힘든 순간을 겪으면서 나의 실력이 늘어나는 것을 경험할 수 있는데 이러한 방식은 포프 님의 수학 점수를 60점에서 100점으로 올린 방법과 매우 유사해 보인다. 포프 님이 경험하신 최고의 학습방법은 우리에게도 통한다는 것이다.

 

 

내가 수학점수를 60점 -> 100점으로 올린 방법

게임 프로그래머 김포프의 블로그

kblog.popekim.com

 

대학교 온라인 강의와 비교

 

그리고 왜 이 강의가 잘 설계되어 있는지 알아보기 위해서

온라인 대학교 강의와 비교해보았는데 (edx에 올라와있는 프로그래밍 확률 강의를 수강해 보았다)

 

  •  지루함
  •  homework에 해설과 답이 언제든 볼 수 있게 공개되어 있음
  •  코딩 숙제를 내주긴 하지만 교정해 주는 부분은 없음 (무료 강의라서 그럴 수도 있음)

 

등 많은 차이점이 있었고, 온라인 강의로 듣는다면 그저 시간만 낭비하겠다고 생각이 들 정도로 머릿속에도 별로 남지 않았다.

 

homework 의 문제
바로 뜨는 정답 그리고 해설...

 

(부트캠프와는 비교하지 않았다. 부트캠프는 클론 코딩을 중심으로 교육하기 때문에 비교군이 아니라고 고려된다.)

 

 

수학을 통한 새로운 시각

 

수학 과목을 들으면서 프로그래밍의 시야를 넓혀주었다고 느낀 부분에 대해서 간략하게 적어보았다.

 

2진수를 통한 컴퓨터 이해

프로그래밍을 공부하면서 구구단이 아닌 계산기를 만들어 본 적이 있는가?

컴퓨터는 2진수로 작동하는 것을 누구라도 한 번쯤은 들어보았을 것이다. 하지만, 2진수가 컴퓨터 내에서 어떻게 도는지 막연하게만 알뿐 실제로 어떤 식으로 계산이 되고 컴퓨터가 스스로 이해하는지는 알아본 적이 없을 것이다. 그리고 수학 과목을 통해서 계산기를 직접 만들어 보면서 어떻게 우리가 보는 10진수 16진수 등을 2진수로 계산할 수 있을지에 대해 배운다. 이를 통해서 컴퓨터에 대해서 조금 더 잘 이해할 수 있는 기초 체력을 키우게 된다.

 

+ 과제 및 실습에 논리게이트를 통한 과제들도 있고 이를 만드는데 굉장히 재미를 느낄 수 있다.

전가산기 만들기 - 바로님의 해답

 

백터와 행렬

수업시간에 벡터와 행렬이 주로 정형화된 데이터를 저장하는데 굉장히 좋은 도구로 사용된다고 하셨다. 그래서, 행렬을 실제로 서비스에 사용되는 모습은 어떨지 궁금해서 찾아보게 되었다.

 

 

우리가 학교에서 배운 아래와 같은 행렬 곱 또한 배우지만, 이게 전부는 아니다.

행렬을 통해서 좀 더 복잡한 아래와 같은 자료들의 관계를 나타낼 수 있다.

 

다음은 구글의 창업자 래리 페이지와 세르게이 브린이 만든 행렬 알고리즘이다.

 

https://icim.nims.re.kr/post/easyMath/837

위 그림은 웹페이지들을 노드(Node)로 대응시키고 웹페이지에서 다른 웹페이지로 하이퍼링크를 화살표(Edge)에 대응시켜 그래프로 나타낸 것이다. 예를 들어 노드 B에서 노드 C로 가는 화살표는 웹페이지 B에서 웹페이지 C를 인용했다(링크를 달았다)는 것을 나타낸다. 또한 노드 안의 숫자는 각 웹페이지의 중요도를 나타낸다. 위 그림에서 C와 E를 비교해보면 알 수 있듯이 웹페이지의 중요도는 단순히 링크가 많이 걸렸다고 해서 크지 않다. 또한 A와 C를 보면 두 웹페이지 모두 한 개의 웹페이지에서만 인용이 되었지만 인용을 한 웹페이지의 중요도가 클수록 중요도가 큰 것을 알 수 있다.

 

즉 홈페이지 간의 관계를

https://www.scienceall.com/미래를-여는-수학-⑦-google-검색의-비밀은/

 

행렬식으로 바꿀 수 있다는 것이다.

 

그리고 이를 각 열마다의 합으로 열의 원소들을 각각 나누어 주면 아래와 같은 하이퍼 링크 행렬을 만들 수 있다.

그리고 위의 하이퍼 링크 행렬 에게 G=mS+(1-m) E의 식을 대입하여 G(구글 행렬)을 만들어 낸다

더 자세한 내용이 궁금하다면 아래의 링크를 클릭해 글을 읽어보자.

http://matrix.skku.ac.kr/2012-e-Books/KMS-News-LA-Google-SGLee.pdf

 

확률과 통계

 

확률과 통계는 어디에 쓰이는지 알 것이라고 생각된다.

아래 예시처럼 포인트 뽑기나, 게임에서 아이템 뽑기, 강화 등등 아주 많은 곳에서 사용되고 있고, 많이 쓰이는 분야기 때문에 프로그래밍이 아니라도 많은 곳에 쓰일 것이다.

 

뽑기 카드를 통해서 포인트를 적립받는 네이버페이

 

리니지 집행검 업그레이드

리니지 집행검 +10강 에서 상위 등급의 아이템으로 강화시에, 개발자가 실수로 뽑기 확률을 잘못 계산한다면 아이템 가격이 떨어져서 회사에 엄청난 손실을 가져다 줄지도 모른다.

 

정규분포를 사용한 가우시안 필터

정규분포를 사용해서 노이즈를 제거하거나 블러 효과를 줄 수도 있는데 이는 특정분야에서만 사용되기 때문에 자신에게는 의미 없는 것 아니냐라고 할 수도 있지만, 블러 효과 뿐만 아니라 많은곳에 쓰일 수 있다는 가능성을 예제를 통해 엿볼수 있다. 

 

가우시안필터를 적용한 노이즈 제거

 

이렇게 수학은 프로그래밍에 많이 쓰일뿐더러 이를 응용할 수 있는 방법은 무궁무진 하다. 

 

 

프로그래밍 입문 보다 더욱 심도 있는 코딩

 

COMP 1500에서는 언어가 가진 여러 자료구조를 사용해서 하나의 자료구조 실습이 나오면 그것을 위주로 실습의 코드를 작성하였다면, COMP 1000에서는 자신이 알고 있는 모든 자료구조와 언어에서 지원하는 기능들을 사용해서 작성해 나가야 한다. 즉 자신이 어떤 자료구조를 사용해야 할지 하나하나 고민해 보면서 프로그래밍을 작성해야 하기 때문에 더욱 심도 있게 무엇을 써야 할지 고민을 하게 된다.

 

예를 들어 하나의 집합을 표현하기 위해서 Dictionary를 사용할지 혹은 List를 사용해야 할지 고민하고, 일반 Set을 쓸지 SortedSet을 사용할지 생각해 보게 된다.

 

 

질문에 답변을 해주는 실력자 수강생들과 코드 리뷰

 

실력 있는 수강생분들이 있기 때문에, 웹에서 검색해도 이해가 가지 않는 것들이 있다면 충분히 슬랙에 질문을 올려보자. 실력자 분들께서 답변을 해주실 것이다.

 

정렬 하는 기능중에 튜플을 통해서 어떻게 정렬이 되는지 궁금했다. 

필자가 올린 질문에 답변해주신 댓글들.

COMP 1500 슬랙방과 같이 많은 수강생 분들이 코드리뷰를 달아주신다

코드 리뷰를 보고 다시 자신의 코드를 돌아볼 수 있다면 단순히 문제를 해결할 뿐만 아니라 실력을 상승시킬 수 있는 좋은 기회가 될 것이다.

 

 

수학 과목의 단점

 

몇몇 과제가 정말 어려울 수 있음

comp1500과는 차원이 다른 과제를 맛볼 수 있다. 마치 전날 불닭볶음면을 먹고 장이 꼬인 느낌을 과제하며 느낄 수 있다.

 

필자는 자격증 시험을 준비하면서 comp1000을 들었는데 정말 둘 중에 하나를 포기해겠다는 생각을 몇 번을 했는지 모르겠다. 여기에 일까지 한다면? (프로그래머나 프로그래밍에 재능이 있던 비전공 수강생 제외) 일을 하면서 수학 과목을 듣는다면 몇몇 실습이나 과제는 끝내지 못할 가능성이 아주 높다.

 

마치 불닭볶음면을 먹은 인기 유튜브 처럼 될것이다.... 흐흐

문제를 해결하면서 알겠지만, 문제 해결 과정 중 막히는 부분이 있다면, 새로운 방법을 시도해 보더라도 쉽게 자신의 생각과 다른 관점으로 문제를 바라보기가 쉽지 않기에 몇몇 과제를 풀기 위해서 아주 많은 시간과 고민을 거쳐야 할 수 있다. 정말 어렵다..

 

프로그래밍엔 얼마나 천재가 많을지 가늠조차 못하게 만들어줌

강의를 들으면서, 포프 님이 '수학의 신'과 '하드웨어의 신'이 컴퓨터의 성능을 이끌어 낸다고 말씀해 주신다. 우리는 순수 수학을 연구하는 학자는 아니지만, 수학 공식을 적용할 줄 아는 사람이 되어야만 한다. 그렇기에, 수학 공식을 어느 정도 이해해야 어디에 가져다 쓸지 알게 되고 어떤 공식을 써야 할지 문서를 읽고 이해하는 정도는 되어야 한다는 것이다. 즉, 특정 분야의 프로그래밍 챌린저가 되기 위해서는 얼마나 노력해야 할지 감조차 잡히지 않음을 간접 체험할 수 있는 과목이다. (평생 수학을 사용할 일이 없는 분야도 있겠지만..)

 

어디서 본것같아 보이는데......
머신러닝을 소개해주시는 유튜브 중.... 이게 무슨말인가요? 선생님...

 

수학 과목을 들으면서 같이하면 좋을 것들

 

수학 과목을 들으면서 마크업 언어와 익숙해지기

프로그래머로서 일하다 보면 빠질 수 없는 게 문서 작성일지도 모른다. 그리고 만약 notion을 사용한다면 마크업 언어와도 친해지는 좋은 계기라고 생각한다. 수학 공식을 작성하면서 마크업 언어와 조금씩 친해진다면 언젠가는 써먹을 일이 올지도 모르니 배워두어서 나쁠 것은 없다고 생각한다.

 

https://www.notion.so/14-1f5fa00916414a43b4c7d77ee7dcf9ed

+ 참고하면 좋을만한 블로그 

 

14. 수식을 씁시다!

차례

www.notion.so

 

MS 공식문서 등 궁금한 것 찾아보기

 

과제들을 진행하다 보면 궁금한 것들이 생길 수 있다. 미니맥스나 외판원 문제와 같은 여러 문제들을 궁금하면 검색해 보라고 던져주는 주제들도 있고, 필자 같은 경우 분할 정복 재귀를 만들면서 parallel for문을 사용하면 어떨지 공부하는 계기가 되었고, 가우시안 필터를 만들면서 이미지 처리를 더 빠르게 돌리기 위해 unsafe구문을 찾아 적용해 보기도 했다.

궁금한 부분들이 더욱 생길 것이고 그 궁금증을 스스로 해결할 수 있도록 여러 가지 정보를 찾아보자.

비트맵이 구성되는 요소들  - 원본 https://seongyun-dev.tistory.com/3

 

 

 

데이터 병렬 처리(작업 병렬 라이브러리)

TPL(작업 병렬 라이브러리)에서 .NET의 소스 컬렉션이나 배열의 요소에 대해 동일한 작업을 동시에 수행하도록 데이터 병렬 처리를 지원하는 방법을 알아봅니다.

docs.microsoft.com

 

프로그래밍 문제 풀어보기

슬랙에서 다른 수강생분이 올려주신 사이트이다. O(n)의 속도를 비교하는 문제를 풀어보면서 다른 문제들도 보았는데 풀어보면 좋을법한 문제들이 꽤 있어 시험을 보기 전에 혹은 심심풀이로 가끔씩 문제를 풀어보는 것도 재미있기에 추천한다.

 

Math

Interviews.school – complete interview preparation guide.

interviews.school

 

마치며

 

나는 왜 프로그래머가 되려고 하는가?

 

필자는 스스로 왜 프로그래머가 되려고 하는지 COMP1500을 처음 수강할때부터 질문했고 이 물음에 대한 답을 찾기 위해 노력했다. 

 

그리고 나만의 이유를 적어보자면, 프로그래밍을 통해서 나의 상상력을 발휘하고 싶어서 이다. 

 

대학교 졸업 후에 스타트업 대표 분들을 만나보는 경험을 하면서, 각자 자신만의 가치관과 아이디어를 실현시키는 삶을 살고 있었고, 하고 싶은 일을 하는 그 사람들이 부러웠다. 하지만 나는 그러한 결단력과 실행력이 항상 부족했기에 아이디어만 생각만 할 뿐이었다.

 

그럼에도 나도 언젠가 나만의 서비스를 만들어서 다른 사람들에게 ‘행복’이라는 가치를 제공해 줄 수 있는 사람이 되고자 했고, 가치를 전달할 매개체로 한 분야의 ‘지식’을 공부하기 위해 나름의 노력을 했다.

 

하지만, 공부를 할수록 불안한 미래를 생각하며 집중하지 못했고, 흥미를 느끼지 못했다.

 

그렇다면 내가 정말 원하던 것은 무엇이었을까?

 

이런 고민을 생각하던 때에 우연히 VBA를 통해서 업무 자동화를 해보며 프로그래밍의 강력한 힘을 느끼게 되었고, 유튜브 알고리즘에 이끌려 포프 TV를 만나면서, 포프 님이 일대기를 듣게 되었다.

 

법대를 나와서 캐나다 대학교를 다니시고, 취업까지 하고, 인정받는 프로그래머가 되는 이야기는 스티브 잡스가 자신의 꿈을 이루기 위해 대학교를 자퇴하는 이야기보다 더욱 내게 가깝게 다가왔다.

 

나는 꿈을 꾸고 있는가? 아니면 남이 가리키는 인생을 살고 있는가?

어쩌면 나는 지금까지 부모님이 원하는 혹은 모두가 보았을 때 소위 괜찮은 직업을 가져야 행복한 삶을 누릴 수 있다고 생각하며 살아온 것은 아니었을까?

 

물음에 답을 하기 위해서 나는 내 마음속에 오래전부터 있었던 ‘행복’을 제공해 주는 서비스를 만들고 싶다는 꿈을 다시 생각하게 되었다. 그리고, 내가 경험했던 강력한 프로그래밍의 힘을 통해서 그 가치를 만들어 낼 수 있는 능력을 길러야겠다고 마음먹게 되었다.

 

프로그래머로 일을 하게 되면, 어쩌면 미디어에서 말하는 장밋빛 인생이 아닌, 매 순간이 고통스러운 선홍빛 삶의 연속을 경험하게 될지도 모른다. 하지만 결정했으면 어떻게 되더라도 최선을 다해 꿈을 이뤄보려고 발버둥 쳐보는 게 남은 삶을 불평으로 낭비하지 않는 고귀한 태도가 아닐까?

 

 

수학 과목을 듣기 전에

 

만약 수학과목을 듣기 전이라면 ‘왜 프로그래머가 되려고 하는가?’의 필자처럼 나의 의지가 충만한지 이 글을 읽는 분들이 이 수업을 들으면서 혹은 듣기 전에 스스로에게 꼭 한번 질문해 보았으면 했다.

 

그래도 수학 과목부터는 프로그래머라는 직업을 가지기 위해서 적어도 6개월 정도는 코딩을 해보았을 것이며, 자신에게 굳은 신념이 있지 않다면 여기가 더 이상의 기회비용을 낭비하는 것에 멈춰야 하는 지점이지 않을까 라는 생각이다.

 

물론, 이미 컴퓨터 공학을 전공하였거나, 빠르게 취업부터 하길 위한다면 수학 과목부터는 듣지 않고 입문 과목 후에 빠르게 부트캠프를 가는 것이 현명한 방법이라고 생각한다.

 

그만큼 수학 과목부터는, 컴퓨터를 이해하고 이를 활용해 나가는데 필요한 기초지식을 쌓아 나가는데 매우 중요한 수업이지만, 그만큼 프로그래밍을 나의 삶으로 대해야 함을 알려주는, 프로그래머로서의 시작을 알리는 전환점이며, 앞으로 왜 여러 CS과목을 들어야 하는지 알려주는 과목이기도 하다.

 

COMP 1000은 단순한 수학 증명, 문제풀이가 아닌, 프로그래밍에 수학을 얹어서 프로그래밍을 바라보는 눈을 뜨게 만들어 줄 것이기 때문이다.

 

다시 말해, 단순히 코드를 작성하는 것에 급급해서 큰 숲을 보는 걸 놓치고 있다면 수학 과목을 듣게 된다면, 산 정상에서 좀 더 큰 그림을 볼 수 있는 기회가 될 것이다. 

 

 

 

수학과목의 끝에서

 

COMP 1500 후기에서도 작성하였지만, 우매함의 봉우리에서 절망의 계곡까지 내 실력이 부족함을 느끼는 지점까지 내려오게 되었다. 앞으로 더 많은 과목을 공부해야 어느정도 나의 실력이 상승되었다고 느낄지 아직도 갈길이 멀어 보인다.

 

그럼에도 내 실력은 어제보다 나아지고 있으며 앞으로도 남은 POCU과목을 수강하기위해서 더욱 노력할 것이다. 

 

모두들 POCU를 통해서 성장하고, 같이 탑 프로그래머가 되기를 염원해본다. 

728x90
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기