컴퓨터공학 300 주제 지도 — 15개 분야, 300편으로 쓰는 공부 겸 책 원고 시리즈
컴퓨터공학을 처음부터 다시 정리해 보기로 했다. 목표는 두 가지다. 쓰는 사람과 읽는 사람이 같이 공부가 될 것, 그리고 다 쓰고 나면 책 원고로 묶을 수 있을 것. 그래서 주제 하나에 글 하나, 모두 300편을 쓴다. 이 글은 그 300편의 지도다. 앞으로 올라오는 글은 모두 아래 번호를 단다.
분류 기준
주제를 혼자 고르면 좋아하는 쪽으로 기운다. 그래서 뼈대는 ACM·IEEE-CS·AAAI 가 함께 낸 컴퓨터공학 교육과정 권고안 CS2023의 지식 영역(Knowledge Areas) 17개에서 가져왔다. 알고리즘 기초(AL), 컴퓨터 구조(AR), 인공지능(AI), 데이터 관리(DM), 프로그래밍 언어 기초(FPL), 그래픽스(GIT), HCI, 수학·통계 기초(MSF), 네트워크(NC), 운영체제(OS), 병렬·분산(PDC), 보안(SEC), 사회·윤리·직업(SEP), 소프트웨어 개발 기초(SDF), 소프트웨어 공학(SE), 특화 플랫폼 개발(SPD), 시스템 기초(SF)다.
여기에 두 가지를 조정했다.
- 자료구조를 따로 뺐다. CS2023 에서는 알고리즘 영역 안에 있지만, 공부하는 순서로는 독립된 한 덩어리가 낫다.
- 클라우드·DevOps 를 더했다. 교육과정의 중심은 아니지만, 지금 현업에서 코드를 “돌아가게” 만드는 일의 큰 몫이다. 우리 홈랩 k3s 클러스터에서 실제로 겪은 일을 예제로 쓸 수 있는 분야이기도 하다.
그 결과 15개 분야 × 20개 주제 = 300개가 됐다.
한눈에 보기
| 파트 | 분야 | CS2023 대응 | 번호 |
|---|---|---|---|
| 1 | 수학적 기초 | MSF | 001–020 |
| 2 | 프로그래밍 기초와 언어 | SDF·FPL | 021–040 |
| 3 | 자료구조 | AL | 041–060 |
| 4 | 알고리즘 | AL | 061–080 |
| 5 | 컴퓨터 구조 | AR | 081–100 |
| 6 | 운영체제 | OS | 101–120 |
| 7 | 시스템과 병렬·분산 컴퓨팅 | SF·PDC | 121–140 |
| 8 | 네트워크 | NC | 141–160 |
| 9 | 데이터베이스 | DM | 161–180 |
| 10 | 소프트웨어 공학 | SE | 181–200 |
| 11 | 웹·모바일 플랫폼 개발 | SPD | 201–220 |
| 12 | 클라우드·DevOps·인프라 | (실무) | 221–240 |
| 13 | 보안 | SEC | 241–260 |
| 14 | 인공지능과 머신러닝 | AI | 261–280 |
| 15 | 그래픽스·HCI·사회와 윤리 | GIT·HCI·SEP | 281–300 |
공부 순서 추천
번호 순서대로 읽을 필요는 없다. 다만 앞 파트가 뒤 파트의 언어가 되는 경우가 많아서, 처음이라면 이 순서를 권한다.
- 2 → 3 → 4 (언어, 자료구조, 알고리즘). 모든 것의 바닥이다.
- 5 → 6 → 8 (구조, 운영체제, 네트워크). “컴퓨터가 실제로 어떻게 도는가”.
- 9 → 10 (데이터베이스, 소프트웨어 공학). 팀으로 서비스를 만드는 단계.
- 7 → 12 → 13 (분산, 클라우드, 보안). 운영과 장애의 세계.
- 14 (인공지능). 앞의 거의 모든 것을 재료로 쓴다.
- 1 과 15는 필요할 때마다 돌아온다. 수학은 막힐 때, 사람과 윤리는 기술이 사람을 만날 때.
Part 1. 수학적 기초
증명과 논리가 없으면 알고리즘 분석도, 암호도, 머신러닝도 “외운 것”에 머문다. (CS2023: MSF)
| 번호 | 주제 |
|---|---|
| 001 | 명제 논리와 진리표 |
| 002 | 술어 논리와 한정자 |
| 003 | 증명 기법 — 직접·대우·귀류 |
| 004 | 수학적 귀납법과 강한 귀납법 |
| 005 | 집합·관계·함수 |
| 006 | 동치 관계와 부분 순서 |
| 007 | 경우의 수 — 순열·조합·비둘기집 원리 |
| 008 | 점화식과 그 풀이 |
| 009 | 그래프 이론 기초 — 용어와 표현 |
| 010 | 트리의 성질과 증명 |
| 011 | 정수론 기초 — 나머지 연산과 최대공약수 |
| 012 | 모듈러 역원과 페르마 소정리 |
| 013 | 확률 기초 — 조건부 확률과 베이즈 정리 |
| 014 | 확률변수·기댓값·분산 |
| 015 | 주요 확률분포 — 이항·포아송·정규 |
| 016 | 통계적 추정과 가설 검정 |
| 017 | 선형대수 1 — 벡터·행렬·연립방정식 |
| 018 | 선형대수 2 — 고유값·고유벡터·특이값 분해 |
| 019 | 미분과 경사하강법의 수학 |
| 020 | 정보이론 — 엔트로피와 부호화 |
Part 2. 프로그래밍 기초와 언어
한 언어를 깊게, 여러 패러다임을 넓게. (CS2023: SDF·FPL)
| 번호 | 주제 |
|---|---|
| 021 | 변수·타입·표현식 — 컴퓨터가 값을 다루는 방식 |
| 022 | 제어 흐름과 반복문 |
| 023 | 함수·스코프·클로저 |
| 024 | 재귀적으로 생각하기 |
| 025 | 값 전달과 참조 전달 |
| 026 | 정적 타입과 동적 타입 |
| 027 | 메모리 모델 — 스택과 힙 |
| 028 | 가비지 컬렉션의 원리 |
| 029 | 객체지향 1 — 캡슐화와 추상화 |
| 030 | 객체지향 2 — 상속·다형성·합성 |
| 031 | 함수형 프로그래밍 — 불변성과 순수 함수 |
| 032 | 고차 함수·map·filter·reduce |
| 033 | 제네릭과 타입 매개변수 |
| 034 | 예외 처리와 오류 설계 |
| 035 | 비동기 프로그래밍 — 콜백·프라미스·async/await |
| 036 | 인터프리터와 컴파일러의 차이 |
| 037 | 어휘 분석과 구문 분석 |
| 038 | 타입 시스템과 타입 추론 |
| 039 | JVM 과 바이트코드 |
| 040 | Rust 의 소유권과 빌림 |
Part 3. 자료구조
문제를 푸는 속도는 대개 데이터를 어떻게 담느냐에서 정해진다. (CS2023: AL)
| 번호 | 주제 |
|---|---|
| 041 | 배열과 동적 배열 |
| 042 | 연결 리스트 |
| 043 | 스택 |
| 044 | 큐와 원형 큐 |
| 045 | 덱 |
| 046 | 해시 테이블과 충돌 해결 |
| 047 | 이진 탐색 트리 |
| 048 | AVL 트리 |
| 049 | 레드블랙 트리 |
| 050 | B-트리와 B+트리 |
| 051 | 힙과 우선순위 큐 |
| 052 | 트라이 |
| 053 | 그래프 표현 — 인접 행렬과 인접 리스트 |
| 054 | 분리 집합 (Union-Find) |
| 055 | 세그먼트 트리 |
| 056 | 펜윅 트리 |
| 057 | 스킵 리스트 |
| 058 | 블룸 필터 |
| 059 | LRU 캐시 구현 |
| 060 | 영속 자료구조 |
Part 4. 알고리즘
외우는 게 아니라 “왜 이 시간 안에 끝나는가”를 설명할 수 있어야 한다. (CS2023: AL)
| 번호 | 주제 |
|---|---|
| 061 | 점근 표기법 — 빅오·빅오메가·빅세타 |
| 062 | 시간 복잡도 분석 연습 |
| 063 | 분할 상환 분석 |
| 064 | 버블·선택·삽입 정렬 |
| 065 | 병합 정렬 |
| 066 | 퀵 정렬과 피벗 선택 |
| 067 | 계수·기수 정렬 |
| 068 | 이진 탐색과 그 변형 |
| 069 | 투 포인터와 슬라이딩 윈도 |
| 070 | 분할 정복 |
| 071 | 탐욕 알고리즘 |
| 072 | 동적 계획법 1 — 메모이제이션과 테이블 |
| 073 | 동적 계획법 2 — 배낭 문제와 최장 공통 부분수열 |
| 074 | BFS 와 DFS |
| 075 | 최단 경로 — 다익스트라 |
| 076 | 최단 경로 — 벨만포드와 플로이드워셜 |
| 077 | 최소 신장 트리 — 크루스칼과 프림 |
| 078 | 위상 정렬 |
| 079 | 문자열 탐색 — KMP |
| 080 | P·NP·NP-완전 |
Part 5. 컴퓨터 구조
코드가 실제로 도는 기계를 알면 성능 문제의 절반이 보인다. (CS2023: AR)
| 번호 | 주제 |
|---|---|
| 081 | 2진수·16진수와 정수 표현 |
| 082 | 2의 보수와 오버플로 |
| 083 | 부동소수점 IEEE 754 |
| 084 | 논리 게이트와 불 대수 |
| 085 | 조합 회로와 순차 회로 |
| 086 | 폰 노이만 구조 |
| 087 | 명령어 집합 구조 — RISC 와 CISC |
| 088 | 어셈블리 언어 맛보기 |
| 089 | CPU 데이터패스와 제어 장치 |
| 090 | 파이프라이닝 |
| 091 | 해저드와 분기 예측 |
| 092 | 메모리 계층 구조 |
| 093 | 캐시 — 사상 방식과 교체 정책 |
| 094 | 캐시 일관성 |
| 095 | 가상 메모리와 TLB |
| 096 | 입출력과 인터럽트 |
| 097 | DMA |
| 098 | 멀티코어와 SIMD |
| 099 | GPU 구조 |
| 100 | 성능 측정 — CPI 와 암달의 법칙 |
Part 6. 운영체제
모든 프로그램이 기대는 계층. 서버 장애의 언어가 여기서 나온다. (CS2023: OS)
| 번호 | 주제 |
|---|---|
| 101 | 운영체제의 역할과 커널 |
| 102 | 시스템 콜 |
| 103 | 프로세스와 프로세스 상태 |
| 104 | 스레드와 멀티스레딩 |
| 105 | CPU 스케줄링 알고리즘 |
| 106 | 컨텍스트 스위칭 |
| 107 | 경쟁 상태와 임계 구역 |
| 108 | 뮤텍스·세마포어·모니터 |
| 109 | 교착 상태 — 조건과 회피 |
| 110 | 페이징 |
| 111 | 세그멘테이션 |
| 112 | 페이지 교체 알고리즘 |
| 113 | 스래싱과 워킹 셋 |
| 114 | 파일 시스템 구조 |
| 115 | 아이노드와 디렉터리 |
| 116 | 디스크 스케줄링과 SSD |
| 117 | 저널링 파일 시스템 |
| 118 | 리눅스 부팅 과정 |
| 119 | cgroup 과 네임스페이스 |
| 120 | 가상화 — 하이퍼바이저와 컨테이너 |
Part 7. 시스템과 병렬·분산 컴퓨팅
한 대에서 여러 대로 넘어가는 순간 문제의 종류가 바뀐다. (CS2023: SF·PDC)
| 번호 | 주제 |
|---|---|
| 121 | 리눅스 셸과 파이프 |
| 122 | 프로세스 간 통신 — 파이프·공유 메모리·소켓 |
| 123 | 시그널 |
| 124 | 동시성과 병렬성의 차이 |
| 125 | 스레드 풀과 작업 큐 |
| 126 | 락 없는 자료구조와 CAS |
| 127 | 메모리 가시성과 메모리 모델 |
| 128 | 이벤트 루프와 논블로킹 I/O |
| 129 | 분산 시스템의 8가지 오해 |
| 130 | CAP 정리와 PACELC |
| 131 | 일관성 모델 — 강한 일관성과 최종 일관성 |
| 132 | 논리 시계와 벡터 시계 |
| 133 | 리더 선출 |
| 134 | 합의 알고리즘 — Raft |
| 135 | 복제 전략 |
| 136 | 샤딩과 파티셔닝 |
| 137 | 분산 트랜잭션과 2PC·사가 |
| 138 | 멱등성과 재시도 |
| 139 | 장애 감지와 하트비트 |
| 140 | MapReduce 와 분산 데이터 처리 |
Part 8. 네트워크
장애 보고의 “타임아웃”이 정확히 어디서 났는지 말할 수 있어야 한다. (CS2023: NC)
| 번호 | 주제 |
|---|---|
| 141 | OSI 7계층과 TCP/IP 4계층 |
| 142 | 물리 계층과 이더넷 |
| 143 | MAC 주소와 ARP |
| 144 | IP 주소와 서브넷 |
| 145 | 라우팅 기초 |
| 146 | NAT |
| 147 | TCP 연결 수립과 종료 |
| 148 | TCP 흐름 제어와 혼잡 제어 |
| 149 | UDP |
| 150 | 소켓 프로그래밍 |
| 151 | DNS 동작 원리 |
| 152 | HTTP/1.1 |
| 153 | HTTP/2 와 HTTP/3 |
| 154 | TLS 핸드셰이크 |
| 155 | 웹소켓 |
| 156 | CDN |
| 157 | 로드 밸런싱 — L4 와 L7 |
| 158 | VPN 과 터널링 |
| 159 | 네트워크 디버깅 도구 — ping·traceroute·tcpdump |
| 160 | 쿠버네티스 네트워킹 — Service·Ingress·CNI |
Part 9. 데이터베이스
데이터가 회사의 자산이라면 DB 는 그 금고다. (CS2023: DM)
| 번호 | 주제 |
|---|---|
| 161 | 관계형 모델 |
| 162 | SQL 기초 — SELECT 부터 JOIN 까지 |
| 163 | 집계·서브쿼리·윈도 함수 |
| 164 | ER 모델링 |
| 165 | 정규화 |
| 166 | 반정규화와 그 대가 |
| 167 | 인덱스와 B+트리 |
| 168 | 실행 계획 읽기 |
| 169 | 트랜잭션과 ACID |
| 170 | 격리 수준과 이상 현상 |
| 171 | MVCC |
| 172 | 락과 교착 상태 |
| 173 | WAL 과 복구 |
| 174 | 복제 — 프라이머리와 레플리카 |
| 175 | NoSQL 분류 — 키값·문서·컬럼·그래프 |
| 176 | Redis 와 캐시 전략 |
| 177 | 검색 엔진과 역색인 |
| 178 | 데이터 웨어하우스와 OLAP |
| 179 | 스키마 마이그레이션 |
| 180 | 벡터 데이터베이스 |
Part 10. 소프트웨어 공학
혼자 짜는 코드와 팀이 고치는 코드는 다른 기술을 요구한다. (CS2023: SE)
| 번호 | 주제 |
|---|---|
| 181 | 소프트웨어 개발 생명주기 |
| 182 | 애자일과 스크럼 |
| 183 | 요구사항 분석 |
| 184 | UML 기초 |
| 185 | SOLID 원칙 |
| 186 | 디자인 패턴 1 — 생성 패턴 |
| 187 | 디자인 패턴 2 — 구조 패턴 |
| 188 | 디자인 패턴 3 — 행위 패턴 |
| 189 | 클린 코드와 리팩터링 |
| 190 | 코드 리뷰 |
| 191 | 단위 테스트 |
| 192 | 통합 테스트와 E2E 테스트 |
| 193 | 테스트 주도 개발 |
| 194 | Git 기초 |
| 195 | Git 브랜치 전략 |
| 196 | CI/CD |
| 197 | 레이어드 아키텍처 |
| 198 | 도메인 주도 설계 |
| 199 | 마이크로서비스와 모놀리스 |
| 200 | 기술 부채 |
Part 11. 웹·모바일 플랫폼 개발
사용자가 실제로 만나는 곳. (CS2023: SPD)
| 번호 | 주제 |
|---|---|
| 201 | 웹 브라우저 렌더링 과정 |
| 202 | HTML 시맨틱 |
| 203 | CSS 레이아웃 — Flexbox 와 Grid |
| 204 | 자바스크립트 이벤트 루프 |
| 205 | DOM 과 이벤트 |
| 206 | 프론트엔드 프레임워크의 원리 — 가상 DOM 과 반응성 |
| 207 | 상태 관리 |
| 208 | REST API 설계 |
| 209 | GraphQL |
| 210 | gRPC |
| 211 | 인증 — 세션과 토큰 |
| 212 | OAuth 2.0 과 OpenID Connect |
| 213 | 웹 성능 최적화 |
| 214 | 접근성(웹 접근성) |
| 215 | SSR·CSR·SSG |
| 216 | 모바일 앱 아키텍처 |
| 217 | 크로스플랫폼 개발 |
| 218 | PWA |
| 219 | 임베디드와 IoT 기초 |
| 220 | MQTT |
Part 12. 클라우드·DevOps·인프라
코드를 “돌아가게” 만드는 기술. CS2023 밖이지만 현업 비중이 크다. (CS2023: (실무))
| 번호 | 주제 |
|---|---|
| 221 | 클라우드 서비스 모델 — IaaS·PaaS·SaaS |
| 222 | 리눅스 서버 운영 기초 |
| 223 | systemd |
| 224 | 도커 이미지와 컨테이너 |
| 225 | Dockerfile 작성법 |
| 226 | 쿠버네티스 아키텍처 |
| 227 | 파드·디플로이먼트·서비스 |
| 228 | 쿠버네티스 스토리지 |
| 229 | 헬름 |
| 230 | GitOps 와 ArgoCD |
| 231 | Infrastructure as Code — Terraform |
| 232 | 모니터링 — Prometheus 와 Grafana |
| 233 | 로그 수집과 분석 |
| 234 | 분산 추적 |
| 235 | SLI·SLO·에러 버짓 |
| 236 | 장애 대응과 포스트모템 |
| 237 | 백업과 재해 복구 |
| 238 | 오토스케일링 |
| 239 | 서비스 메시 |
| 240 | 비용 관리 (FinOps) |
Part 13. 보안
기능이 맞아도 안전하지 않으면 틀린 코드다. (CS2023: SEC)
| 번호 | 주제 |
|---|---|
| 241 | 보안의 3요소 — 기밀성·무결성·가용성 |
| 242 | 위협 모델링 |
| 243 | 대칭키 암호 |
| 244 | 공개키 암호 |
| 245 | 해시 함수와 MAC |
| 246 | 전자서명과 인증서 |
| 247 | PKI 와 인증서 체인 |
| 248 | 비밀번호 저장 |
| 249 | 인증과 인가 |
| 250 | OWASP Top 10 개관 |
| 251 | SQL 인젝션 |
| 252 | XSS 와 CSRF |
| 253 | 접근 통제 실패와 IDOR |
| 254 | 시큐어 코딩 |
| 255 | 네트워크 보안 — 방화벽·IDS·IPS |
| 256 | 컨테이너와 쿠버네티스 보안 |
| 257 | 공급망 보안 |
| 258 | 침해 사고 대응 |
| 259 | 보안 로그와 SIEM |
| 260 | 제로 트러스트 |
Part 14. 인공지능과 머신러닝
도구로 쓰는 단계에서 원리를 아는 단계로. (CS2023: AI)
| 번호 | 주제 |
|---|---|
| 261 | 인공지능의 역사와 분류 |
| 262 | 탐색 — 상태 공간과 휴리스틱 |
| 263 | 지도 학습과 비지도 학습 |
| 264 | 선형 회귀 |
| 265 | 로지스틱 회귀 |
| 266 | 결정 트리와 랜덤 포레스트 |
| 267 | 과적합과 정규화 |
| 268 | 모델 평가 지표 |
| 269 | 신경망 기초 — 퍼셉트론과 역전파 |
| 270 | 합성곱 신경망 |
| 271 | 순환 신경망 |
| 272 | 어텐션과 트랜스포머 |
| 273 | 임베딩 |
| 274 | 대규모 언어 모델의 학습 과정 |
| 275 | 프롬프트 엔지니어링 |
| 276 | RAG |
| 277 | AI 에이전트와 도구 사용 |
| 278 | 강화학습 기초 |
| 279 | MLOps |
| 280 | AI 안전과 평가 |
Part 15. 그래픽스·HCI·사회와 윤리
기술이 사람과 만나는 경계. (CS2023: GIT·HCI·SEP)
| 번호 | 주제 |
|---|---|
| 281 | 컴퓨터 그래픽스 기초 — 래스터와 벡터 |
| 282 | 색 공간 |
| 283 | 3D 변환 행렬 |
| 284 | 렌더링 파이프라인 |
| 285 | 이미지 처리 기초 |
| 286 | 사용자 중심 설계 |
| 287 | 사용성 평가 |
| 288 | 인터페이스 설계 원칙 |
| 289 | 정보 시각화 |
| 290 | 게임 엔진의 구조 |
| 291 | 소프트웨어 라이선스와 오픈소스 |
| 292 | 개인정보 보호와 법 |
| 293 | AI 윤리 |
| 294 | 알고리즘 편향 |
| 295 | 접근성과 포용 |
| 296 | 기술 문서 작성 |
| 297 | 개발자 커뮤니케이션 |
| 298 | 소프트웨어 장애의 사회적 영향 사례 |
| 299 | 지속 가능한 컴퓨팅 |
| 300 | 개발자로 성장하기 |
한 편은 어떻게 쓰나
300편이 책이 되려면 모양이 같아야 한다. 각 글은 이 틀을 따른다.
| 절 | 내용 |
|---|---|
| 한 줄 요약 | 이 주제를 한 문장으로 |
| 왜 필요한가 | 이걸 모르면 실제로 무엇이 막히는지 |
| 핵심 개념 | 그림·표·짧은 코드로 |
| 직접 해 보기 | 손으로 돌려 볼 수 있는 예제 |
| 현업에서는 | 실제 시스템(가능하면 우리 클러스터)에서 이 개념이 나타나는 곳 |
| 확인 문제 | 3~5개 |
| 더 읽을거리 | 교과서·표준 문서·공식 문서 같은 1차 자료 |
사실과 수치는 1차·공식 출처를 링크한다. 확인하지 못한 수치는 쓰지 않는다.
진행
- 글은 번호 순서가 아니라 파트를 돌아가며 올린다. 한 분야만 연달아 나오면 읽는 사람이 지친다.
- 올라간 글은 이 지도에서 해당 번호에 링크를 단다. 이 글이 곧 시리즈 목차이고, 나중에 책의 목차가 된다.
- 주제 목록은 쓰면서 바뀔 수 있다. 합치거나 나누면 이 글에 기록한다.
References
- ACM/IEEE-CS/AAAI, CS2023: Computer Science Curricula — https://csed.acm.org/
- CS2023 Knowledge Areas — https://csed.acm.org/knowledge-areas/