POCU COMP1000 소프트웨어 공학용 수학 후기

수강 목적

지난 COMP1500 수업 이후 많은 것을 얻어갔다고 생각했기 때문에 POCU 아카데미의 로드맵을 쭉 따라가서 "전문 프로그래머가 되기 위한" 과정을 밟아가고 싶었다. 현재 총 7개의 로드맵이 열려있는데, 이제 2개의 로드맵이 끝났다.

 

소프트웨어 공학용 수학 수업의 설명에서 컴퓨터를 이해하는데 중요한 수학을 다루고, 특히 논리적 사고를 강조한다고 한다.

본인은 학창 시절 수학 수업을 매우 좋아했다. 오랜만에 수학 수업을 듣게되어서 설레기도 했고 다시 복습도 하고 이제는 프로그래머로서 알아야할 논리적 사고를 학습하고 수학 지식들을 정리하여 배울 수 있다는 점이 매력적으로 다가왔다.

 

물론 이제 3년차 개발자이기 때문에 왜 굳이? 직무에 필요한 기술들을 더 공부하는게 더 중요하지 않아? 라고 생각할 수 있지만 아무리 쉽고 기본적인 내용이라 할 지라도 내가 모르는 디테일한 부분이 있고, 그것을 정리하여 얻어가는 내용이 있다면 그것으로 가치가 있다고 생각했다. (물론 직무에 필요한 내용도 꾸준히 학습하고 있다..)

 

어떤 분야이든 기초가 단단한 프로그래머가 되어서 어떤 분야로 가더라도 흔들리지 않는 힘을 얻고 싶었고, COMP1000 수업은 그 과정을 밟아가기 위한 단계로서 수강을 선택하게 되었다.

 

강의 내용

제목에서 말한 '소프트웨어 공학용 수학' 을 통해 어느정도 유추해 볼 수 있다.

https://pocu.academy/ko/Courses/COMP1000 (주간 일정 참고)

 

처음에는 '수학' 이라는 단어에 꽂혀서 프로그래머에게 무슨 수학이 필요하다는 걸까? 학창 시절에 배운 미적분을 배운다는 것일까? 이런 생각이 들었다.. 

 

아니면 대학교 시절을 떠올렸을 때 디지털 제어라는 수업을 들은 적이 있는데, 연속 신호를 이산 신호로 바꾸면서 FFT 와 같은 개념을 직접 구현하는 것들이 나오는 건가? 싶었다. (POCU 수업을 들으면서 학부 시절 들었던 전자공학 수업들에서 했던 코딩 내용들이 떠올랐다..!)

 

실제로 수업에서 컨볼루션이라는 개념을 배우고 과제로 등장하는데, 이는 대학교에서 머신 비전이라는 수업으로 정말 뼈저리게 코딩을 했었기에 다시 복습을 하는 개념이기도 했고 반갑기도 하고 중요한 개념이라는 것을 다시 한번 느낄 수 있었다.

 

각 주차별 내용을 보면 프로그래머에게 필요한 여러 수학적인 내용을 배운다. (ex: 진법, 2진수, 컴퓨터 문자 표현법, 부동 소수점 수, 집합, 명제, 불 대수, 논리 회로, 조건 명제, 과학적 사고방법, 비트 마스킹, 수학적 귀납법, 분할 정복, 벡터, 튜플, 행렬, 경우의 수, 순열, 조합, 확률, 확률 분포, 이항 분포, 통계, 정규 분포 도수 분포표, 히스토그램.. 진짜 엄청 다양하다)

 

특히, 개인적으로 컴퓨터의 문자 표현 방법이나 부동 소수점 수에 대해서 굉장히 블랙박스였던 지식들을 하나씩 화이트박스로 만들어가는 과정이라고 느낄 수 있는 과정이었다.

 

또한 과학적 사고 방법에 대한 이해를 하면서 프로그래머로서 가져야할 논리적 사고력 및 습관이 무엇인지 깨달을 수 있었다.

 

강의 실습 & 과제

POCU의 모든 수업은 동영상 강의와 함께, 총 11번의 실습과 4번의 과제가 존재하는 것 같다. (COMP1500과 COMP1000은 그러했다.)

 

가장 궁금했던 것은 '수학' 과목에 대해서 어떻게 실습과 과제를 진행할 것인가?가 궁금했다. 

 

물론 프로그래밍 실습 과제도 있었지만, 퀴즈형식으로 실습을 출제되면서 2진수의 사칙연산, 진법 변환, 부동 소수점 및 유니코드에 대한 지식들을 개념에 그치지 않고 직접 손으로 계산해가면서 퀴즈를 치뤘기 때문에 아직도 머릿속에 남아있는 것 같다..

 

기본적으로 COMP1500이 선수 과목이기 때문에 실습과 과제 중 프로그래밍이 필요한 실습&과제는 C#으로 프로그래밍이 진행되었다.

특히, 조건 명제 부분은 프로그래밍으로 어떻게 과제가 나올지? 궁금했는데, 과제 명세를 보고 실제로 코드에 적용하여 통과하는 경험을 하면서 수업에서 배운 수학적 내용이 이렇게 코드에 녹여나는구나! 경험도 할 수 있었다.

 

또, 불 대수를 이용하여 논리 게이트 설계 과제도 나왔었는데, 여기서는 정말 불대수가 머리에 박힐정도로 과제가 잘 안풀려서 머리를 싸맸던 기억이 있다..

 

또, 부동 소수점 계산을 아무렇지도 않게 했던 습관에 대해 반성하는 시간도 가질 수 있었다.. 이를 저격한 테스트 케이스가 있었기 때문이었는데, 정말 알아차리기 힘들었다.

 

생각해보면 COMP1500 보다 과제에 많은 시간을 들였던 것 같다.. 그만큼 부족한 부분이 있었고, 그 부분을 채워나가면서 많은 부분을 깨닫고 익힐 수 있어서 좋았던 것 같다.

 

중간 & 기말 시험

POCU 아카데미의 학기에는 중간 고사와 기말고사가 있다.

웹캠과 신분증을 준비해야하고, 정말로 대학교에서 시험을 보는 듯한 경험을 할 수 있었다.

대학교 3학점 시험 시간과 동일하게 1시간 45분 정도 시험을 보게 된다. 

 

소프트웨어 공학용 수학의 경우 퀴즈에서 수차례 훈련했던 내용들과, 제공해주는 연습문제를 기반으로 많은 연습을 하고나서 시험에 임해야 시간 부족이 없을 것이다.

 

중간 고사때는 그래도 많은 연습을 했는데, 기말 고사는 계산기를 쓰다보니 생각보다 시간이 많이 걸렸다.. (처음에는 계산기 사용법이 익숙치 않아서 여기서도 시간을 좀 많이 썼던 것 같다..;;)

 

점수는..?

과제 1은 제출하지 못했다.. 이 과제는 아쉬웠던 것이 현업이 너무 바쁜 시기여서 과제를 볼 시간이 너무 없었다.. 제출날 밤을새서 도전했지만 제출 시간을 인지하지 못해서 0점 처리되었다.. 너무 아쉬운 마음에 다른 사람들이 공유해준 코드를 보면서 내 코드가 100점인지 아닌지 계속해서 뇌버깅하면서 비록 0점일지라도 나는 이 과제에서 만점에 가까운 지식을 얻었다! 라고 만족할 수준 까지 집요하게 팠던 것 같다. (공유해주신 분들 모두 감사합니다..)

 

시험에서도 검토를하며 틀린점들을 보완하면서 왜 이런생각을 못했을까? 라는 여러 아쉬움이 있었지만, 모두 정리하여 내 것으로 만들었다.. 과제 하나를 0점으로 내서 통과를 할 수 있을지 걱정했지만 다행히 통과는 했다..

 

느낀점

이번 수업에서는 컴퓨터의 동작원리에 필요한 기본 지식을 배우는 느낌이었다.

특히, 중간 중간 뚫려 있었던 지식들을 채워 넣는 느낌을 받았다. 

예를들면, 부동 소수점 수의 IEEE574 표기법을 직접 경험해보면서 부동 소수점의 오차가 있을 수밖에 없다는 사실과 오차 범위를 실제로 그려보면서 머릿속에 각인시킬 수 있었다. (이 외에도 위에서 언급한 논리 설계, 2진수, 진법 변환 등의 과제를 통해 각 개념들을 하나씩 깊게 이해할 수 있었다.)

 

이 과목에서 나오는 정말 여러 개념들이 있었는데, pope 선생님이 그 개념의 배경을 아주 상세히 알려주셨기 때문에 이해가 잘되었고 여러 궁금증들이 해소가 될 뿐만 아니라 머릿속에 박혀있기 까지 하다. 특히 통계의 히스토리 부분이 재밌었다. (역시 돈을 주고 듣는 수업이다 보니 더 잘 기억이 되는 것 같다..)

 

 

이제 POCU 수업의 2/(7 to 12) 을 들었다. 다음 학기는 언매니지드 프로그래밍 수업을 들을 예정이다. 느리지만 꾸준히 컴퓨터 공학 지식들을 배워 나가서 전문 프로그래머로서 성공하기를 갈망한다.

 

'POCU' 카테고리의 다른 글

POCU COMP1500 실무 프로그래밍 입문(C#) 후기  (0) 2023.08.21

댓글

Designed by JB FACTORY