[#1 컴퓨터구조] 1강 ~ 6강 학습 후기 || 패스트캠퍼스 컴퓨터공학 올인원 패키지
수강하는 이유
비전공자다 보니 컴퓨터공학 지식이 부족했다. 개발자를 목표로 하고 있는데 말이다. 특히 정보처리기사 필기를 공부할 때 많이 느꼈다. 이를 커버하기위해 교육 콘텐츠를 찾다가 패스트캠퍼스 컴퓨터공학 강좌를 발견했다.
"핵심 과목인 운영체제, 컴퓨터구조론, 자료구조 등 컴퓨터공학 필수 과목만 딱딱 있었고, 현직 개발자가 직접 강의하는 것에서 신뢰가 있었다. 그래서 선택했다."
학습 후기
1강 - 컴퓨터란?
2강 - 컴퓨터 분야의 위대한 8가지 아이디어
3강 - 컴퓨터의 구성요소 및 역할
1강~3강은 가볍게 들었다. 내용 자체도 앞으로 배울 컴퓨터구조론의 큰 그림이였다.
하지만 잘 이해하고 가야할 개념이 있었다.
정지 문제 (Halting Problem)
"튜링머신이 유한한 시간안에 모든 문제를 푸는 방법이 있는지 없는지 알아낼 수 있는가?"
증명은 귀류법으로 하면 된다.
가정 : halt(a,b)
임의의 문자열 a, 임의의 프로그램 b에 대해,
a를 입력으로 프로그램 b를 실행했을 경우를 계산하여 실행이 끝나면 true, 영원히 실행되면 false 반환
밑의 그림과 같이 problem(problem) 실행을 해본다.
결론은 "그런 거 없다"
컴퓨터가 프로그램과 문제가 주어졌을 때, 문제가 해결 가능한지, 아닌지는 판단할 수 없다...
컴퓨터는 입력을 받으면 계산을 하고 출력을 할 뿐이다...정도로 이해했다.
100% 이해한 것 같지는 않지만 일단 넘어갔다.
4강 - 기계어와 어셈블리어 고급 언어
고급언어(C, Python, Java) -> 컴파일러 -> 어셈블리어 -> 기계어 (컴퓨터가 이해할 수 있다)
High Level Language vs Low Level Language
고급언어는 인간, 저급언어는 기계언어라고 생각하면 될 듯 하다.
그러므로 당연히 개발은 고급언어로 하는 것이 효율적이다.
게다가 CPU 기술 발전으로 인해 기계어와 고급언어의 실행속도 차이는 줄어들었다.
고급언어 짱짱맨
디스어셈블리
강의에서는 Dev C++과 IDA를 이용해 디스어셈블리를 한다. 깔기 귀찮아서 VS로 했다.
저기 숫자랑 push ebp 뭐 여러가지 써있는데 이 한 줄을 인스트럭션이라고 부른다.
간단히 main()에 printf("Hello World")만 넣었을 뿐인데 저렇게 많은 인스트럭션이 있었다. 고급언어 짱짱맨
5강 - 성능
성능과 CPU, CPI에 대해 알아보는 시간이었다. 성능과 성능을 어떻게 측정할 것인가에 대한 강의였다. 수식이 몇 개 있었지만 내용 정리를 깔끔해게 해주셨다. 그래서 제공되는 PDF를 통해 복습하는데 도움이 됐다.
6강 - 전력
전력에 대해 알아보는 시간이었다. 컴퓨터는 파워 서플라이를 통해 전력을 공급 받는다. 그래서 전력에 대해 알아볼 동기가 있었다. 이 강의를 통해 CPU의 성능, 코어 수, 전압 등 전력에 영향을 받는 요소들에 대해 정리할 수 있었다.
만족했던 부분
- 피드백
1강에서 정지 문제에 대한 설명이 있었으나 이해하기 어려웠다는 의견들이 있었다. 그래서 집중적으로 강의한 영상을 추가로 업로드 해주셨다.
또한 질의응답을 통해 강사님의 답변을 직접 들을 수 있어서 직접 소통하기 어렵다는 인강의 단점을 어느정도 줄여주고 있었다.
(강의영상 바로 아래에 질문을 올릴 수 있게 되어 있다)
- 짧은 강의 길이
지하철에서 왔다갔다 할 때 한 강씩 듣기 참 좋았다. 자투리 시간을 효과적으로 활용할 수 있는 강좌다.
마치며,
6강까지 들어봤는데 시간 대비 효율이 좋다는 느낌을 받았다. 강의 호흡이 짧지만 현직 개발자가 직접 강의를 구성해서 내용에 대한 신뢰가 있기 때문이다. 그래서 지하철 탈 때 마다 한 강씩 듣고 있다.
컴퓨터구조를 시작으로 앞으로 2~3개월 동안 "패스트캠퍼스 컴퓨터공학 올인원 패키지"를 통해 자료구조, 운영체제를 공부할 계획이다. 나같이 개발자를 꿈꾸는 비전공자들에게 추천하고 싶은 강좌다.
패스트캠퍼스 컴퓨터공학 올인원 패키지 링크