POCU 아카데미 COMP100 Full Course 과목을 5월 1일부터 8월 14일 까지 들었습니다. 후기를 작성해보도록 하겠습니다.
Index
- 강의를 듣기 전
- 강의 간단소개 및 간단정리
- 강의에서 배운점 및 좋았던 점
강의 듣기 전 저의 상태를 정리해보겠습니다.
어려운 부분은 많았지만, 시간투자를 하고 질문도 하면서, 무리없이 코스를 잘 소화했습니다.
(질문 받아주신 분들에게 정말 감사를 드립니다.)
수강신청 당시에 이 과목을 스킵할까 들을까 고민을 정말 많이 했습니다.
COMP 1000을 스킵하고, 2200 C언매니지드 프로그래밍과 2500 개체지향 프로그래밍 및 설계를 들을까 생각했습니다.
(이유로는 현업 일을 할 때에는 Java 기반의 코드를 많이 짜기 때문에, Java의 개체지향 프로그래밍을 통해 심도 있게 배우고 싶었던 마음이 컸습니다.)
하지만, COMP 1000을 듣기로 생각한 이유는 다음과 같습니다.
1
COMP 1000 에서 제공하는 강의 소개 영상에 포함된 영상을 보고 마음을 고쳤습니다.
( 프로그래머에게 수학이 필요한 이유)
-> 저와 같은 고민을 하신다면, 강의 소개영상은 무료로 들을 수 있기 때문에 들어보시는걸 추천드립니다.
2
컴퓨터가 실제로 어떻게 작동하는지 모르는데, 소프트웨어 개발자 라고 할 수 있는가? 라는 생각도 들었습니다. (가장 크게 작용한 요소.. 많이 부족한 상태라고 스스로 판단했습니다.)
3
COMP 1500에 영상에서 "COMP1000 에서는 ~한 것들에 대해 배울 것입니다." 라는 이야기로 저의 관심을 끌었습니다. (실수 IEEE754 에 대한 이야기였던거 같습니다.)
( 마찬가지로 현재 COMP1000 강의에서도 2200에서 ~한 것들을 배웁니다 로 저의 관심을 끌었습니다. )
이전에 배웠던 개념에 계속해서 새로운 개념들을 위로 쌓아가면서, 기본기를 만들어 준다고 생각했습니다. 또 학생들의 호기심을 자극해서, 정석 코스대로 수업 듣게 해주는 느낌(?)도 들었습니다.
POCU 추천 코스는 아래의 사진 같습니다.
(저는 최대한 순서대로 듣기로 결정했습니다. 각 코스에서, 미리 알고 있어야 할 내용들이 존재한다고 판단했습니다. )

이 강의를 들은 사람 입장에서 한번 어떤 것들을 배웠는지 간단하게 정리해보겠습니다.
전반기에서는 숫자 자료형들 중 실수를 어떻게 저장하는지 알게 되었습니다.
직접 손으로 계산하고 비트패턴으로 확인할 수 있어서 정말 유의미한 시간이였고,
왜 실수형들은 근사치로 존재하는지에 대해서도 알 수 있어서 기뻤습니다.
또 우리의 다양한 문자들을 어떻게 컴퓨터에서 처리하는지에 대해서도 좀 더 자세히 알 수 있어서 흥미롭고 좋았습니다!(유니코드)
컴퓨터에서 회로가 어떻게 작동하는지, 우리가 왜 최적의 코드를 작성해서 회로를 조금 써야하는지(비용절감) 에 대해 알게 되어 좋았습니다.
후반기에서는,
수학적 귀납법이 무엇인지, 어떻게 적용해야하는지, 프로그래머에게 필요한 사고의 흐름(?)이 무엇인지 알게 되었습니다.
컴퓨터에서 사용되는 백터 개념에 대해서도 자세히 알 수 있었습니다.
후반기에서 중점적으로 다뤘던 내용은, 경우의 수에서부터 통계까지라고 생각합니다.
실제로 정규분포를 왜 만들고 어떻게 해석하는지 알게 되었습니다.
또한, 프로그래밍할 때 확률적 알고리즘이 AI 분야에 사용되는 것을 알게 되었고, 그 기본을 배운거 같아서 즐거웠습니다.
프로그래머의 기본이 되는 해쉬함수 및 점근 표기법 개념에 대해 알게 되었습니다.
https://www.youtube.com/watch?v=S7vni1hdsZE
( 이전에 포프님의 영상을 한 개 보고 굉장히 내가 무지하구나라는 걸 알게 되었던 영상인데 썸네일이 팩폭이여서 조금 슬펐던 기억이 납니다. 영상을 보시면 더 열심히 해야겠다 생각할 수 있습니다.)
강의 정리 및 소개는 간단하게 이렇게 정리할 수 있을거 같습니다.
좀 더 자세한 내용은 아래 링크를 들어가셔서 확인해보셔도 좋을거 같습니다.
https://pocu.academy/ko/Courses/COMP1000
이제 강의에서 배웠던 것들중에 기억에 남았던 내용 어떤 부분이 좋았는지 작성해보겠습니다.
1 컴퓨터에서 실수 저장 방법 IEEE754
강의를 듣기 전부터 알고 싶었던 내용이었습니다.
강의에서는 32bit float 자료형을 비트패턴으로 바꾸는 것을 배웠고, 그에 필요한 과학적 표기법 개념(지수부, 가수부)을 알게 되었습니다. 또한 32bit float 형의 유효숫자 6~9라는 것의 의미도 알게 되었습니다.
강의에서는 32bit float을 기본으로 설명하였지만, 같은 맥락에서 다른 크기의 자료형들도 이해할 수 있는 개념이 생겼습니다.
왜 실수형 자료들은 근사값으로 밖에 표현하지 못하는가 에 대한 답변을 할 수 있게 되었습니다.
2 컴퓨터에서 문자 저장하는 방법 UNICODE
내가 많이 설정하고 사용했던 UTF-8,UTF-16, 은 ENCODING을 어떻게 하느냐 방식을 의미하는 것이고, UNICODE는 문자표를 만들어서 모든 문자에 대응하는 코드포인트를 두고 사용하게 하는 개념이라는 것을 알게 되었습니다.
( 이 개념에 대해 어렴풋이만 알고 있었는데, 제대로 알게 되어서 정말 좋았습니다.)
3 확률적 알고리즘
이 확률적 알고리즘의 개념에 대해 알게 되었습니다.
확률적 알고리즘이란 난수를 발생시켜 진행과정을 결정하는 알고리즘인데, 쉽게 말하자면, 어떤 사건이 발생할 확률에 따라 그 다음 과정을 진행시키는 것입니다.
이 방식을 사용하면, 결정적 알고리즘보다 빨리 결과값을 도출할 수 있고, 높은 확률로 원하는 결과값을 얻을 수 있습니다. (물론 틀릴확률도 있겠지만요)
이 개념이 요즘 핫한 AI 분야에 많이 사용된다고 하는데, 솔직히 전부 이해가 된 것은 아니지만, 이런식으로 AI 머신러닝을 시킨다고 하니.. 아 그렇구나만 하고 넘어갔습니다. 그래도 만약 머신러닝쪽을 공부하게 된다면, 사전지식으로는 사용하면 되겠다고 생각합니다.
가장 기억에 남는 것은 불량품 검사횟수를 구하는 방법입니다.
불량품을 발생하는 확률이 존재하고, 이를 통해 "몇번 검사하면 ~%의 신뢰도로 제품들의 하자가 없다" 라는 것을 알게되는 방식입니다.
설명을 들었을 때는 이해했지만, 다시 스스로 생각했을 때는 헷갈려서 많이 봤던거 같습니다.
이런식으로 불량품을 검사하고 ~%의 확률로 하자가 없어 라고 생각하는 방식이 새로운 생각하는 방식을 알게된거 같습니다.
4 점근표기법 (빅오표기법)
매번 알고리즘을 공부할 때 마다, 빅오표기법에 대해 이야기하고 대략적으로 개념만 알고 있었습니다.
요번 강의를 통해서, 내 코드가 빅오표기법으로 했을 때 어느정도의 실행속도를 요하는지 알게 되었고, 빅오표기법의 개념을 확실히 알게되어 좋았습니다.
요번 강의는 개인적인 일들도 많았고, 정신과 몸이 늘어지면서 힘들었던거 같습니다.
(날씨 때문인지 의지 때문인지..ㅠㅠ)
그래도, 풀 코스를 통과하고자 하는 의지하나로 꾸역꾸역 과제를 열심히 했고, 좋은 결과가 있어서 다행이라고 생각합니다.
또, 이렇게 deadline이 존재하고 과제라도 해서 100% 늘어지지 않고 최소한의 공부를 하지 않았나 생각도 들었습니다. (환경설정의 위대함..)
기본기를 배울 수 있는 정말 좋은 강의였다고 생각합니다.
질문을 적극적으로 하지 못한것에 대해 반성합니다.
다음코스 들을 때에는 적극적으로 생각하고 찾아보고 공부하고 질문 더 할 수 있도록 해야겠습니다.
마지막으로 pocu academy 모든 관계자 분들 좋은 강의 제공 해주셔서 감사합니다.
또 질문에 대답 잘해주신 같이 공부하는 학우분들 감사합니다!
