Skip to content

CodyMan0/cs-exploration

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 

Repository files navigation

CS Study Quest

CS 핵심 개념을 비유와 실습으로 정복하는 프로젝트

진행 방식

  1. 일상 비유로 개념을 함께 이해한다
  2. 퀘스트(과제)를 받고 직접 풀어본다
  3. 리뷰 후 CLEAR 또는 RETRY 판정
  4. 언어: C++ / TypeScript

전체 진행률

=== Network Quest ===
Ch.1 기초     [████████░░] 4/5
Ch.2 전송     [░░░░░░░░░░] 0/5  🔒
Ch.3 응용     [░░░░░░░░░░] 0/5  🔒
Ch.4 심화     [░░░░░░░░░░] 0/5  🔒

=== OS Quest ===
Ch.1 기초     [░░░░░░░░░░] 0/5
Ch.2 스케줄링  [░░░░░░░░░░] 0/4  🔒
Ch.3 동기화   [░░░░░░░░░░] 0/4  🔒
Ch.4 메모리   [░░░░░░░░░░] 0/4  🔒
Ch.5 파일시스템 [░░░░░░░░░░] 0/4  🔒

=== Algorithm & Data Structure ===
Ch.1  기초·복잡도    [██████████] 4/4 ✅
Ch.2  재귀·탐색      [░░░░░░░░░░] 0/4
Ch.3  정렬           [░░░░░░░░░░] 0/3
Ch.4  해시·무결성     [░░░░░░░░░░] 0/3
Ch.5  암호화         [░░░░░░░░░░] 0/3
Ch.6  트리           [░░░░░░░░░░] 0/3
Ch.7  트라이·공간분할  [░░░░░░░░░░] 0/2
Ch.8  탐색 전략       [░░░░░░░░░░] 0/2
Ch.9  DP·그리디      [░░░░░░░░░░] 0/3
Ch.10 그래프 I        [░░░░░░░░░░] 0/3
Ch.11 그래프 II       [░░░░░░░░░░] 0/3
Ch.12 그래프 III      [░░░░░░░░░░] 0/3
Ch.13 기타           [░░░░░░░░░░] 0/2

=== Database Quest ===   (+ 실습 트랙 db-for-frontend: 1/6 ✅)
Ch.1 기초     [██░░░░░░░░] 1/4
Ch.2 내부동작  [░░░░░░░░░░] 0/4  🔒
Ch.3 심화     [░░░░░░░░░░] 0/4  🔒

=== Computer Architecture Quest ===
Ch.1 기초     [░░░░░░░░░░] 0/4
Ch.2 실행     [░░░░░░░░░░] 0/4  🔒
Ch.3 심화     [░░░░░░░░░░] 0/4  🔒

=== Security Quest ===
Ch.1 기초     [░░░░░░░░░░] 0/4
Ch.2 웹보안   [░░░░░░░░░░] 0/4  🔒
Ch.3 심화     [░░░░░░░░░░] 0/4  🔒

Network Quest

Chapter 1: 기초 던전 - "인터넷은 어떻게 작동하는가"

Stage 주제 핵심 키워드 상태
1-1 네트워크란 무엇인가 LAN, WAN, 패킷, 프로토콜 ✅ CLEAR
1-2 OSI 7계층 vs TCP/IP 4계층 계층 구조, 캡슐화, 역할 분리 ✅ CLEAR
1-3 IP 주소와 서브넷 IPv4, IPv6, 서브넷 마스크, CIDR ✅ CLEAR
1-4 DNS의 세계 도메인 해석, 재귀/반복 질의, 캐싱 ✅ CLEAR
BOSS 나만의 DNS 조회기 만들기 C++ 또는 TypeScript 🔒

Chapter 2: 전송 던전 - "데이터는 어떻게 도착하는가"

Stage 주제 핵심 키워드 상태
2-1 TCP vs UDP 연결 지향, 비연결, 신뢰성 🔒
2-2 TCP 3-way Handshake SYN, ACK, 연결 수립/해제 🔒
2-3 흐름 제어와 혼잡 제어 슬라이딩 윈도우, AIMD, Slow Start 🔒
2-4 포트와 소켓 Well-known 포트, 소켓 프로그래밍 🔒
BOSS TCP 채팅 서버/클라이언트 만들기 C++ 소켓 프로그래밍 🔒

Chapter 3: 응용 던전 - "우리가 매일 쓰는 것들"

Stage 주제 핵심 키워드 상태
3-1 HTTP/HTTPS 메서드, 상태코드, 헤더, TLS 🔒
3-2 REST API 설계 리소스, URI, 멱등성 🔒
3-3 쿠키, 세션, 토큰 인증/인가, JWT, OAuth 개요 🔒
3-4 WebSocket & 실시간 통신 양방향, Polling vs SSE vs WS 🔒
BOSS 실시간 알림 시스템 만들기 TypeScript (Node.js) 🔒

Chapter 4: 심화 던전 - "네트워크 마스터로"

Stage 주제 핵심 키워드 상태
4-1 라우팅과 NAT 라우팅 테이블, NAT, 포트포워딩 🔒
4-2 로드밸런싱 L4/L7, 알고리즘, 리버스 프록시 🔒
4-3 CDN과 캐싱 전략 Edge, Cache-Control, ETag 🔒
4-4 네트워크 보안 방화벽, DDoS, CORS, XSS 🔒
FINAL BOSS 미니 HTTP 서버 직접 구현 C++ raw socket 🔒

OS Quest

Chapter 1: 기초 던전 - "컴퓨터는 어떻게 일을 하는가"

Stage 주제 핵심 키워드 상태
1-1 운영체제란 무엇인가 커널, 사용자 모드, 시스템 콜
1-2 프로세스와 스레드 PCB, 컨텍스트 스위칭, 멀티스레딩
1-3 프로세스 생성과 종료 fork, exec, wait, 좀비/고아 프로세스
1-4 프로세스 간 통신 (IPC) 파이프, 공유메모리, 메시지큐, 소켓
BOSS 미니 쉘 만들기 C++ (fork + exec) 🔒

Chapter 2: 스케줄링 던전 - "누가 먼저 일할 것인가"

Stage 주제 핵심 키워드 상태
2-1 CPU 스케줄링 기본 FCFS, SJF, 선점/비선점 🔒
2-2 Round Robin과 우선순위 타임 퀀텀, 에이징, 기아 현상 🔒
2-3 멀티레벨 큐 포그라운드/백그라운드, 피드백 큐 🔒
BOSS 스케줄러 시뮬레이터 만들기 TypeScript 🔒

Chapter 3: 동기화 던전 - "충돌 없이 함께 일하기"

Stage 주제 핵심 키워드 상태
3-1 경쟁 조건과 임계 구역 Race Condition, Mutual Exclusion 🔒
3-2 뮤텍스와 세마포어 Lock, Counting Semaphore, 바이너리 🔒
3-3 데드락 4가지 조건, 회피, 탐지, 복구 🔒
BOSS 식사하는 철학자 문제 구현 C++ (pthread) 🔒

Chapter 4: 메모리 던전 - "한정된 공간을 관리하라"

Stage 주제 핵심 키워드 상태
4-1 메모리 구조와 주소 공간 스택, 힙, 코드, 데이터 영역 🔒
4-2 페이징과 세그멘테이션 가상 메모리, 페이지 테이블, TLB 🔒
4-3 페이지 교체 알고리즘 FIFO, LRU, LFU, 클럭 알고리즘 🔒
BOSS LRU 캐시 직접 구현 TypeScript 🔒

Chapter 5: 파일시스템 던전 - "데이터를 영구히 저장하라"

Stage 주제 핵심 키워드 상태
5-1 파일시스템 기초 inode, 디렉토리, 파일 디스크립터 🔒
5-2 디스크 스케줄링 SCAN, C-SCAN, SSTF 🔒
5-3 저널링과 무결성 크래시 복구, WAL, Copy-on-Write 🔒
FINAL BOSS 인메모리 파일시스템 구현 C++ 🔒

Algorithm & Data Structure

알고리즘·자료구조 핵심을 기초 복잡도부터 그래프 심화까지 체계적으로 다루는 커리큘럼.

Chapter 1. 알고리즘 기초 & 복잡도

주제 핵심 키워드 상태
알고리즘과 효율성 좋은 알고리즘의 조건, 정확성 검증 ✅ CLEAR
빅오 표기법 O(1)·O(N)·O(N²)·O(logN)·O(NlogN) ✅ CLEAR
선형 자료구조 배열, 스택, 큐, 연결 리스트 ✅ CLEAR
해시 테이블 해시 함수, 해시 맵, O(1) 탐색 ✅ CLEAR

Chapter 2. 재귀 · 탐색 · 복잡도 이론

주제 핵심 키워드 상태
재귀 호출 과정, 장단점, 꼬리 재귀
주먹구구식(브루트포스) 완전 탐색, 기하급수적 복잡도
P vs NP P, NP, NP-완전, NP-난해
이진 탐색 정렬 전제, O(logN), 회전 배열 응용

Chapter 3. 정렬

주제 핵심 키워드 상태
기본 정렬 버블, 선택, 삽입
고급 정렬 퀵, 병합, 힙
정렬의 성질 안정성, 상황별 선택

Chapter 4. 해시 & 데이터 무결성

주제 핵심 키워드 상태
해시 함수 균일성, 지역 민감 해시, 효율성
무결성 검사 체크섬, CRC, 패리티 비트
암호학적 해시 생일 문제, 비밀번호 해싱·솔트

Chapter 5. 암호화

주제 핵심 키워드 상태
대칭키 암호화 AES, 블록 암호
비대칭키 암호화 RSA, 공개키/비밀키, 큰 소수
기초 정수론 모듈러 연산, 소수

Chapter 6. 트리

주제 핵심 키워드 상태
트리와 BST 이진 탐색 트리, 삽입/삭제
트리 순회 전위·중위·후위
균형 트리 레드-블랙 트리

Chapter 7. 트라이 & 공간분할 트리

주제 핵심 키워드 상태
트라이 사전식 순서, 자동완성
공간분할 트리 쿼드 트리, 옥트리

Chapter 8. 탐색 전략

주제 핵심 키워드 상태
DFS / BFS 깊이 우선, 너비 우선
미니맥스 게임 트리, 깊이 제한, 평가 함수

Chapter 9. 동적 계획법 & 그리디

주제 핵심 키워드 상태
동적 계획법 메모이제이션, 타뷸레이션, 배낭 문제
그리디 탐욕 선택, 인터벌 스케줄링
압축 허프만 코딩, 양자화

Chapter 10. 그래프 I — 표현 & 순회

주제 핵심 키워드 상태
그래프 표현 인접 행렬, 인접 리스트
그래프 DFS & 위상 정렬 방향 그래프, 위상 순서
강한 결합 요소 SCC, 코사라주 알고리즘

Chapter 11. 그래프 II — 최단 경로

주제 핵심 키워드 상태
BFS 최단 경로 & 다익스트라 우선순위 큐, 음의 가중치
A* 휴리스틱, h(n)
플로이드-워셜 모든 쌍 최단 경로

Chapter 12. 그래프 III — 심화

주제 핵심 키워드 상태
최소 신장 트리 크러스컬, 서로소 집합
외판원 문제 TSP, 2-근사
최대 유량 흐름 네트워크, 에드몬드-카프

Chapter 13. 기타 알고리즘

주제 핵심 키워드 상태
상태 기계 & 정규식 유한 상태 기계, 패턴 매칭
패턴 인식 KNN, 정규화

Database Quest

🛠️ 실습 트랙 병행db-for-frontend/ 진짜 PostgreSQL(+PostGIS)을 Docker로 띄워놓고, 병원 예약 도메인으로 EXPLAIN ANALYZE까지 손으로 돌려보는 실습 커리큘럼. 아래 개념 퀘스트와 상호 보완됩니다.

단계 주제 상태
1 구조 — PK/FK · 정규화 · JSONB ✅ CLEAR
2 무결성 — 트랜잭션 · ACID · 격리 수준 🔒
3 인덱스/검색 — B-Tree · EXPLAIN · N+1 · 페이지네이션 🔒
4 동시성 — Lock · Deadlock · MVCC 🔒
5 공간 데이터 — PostGIS · 반경 2km 검색 🔒
6 인프라 — Connection Pool · Redis 캐싱 🔒

Chapter 1: 기초 던전 - "데이터를 체계적으로"

Stage 주제 핵심 키워드 상태
1-1 데이터베이스란 DBMS, 관계형 모델, 스키마
1-2 SQL 기본 SELECT, JOIN, GROUP BY, 서브쿼리
1-3 정규화 1NF, 2NF, 3NF, 함수 종속성 ✅ CLEAR (실습 트랙)
BOSS 스키마 설계 챌린지 SQL 🔒

Chapter 2: 내부 동작 던전 - "DB는 어떻게 빠른가"

Stage 주제 핵심 키워드 상태
2-1 인덱스 B-Tree, B+Tree, 클러스터드, 커버링 🔒
2-2 트랜잭션과 ACID 원자성, 일관성, 격리성, 지속성 🔒
2-3 격리 수준과 락 Read Committed, Repeatable Read, 데드락 🔒
BOSS 트랜잭션 시뮬레이터 TypeScript 🔒

Chapter 3: 심화 던전 - "대규모 데이터를 다뤄라"

Stage 주제 핵심 키워드 상태
3-1 쿼리 최적화 실행 계획, EXPLAIN, 풀스캔 🔒
3-2 NoSQL 개요 Document, Key-Value, 그래프 DB, CAP 🔒
3-3 파티셔닝과 레플리케이션 샤딩, Master-Slave, 수평/수직 분할 🔒
FINAL BOSS 미니 인메모리 DB 구현 TypeScript 🔒

Computer Architecture Quest

Chapter 1: 기초 던전 - "컴퓨터는 0과 1로 생각한다"

Stage 주제 핵심 키워드 상태
1-1 이진수와 데이터 표현 2진수, 16진수, 보수, 부동소수점
1-2 논리 게이트와 회로 AND, OR, NOT, 가산기, 멀티플렉서
1-3 CPU 구조 ALU, 레지스터, 제어장치, 클럭
BOSS 간단한 ALU 시뮬레이터 TypeScript 🔒

Chapter 2: 실행 던전 - "명령어는 어떻게 처리되는가"

Stage 주제 핵심 키워드 상태
2-1 명령어 사이클 Fetch, Decode, Execute, 파이프라인 🔒
2-2 파이프라인과 해저드 데이터/구조/제어 해저드, 분기 예측 🔒
2-3 메모리 계층 레지스터, 캐시(L1/L2/L3), RAM, 디스크 🔒
BOSS 캐시 시뮬레이터 C++ 🔒

Chapter 3: 심화 던전 - "성능의 비밀"

Stage 주제 핵심 키워드 상태
3-1 캐시 정책 LRU, Write-back, Write-through, 지역성 🔒
3-2 병렬 처리 멀티코어, SIMD, 암달의 법칙 🔒
3-3 I/O와 인터럽트 DMA, 폴링, 인터럽트 벡터 🔒
FINAL BOSS 미니 CPU 시뮬레이터 C++ 🔒

Security Quest

Chapter 1: 기초 던전 - "왜 보안이 필요한가"

Stage 주제 핵심 키워드 상태
1-1 보안의 3요소 기밀성, 무결성, 가용성 (CIA)
1-2 암호화 기초 대칭키, 비대칭키, 해시 함수
1-3 인증과 인가 세션, 토큰, OAuth, RBAC
BOSS 비밀번호 해싱 시스템 구현 TypeScript 🔒

Chapter 2: 웹 보안 던전 - "공격과 방어"

Stage 주제 핵심 키워드 상태
2-1 XSS와 CSRF Reflected, Stored, DOM-based, 토큰 방어 🔒
2-2 SQL Injection 바인드 변수, ORM, 입력 검증 🔒
2-3 HTTPS와 TLS 인증서, 핸드셰이크, 중간자 공격 🔒
BOSS 취약점 탐지 & 패치 챌린지 TypeScript 🔒

Chapter 3: 심화 던전 - "실전 보안"

Stage 주제 핵심 키워드 상태
3-1 네트워크 보안 방화벽, IDS/IPS, VPN 🔒
3-2 시스템 보안 권한 관리, 샌드박스, 버퍼 오버플로 🔒
3-3 보안 설계 원칙 최소 권한, Defense in Depth, Zero Trust 🔒
FINAL BOSS 안전한 로그인 시스템 구현 TypeScript + C++ 🔒

About

클로드와 미쳐보는 CS 탐구 레포

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages