10-1. 컴퓨터과학의 핵심 개념과 용어

이 문서는 공부 노트 수준이다. 용어 정의 → 예시 → 자기 점검 질문이 따라온다. 이 문서는 단독으로 읽을 수 있다. 다른 파일을 먼저 읽지 않아도 된다.


이 문서를 왜 보는가?

컴퓨터과학(CS)에서 만나는 용어들 — “Big O”, “스택”, “프로세스”, “TCP”, “ACID”, “강화학습” — 의 정확한 정의를 모르면 IT 뉴스·기술 블로그·면접 질문이 모두 외계어처럼 느껴진다. 이 문서는 그 용어들을 자기 노트로 정리해, 어디서 만나도 즉시 의미를 잡을 수 있게 한다.

공부 노트의 기본 형식 (이 문서 전체에 적용)

용어:    한 줄 정의 (어원 + 핵심)
핵심:    개념의 본질 1~2줄
예시:    실제 작동 방식
점검:    자기 확인 질문

컴퓨터과학(Computer Science) = “계산(compute)에 관한 학문(science)”. 핵심은 컴퓨터가 아니라 계산이다 — 데이크스트라의 명언처럼 “천문학이 망원경에 관한 학문이 아니듯”.


A. 계산의 기초

A-1. 비트와 바이트

용어: Bit / Byte
정의:
  비트(bit) = "binary digit"의 줄임말. 0 또는 1의 한 자리.
  바이트(byte) = 8개 비트 묶음. 보통 한 글자(영문)·한 명령어 단위.
핵심: 컴퓨터의 모든 정보는 비트의 배열로 환원된다.
예시:
  영문자 'A' = 0100 0001 (1바이트)
  숫자 255 = 1111 1111 (1바이트)
  파일 1KB = 1024바이트 = 8192비트
점검: 1) 1MB는 몇 비트인가?
     2) 왜 1킬로(K)가 1024(2¹⁰)인가? (이진의 자연스러운 단위)

A-2. 이진수와 진법 변환

용어: Binary / Decimal / Hexadecimal
정의:
  이진수(2진) — 0,1만 사용
  십진수(10진) — 0~9 사용 (일상 숫자)
  16진수(hex) — 0~9, A~F 사용 (메모리·색 코드)
변환 예시:
  255(10) = 1111 1111(2) = FF(16)
  10(10) = 1010(2) = A(16)
점검: HTML 색 코드 #FF5733 의 의미는?
     (R=255, G=87, B=51 — 16진을 10진으로)

A-3. 추상 기계와 튜링 기계

용어: Turing Machine
정의: 1936년 앨런 튜링이 정의한 추상 계산 모델.
구성:
  - 무한 길이 테이프
  - 읽기·쓰기 헤드
  - 상태 + 규칙
의의:
  "계산 가능한 모든 것"이 무엇인지 정의 (처치-튜링 명제)
  현대 모든 컴퓨터의 이론적 기반
점검: 같은 결과를 내는 컴퓨터들도 "계산 가능한 범위"는 같은가? (예: 양자컴퓨터)

처치-튜링 명제(Church-Turing Thesis) = “계산 가능”한 모든 함수는 튜링 기계로 계산할 수 있다는 가설. 컴퓨터과학의 근본 가정.


B. 알고리즘과 복잡도

B-1. 알고리즘의 정의와 좋은 알고리즘의 조건

용어: Algorithm
정의: 문제를 푸는 단계의 명세. 입력을 받아 정해진 출력을 내는 절차.
어원: 9세기 페르시아 수학자 알콰리즈미(al-Khwārizmī)의 이름.
좋은 알고리즘의 조건:
  [1] 정확성 — 모든 유효 입력에 옳은 답
  [2] 종료성 — 유한 시간 내 끝남
  [3] 효율성 — 적은 시간·메모리 사용
  [4] 명확성 — 모든 단계가 모호하지 않음
점검: "라면 끓이기" 절차가 알고리즘이 되려면 무엇을 명확히 해야 하나?

B-2. 시간 복잡도(Time Complexity) — Big O

용어: Big O Notation
정의: 입력 크기 n에 따라 알고리즘 실행 시간이 어떻게 증가하는가.
       "최악의 경우"의 점근 분석.

자주 만나는 복잡도 (n = 백만 기준):
  O(1)        — 1번             상수
  O(log n)    — 약 20번         이진 탐색
  O(n)        — 백만 번         선형 탐색
  O(n log n)  — 약 2천만 번     효율적 정렬(merge, quick)
  O(n²)       — 1조 번         단순 비교(거품·삽입 정렬)
  O(2ⁿ)       — 사실상 못 끝남  지수(부분집합·일부 NP 문제)
  O(n!)       — 더 못 끝남     순열 전체 탐색

점검: 1) 데이터가 1만 개에서 100만 개로 늘 때 O(n²) 알고리즘은 몇 배 느려지나?
     2) 자기 직장의 어떤 작업이 데이터가 늘면 갑자기 느려지는가?

B-3. 공간 복잡도(Space Complexity)

용어: Space Complexity
정의: 알고리즘이 사용하는 메모리 양.
핵심: 빠른 알고리즘이 메모리를 더 쓸 수도 있다 (시간-공간 트레이드오프).
예시:
  해시 테이블 — O(1) 조회, 그러나 추가 메모리 사용
  재귀 — 빠를 수 있지만 호출 스택 메모리 사용
점검: 메모리가 한정된 임베디드 시스템에서 알고리즘 선택 기준은?

B-4. P, NP, NP-완전 — 어려움의 분류

용어: P / NP / NP-Complete
정의:
  P — 다항 시간(O(nᵏ)) 안에 풀 수 있는 문제
  NP — 답이 주어지면 다항 시간에 검증 가능한 문제
  NP-완전 — NP 중 가장 어려운 부류 (어떤 NP 문제도 이걸로 환원 가능)
대표 NP-완전 문제:
  - 외판원 문제(TSP)
  - 배낭 문제
  - 부분집합 합 문제
  - 그래프 채색
미해결: P = NP 인가? (밀레니엄 문제, 1백만 달러 상금)
점검: 자기 일상에서 "검증은 쉬운데 만드는 건 어렵다"는 패턴은?

다항 시간(Polynomial Time) = O(nᵏ) 형태. n²·n³·n¹⁰⁰ 등은 다 다항. n이 커질수록 지수보다 훨씬 느리게 자란다.


C. 자료구조 — 데이터를 담는 형식

C-1. 배열(Array) vs 연결 리스트(Linked List)

용어: Array / Linked List
정의:
  배열 — 메모리에 연속된 칸. 인덱스로 즉시 접근.
  연결 리스트 — 각 노드가 다음 노드를 가리킴. 칸이 연속 안 됨.
강점·약점:
  배열      — 인덱스 접근 O(1), 삽입/삭제 O(n)
  연결 리스트 — 삽입/삭제 O(1)*, 인덱스 접근 O(n)
점검: 데이터를 자주 중간에 삽입하는 경우 어느 게 적합한가?

C-2. 스택(Stack)과 큐(Queue)

용어: Stack / Queue
정의:
  스택 — LIFO(Last In First Out). 마지막 들어온 게 먼저 나감. 접시 더미.
  큐 — FIFO(First In First Out). 먼저 들어온 게 먼저 나감. 줄 서기.
응용:
  스택 — 함수 호출, 실행 취소(undo), 괄호 매칭, DFS
  큐 — 작업 대기열, 프린터 출력, BFS, 메시지 큐
점검: 웹 브라우저의 "뒤로 가기" 기능은 스택인가 큐인가?

C-3. 해시 테이블(Hash Table)

용어: Hash Table / Hash Map
정의: 키 → 값을 즉시 찾는 자료구조. 키를 해시 함수로 위치(인덱스)에 매핑.
조회: 평균 O(1).
충돌(Collision): 다른 키가 같은 위치 → 체이닝·개방 주소법으로 해결.
응용:
  - 사전 (단어 → 정의)
  - 캐시
  - 데이터베이스 인덱스
  - 비밀번호 저장(해싱)
점검: 100만 개 단어에서 한 단어를 찾을 때 해시와 정렬된 배열 어느 게 빠른가?

해시 함수(Hash Function) = 임의 입력 → 고정 길이 출력으로 변환하는 함수. 같은 입력 → 같은 출력. 다른 입력은 가급적 다른 출력.

C-4. 트리(Tree)

용어: Tree
정의: 계층 구조의 자료구조. 루트(root) → 자식 → 손자.
종류:
  이진 트리(Binary Tree) — 자식 최대 2개
  이진 검색 트리(BST) — 왼쪽은 작고, 오른쪽은 큼
  균형 트리(AVL, Red-Black) — 균형 유지로 O(log n) 보장
  B-tree — 데이터베이스 인덱스에 사용
응용:
  - 파일 시스템(폴더)
  - DOM(웹페이지 구조)
  - 의사결정 트리(ML)
점검: HTML 문서가 트리인 이유는?

C-5. 그래프(Graph)

용어: Graph
정의: 노드(정점)와 그 연결(엣지)의 집합.
종류:
  방향 그래프 — 화살표 있음 (트위터 팔로우)
  무방향 그래프 — 화살표 없음 (페이스북 친구)
  가중 그래프 — 엣지에 비용 (지도 거리)
응용:
  - 소셜 네트워크
  - 지도·내비게이션
  - 추천 시스템
  - 인터넷 라우팅
대표 알고리즘:
  - BFS·DFS (탐색)
  - 다익스트라(Dijkstra) — 최단 경로
  - PageRank — 구글 검색 순위
점검: "친구의 친구" 추적은 어떤 그래프 알고리즘인가?

D. 추상화와 시스템

D-1. 추상화 계층

용어: Abstraction Layer
정의: 복잡함을 숨기고 단순한 인터페이스만 제공하는 설계.
컴퓨터 시스템의 계층:
  응용 프로그램  ← 사용자가 직접 보는 것 (브라우저, 앱)

  운영체제(OS)   ← 자원 관리 (메모리·파일·프로세스)

  드라이버       ← OS와 하드웨어 사이 통역

  하드웨어       ← CPU, 메모리, 디스크
의의: 각 계층은 위에 단순한 인터페이스만 제공.
점검: 자동차 운전 = 추상화의 일상 사례. 어디까지가 운전자에게 보이고 무엇이 숨겨져 있나?

D-2. 프로세스(Process)와 스레드(Thread)

용어: Process / Thread
정의:
  프로세스 — 실행 중인 프로그램 인스턴스. 자기 메모리 공간을 가짐.
  스레드 — 한 프로세스 안의 실행 단위. 메모리를 공유.
차이:
  프로세스 간 통신 — 어렵고 비쌈
  스레드 간 통신 — 쉽지만 동기화 문제(데이터 경쟁)
응용:
  - 브라우저 — 탭마다 별도 프로세스
  - 게임 — 그래픽·물리·AI를 별도 스레드로
점검: 여러 작업을 동시에 처리하려는데 메모리를 공유해야 한다면?

D-3. 메모리 계층(Memory Hierarchy)

용어: Memory Hierarchy
정의: 속도-용량-비용의 트레이드오프로 쌓인 메모리 계층.

CPU 레지스터    — 가장 빠름, 매우 작음 (수십 바이트)
L1/L2/L3 캐시   — 매우 빠름, 작음 (KB~MB)
RAM            — 빠름, 중간 (GB)
SSD            — 보통, 큼 (수백 GB)
HDD            — 느림, 매우 큼 (TB)
네트워크/클라우드 — 가장 느림, 무한대

점검: 왜 캐시가 RAM보다 작아야 하나? (속도-비용 트레이드오프)

D-4. 가상화(Virtualization)와 컨테이너(Container)

용어: Virtualization / Container
정의:
  가상 머신(VM) — 한 컴퓨터에 가상의 컴퓨터를 여러 개 띄움
  컨테이너 — VM보다 가볍게, 응용 프로그램과 그 환경을 묶음
응용:
  - 클라우드 서버 운영
  - "내 컴퓨터에선 됐는데" 문제 해결 (Docker)
점검: VM과 컨테이너 중 어느 게 더 무거운가? 왜?

E. 네트워크와 보안

E-1. TCP/IP 스택

용어: TCP/IP
정의: 인터넷 통신의 표준 규약 묶음.
계층:
  응용층(HTTP, HTTPS, FTP, SMTP)

  전송층(TCP — 신뢰성, UDP — 빠름)

  네트워크층(IP — 라우팅)

  데이터링크·물리층(이더넷, Wi-Fi)
점검: 영상 통화는 TCP를 쓸까 UDP를 쓸까? 왜?

E-2. HTTP·HTTPS·DNS

용어: HTTP / HTTPS / DNS
정의:
  HTTP — 웹 페이지 전송 규약
  HTTPS — HTTP + 암호화(TLS)
  DNS — "이름 → IP 주소" 변환 (전화번호부)
웹페이지 한 번 여는 흐름:
  1. URL → DNS 조회로 IP 얻기
  2. IP로 TCP 연결
  3. HTTPS 핸드셰이크(암호 키 교환)
  4. HTTP 요청 → 응답
  5. 브라우저가 HTML 파싱·렌더링
점검: 자기가 매일 사용하는 사이트의 IP를 직접 입력해 접속할 수 있을까? (DNS 우회)

E-3. 암호화(Encryption)

용어: Encryption
정의: 데이터를 키 없이는 읽을 수 없게 변환.
종류:
  대칭키 — 같은 키로 암호화·복호화 (AES) — 빠르지만 키 공유 문제
  비대칭키(공개키) — 공개키로 암호화, 개인키로 복호화 (RSA, ECC) — 키 공유 안전
실제 응용:
  HTTPS — 비대칭키로 키 교환 + 대칭키로 본 통신
  비트코인 — 비대칭키로 서명
  암호화폐 지갑 — 개인키 = 잔고
점검: 누군가가 자기 계정 비번을 몰래 봤다면 어떤 보안이 깨진 건가?

E-4. 자주 만나는 보안 위협

- 피싱(Phishing) — 가짜 사이트로 정보 탈취
- DDoS — 트래픽 폭격으로 서비스 마비
- SQL 인젝션 — 입력란에 악성 쿼리 삽입
- XSS — 웹페이지에 악성 스크립트 주입
- 랜섬웨어 — 파일 암호화 + 비트코인 요구
- 사회 공학 — 기술 아닌 사람을 속임
점검: 자기에게 가장 위험한 보안 위협은? 대비책은?

F. 데이터베이스(Database)

F-1. 관계형 DB(RDB)와 SQL

용어: Relational Database / SQL
정의:
  관계형 DB — 데이터를 표(테이블)로 저장, 표끼리 관계를 맺음
  SQL — 그 데이터를 조회·수정하는 표준 언어
대표 시스템: MySQL, PostgreSQL, Oracle, SQL Server
강점:
  - 데이터 무결성·일관성 보장
  - 복잡한 조인(여러 표 연결) 가능
약점:
  - 수평 확장 어려움
  - 비정형 데이터 처리 약함
점검: 회원·주문·상품 데이터를 어떻게 표로 나눌까?

F-2. NoSQL — 다양한 비관계형 DB

용어: NoSQL ("Not Only SQL")
4종류:
  문서(Document) — MongoDB. JSON 형태 저장
  키-값(Key-Value) — Redis. 단순·빠름
  열 저장(Columnar) — Cassandra. 빅데이터 분석
  그래프(Graph) — Neo4j. 관계 중심 데이터
강점: 유연한 스키마, 수평 확장 용이
약점: 트랜잭션·일관성 약함(설정 따라 다름)
점검: 소셜 그래프(친구 관계)를 RDB로 다루기 어려운 이유는?

F-3. ACID와 CAP

용어: ACID / CAP Theorem
ACID — 트랜잭션의 4 속성:
  Atomicity — 전부 성공 또는 전부 실패
  Consistency — 데이터 무결성 유지
  Isolation — 동시 트랜잭션 격리
  Durability — 한번 커밋되면 영구 저장

CAP 정리 — 분산 시스템은 셋 중 둘만 보장 가능:
  Consistency — 모든 노드가 같은 데이터
  Availability — 항상 응답
  Partition tolerance — 네트워크 분할에도 작동

→ 결정: CP(은행) vs AP(소셜 미디어)
점검: 은행 시스템과 SNS는 다른 우선순위를 가질까?

G. AI와 머신러닝

G-1. 학습 패러다임 — 3대 갈래

용어: Supervised / Unsupervised / Reinforcement Learning
정의:
  지도학습 — 입력+정답 쌍으로 학습 (스팸 분류, 주가 예측)
  비지도학습 — 정답 없이 패턴 발견 (고객 군집화)
  강화학습 — 시행착오 + 보상으로 학습 (알파고, 게임 AI)

추가:
  자기지도학습(Self-supervised) — 입력 자체에서 학습 신호 추출 (LLM 사전훈련)
점검: 의료 진단 AI는 어떤 학습 패러다임이 적합할까?

G-2. 신경망과 딥러닝

용어: Neural Network / Deep Learning
정의:
  신경망 — 인간 뇌 뉴런을 단순 모방한 수학 모델
  딥러닝 — 신경망의 층(layer)을 여러 개 쌓은 것
주요 아키텍처:
  CNN(Convolutional) — 이미지 (얼굴 인식, 의료 영상)
  RNN/LSTM — 순차 데이터 (예전 번역)
  Transformer — 현재 LLM의 표준
훈련:
  데이터 → 순전파 → 손실 계산 → 역전파 → 가중치 업데이트
점검: 같은 신경망도 데이터에 따라 결과가 천차만별인 이유는?

G-3. LLM(Large Language Model)

용어: Large Language Model
정의: 막대한 텍스트로 "다음 단어 예측"을 학습한 거대 신경망.
대표: GPT-4, Claude, Gemini, LLaMA
구성:
  Transformer 아키텍처 + 수백억~수조 매개변수
훈련 단계:
  1. 사전훈련(Pre-training) — 인터넷 텍스트로 다음 단어 예측
  2. 파인튜닝(Fine-tuning) — 특정 작업에 맞춤
  3. RLHF — 인간 피드백으로 정렬
한계:
  - 환각(Hallucination)
  - 학습 데이터 시점 이후 모름
  - 진짜 추론 vs 통계 패턴 논쟁
점검: LLM이 "확신 있게 틀린 답"을 내는 이유와 대처법은?

G-4. 평가와 안전성

용어: Evaluation / Alignment
정의:
  평가(Eval) — 모델 성능 측정. 정확도, 정밀도, 재현율, F1
  정렬(Alignment) — AI 목표를 인간 가치와 맞추기
정렬 도구:
  RLHF (Reinforcement Learning from Human Feedback)
  Constitutional AI
  레드팀(Red-teaming) — 안전 한계 테스트
점검: AI가 거짓말·해킹 도움·차별 발언 등을 거부하게 하는 게 왜 어려운가?

H. 자주 쓰는 용어 사전

용어한 줄 정의어디서 만나는가
APIApplication Programming Interface. 한 프로그램이 다른 프로그램과 소통하는 규약웹 개발·통합
REST/GraphQLAPI 설계 양식. REST는 자원 중심, GraphQL은 쿼리 중심백엔드 개발
클라이언트·서버요청하는 쪽(클라) vs 응답하는 쪽(서버)모든 네트워크
프론트엔드·백엔드사용자 화면 vs 서버 로직웹·앱 개발
컴파일러·인터프리터컴파일러는 한 번에 번역, 인터프리터는 한 줄씩 실행프로그래밍 언어
버전 관리(Git)코드 변경 이력 추적·협업 도구모든 개발
CI/CDContinuous Integration·Deployment. 자동 빌드·배포DevOps
모놀리식·마이크로서비스한 덩어리 vs 작게 쪼갠 서비스시스템 설계
캐시(Cache)자주 쓰는 데이터를 빠른 곳에 미리 둠성능 최적화
로드 밸런서트래픽을 여러 서버로 분산대규모 서비스
CDNContent Delivery Network. 콘텐츠를 사용자 가까운 서버에 캐싱웹 성능
Docker / Kubernetes컨테이너 도구·관리 도구클라우드 운영
클라우드(AWS/GCP/Azure)빌려 쓰는 컴퓨팅 자원대부분 현대 서비스
OOP / 함수형 / 절차형프로그래밍 패러다임의 3대 갈래코딩 스타일
자료구조와 알고리즘CS 면접·기초의 표준모든 공부
공개키 인프라(PKI)비대칭키 기반 인증 시스템HTTPS, 전자 서명

자기 점검 체크리스트

□ 비트·바이트·이진수의 관계를 안다
□ Big O 표기를 보면 알고리즘 속도를 가늠할 수 있다
□ 배열·연결리스트·스택·큐·해시·트리·그래프가 각각 언제 쓰이는지 안다
□ 추상화 계층(앱→OS→하드웨어) 모델을 이해한다
□ 프로세스와 스레드의 차이를 자기 사례로 설명할 수 있다
□ HTTP·DNS·TCP/IP의 역할을 외운다
□ 대칭키와 비대칭키 암호화의 차이를 안다
□ RDB와 NoSQL이 각각 어떤 상황에 적합한지 안다
□ ACID와 CAP 정리의 의미를 안다
□ 지도·비지도·강화·자기지도 학습의 차이를 안다
□ LLM의 한계(환각·시점·통계 패턴)를 안다

Comments

  • // 댓글을 불러오는 중...
main ⚠ 0 ✕ 0 Ln 1, Col 1 Spaces: 2 UTF-8 LF Markdown