CSAPP 공부 - 시작하며
일 하나 더 벌이기!
학원 수강을 마치고 난 후, 한 달여간 게으르게 지냈다. 학원 시험을 위해 서버 베이스 코드를 다듬고 추가 개발을 진행해야해서 강제성 있는 일정이 조금 잡혀있기는 한데, 일정이 빡빡하지는 않아서 늘어져있었다. 리트코드 스터디에 참여하면서 야금야금 리트코드 문제를 풀기야 했지만, 1주일에 5문제로 백수(…) 상태인 나에게 빡빡한 일정은 아니었다.
요컨대, 뭔가 하기는 하는데 딱히 능동적으로 무언가를 하지는 않았다는 것. 바쁘지 않았다는 말씀이다. 하지만 내가 지금 어떤 상태인가? 공식적으로 백수(…)의 몸이다. 바쁘지 않았다는 것은 부끄러운 일이다!
하여, 블로그에 “나 공부합니다”하고 떠벌려서 일을 벌일 심산이다. 그러면 공부하는 것에 대해 최소한의 “강제성”이 생기지 않을까. 사실 공부는 그냥 알아서 해야하는 건데 마음이 안잡혀서 이렇게라도 하려는 것이다.
무슨 공부?
제목에 써붙여놓았다시피 CSAPP이다. CSAPP은 Computer…
어… Computer…
…
CSAPP은 Computer Systems: A Programmers’ Perspective의 줄임말이다. 컴퓨터 공학에서 매우 유명한 교재이다. 이 책을 교재로 하는 CMU(카네기 멜런 대학교)의 강의가 온라인으로 공개되어 있어서 이를 토대로 공부할 생각이다.
왜?
일단 취업을 위해서 기본기(CS 지식)를 더 탄탄히 해야겠다고 생각했다. 그래서 아래 교재들을 후보로 올렸다.
- Windows via C/C++: 이건 당연히 완독해야 하는 책이다. ‘나 공부해요!’라는 프로젝트로 삼기엔 부끄러우니, 입 닫고 평소에 공부하기로 결정했다…
- Windows Internals: Windows vis C/C++을 읽고 나서 천천히… 펼쳐보기로 했다.
- TCP/IP Illustrated 1: 흥미를 갖고 사두긴 했지만, TCP/IP 스택보다는 조금 더 일반적인 CS 지식을 우선시하기로 했다.
- Database System Concepts: 이것도 꽤 오래 고민했는데, 이것도 조금 더 넓은 범위의 CS를 익히는게 우선일 것 같아서 미뤘다.
- The Elements of Computing Systems(nand2tetris): 매우 흥미로워서 끝까지 고민했는데, CSAPP이 x86-64 어셈블리를 직접적으로 다룬다는 점에서 CSAPP을 골랐다.
- Operating System Concepts(공룡책): 사두긴 했는데 살짝 읽어봤을 때 너무 개론에 가까운 책이라 효율성 측면에서 미뤄두기로 했다.
- Introduction to Algorithms(CSLR): 이건 아마 CSAPP 공부 후에 읽어볼 것 같다. 알고리즘에 대한 이론적인 접근에도 호기심이 있다!
- [채택] Computer Systems: A Programmer’s Perspective(CS:APP): 다루는 주제가 넓고, 지나치게 일반화/추상화 된 가상의 아키텍처가 아닌 x86-64를 기반으로 접근한다는 점이 마음에 들었다. 그리고 CSAPP이라는 교재가 가지는 위상이 독보적이라는 인상이 있었다.
공부 방법
앞서 언급했듯이 CMU 강의 Introduction to Computer Systems가 온라인에 공개되어 있어서 영상과 슬라이드 등의 자료를 참고하여 강의를 정리하고 개인적으로 CSAPP 교재를 읽으며 복습할 생각이다.
그리고 CC 캡션이 없어서 당황했는데, 윈도우에 탑재된 라이브 캡션 기능으로 자막을 볼 수 있다. 거 참, 새삼 좋은 세상이구나.
아무튼 공부, 시작해보겠습니다. 가보자고~
댓글남기기