10. 컴퓨터과학 — 계산으로 푸는 학문

“컴퓨터과학은 컴퓨터에 관한 학문이 아니다. 천문학이 망원경에 관한 학문이 아니듯이.” — 에츠허르 데이크스트라


이것을 왜 배우는가?

지금 우리 일상의 거의 모든 것이 컴퓨터로 작동한다. 폰·은행·교통·의료·정부 — 모두 소프트웨어로 움직인다. 컴퓨터과학을 모르면:

  • AI·알고리즘이 어떻게 결정을 내리는지 모른다 — 추천 알고리즘에 일방적으로 휘둘림
  • 자기 데이터의 운명을 모른다 — 어디 저장되고 누가 보는지 모름
  • 자동화될 직업과 안 될 직업을 못 분간한다
  • 간단한 자동화도 못 한다 — 반복 작업을 컴퓨터에 시키지 못함
  • 보안 위협에 무방비 — 피싱·해킹의 작동 원리를 모름

컴퓨터과학을 배우면 **“세상을 계산 가능한 단계로 분해하는 사고법(computational thinking)“**이 손에 들어온다. 이 사고법은 코딩을 안 해도 인생 전반에 쓸모가 있다.

실생활 비유: 컴퓨터과학은 요리법 작성의 기술이다. “어떻게”를 단계로 정확히 쪼개고, 누가/무엇이 그걸 따라가도 같은 결과가 나오게 하는 기술.


어원과 정의

컴퓨터(Computer) = 라틴어 computare (com- “함께” + putare “생각하다, 계산하다”) → “함께 계산하다” 원래 “계산하는 사람”을 가리키는 단어였다. 17~19세기에 “computer”는 수학 계산을 하는 직업의 사람들(주로 여성)이었다. 기계 컴퓨터가 그들을 대체하면서 단어가 기계로 옮겨갔다.

한 줄 정의: 컴퓨터과학(Computer Science)은 계산(computation)이 무엇이고, 어떻게 효율적으로 수행하며, 그것으로 어떤 문제를 풀 수 있는지를 다루는 학문이다.

⚠️ “코딩”은 컴퓨터과학의 한 도구일 뿐이다. CS는 코딩이 아니라 계산적 사고가 본질.


분야가 답하려는 핵심 질문

영역핵심 질문
알고리즘”이 문제를 어떻게 단계로 풀까? 얼마나 빨리 풀 수 있나?”
자료구조”데이터를 어떻게 저장해야 빠르게 다룰 수 있나?”
운영체제”여러 프로그램이 한 컴퓨터를 어떻게 나눠 쓰나?”
네트워크”컴퓨터들은 어떻게 서로 대화하나?”
데이터베이스”대량 데이터를 어떻게 안전·빠르게 저장·조회하나?”
AI/머신러닝”기계가 어떻게 데이터에서 패턴을 학습하나?”
보안”정보를 어떻게 보호하나?”
이론 컴퓨터과학”어떤 문제는 풀 수 있고 어떤 문제는 못 푸는가?”

핵심 개념 6가지

1. 알고리즘 — 문제를 푸는 단계 묶음

왜 필요한가: 알고리즘은 컴퓨터과학의 심장이다. **“무엇을 어떤 순서로 한다”**의 명세.

알고리즘(Algorithm) = 9세기 페르시아 수학자 **알콰리즈미(al-Khwārizmī)**의 이름에서 유래. 그의 책이 라틴어로 옮겨지면서 Algorismus가 됐고, 점차 “체계적 계산 절차”를 뜻하게 됨. *대수(algebra)*도 같은 사람의 책에서 유래.

[일상 알고리즘 — 라면 끓이기]
1. 물 550ml를 냄비에 붓는다
2. 끓인다
3. 면과 스프를 넣는다
4. 4분 30초 더 끓인다
5. 그릇에 옮긴다

→ 누가 따라 해도 같은 결과 = 알고리즘

좋은 알고리즘의 조건:

  • 정확성 (원하는 결과가 나옴)
  • 종료성 (언젠가 끝남)
  • 효율성 (빠르고 메모리 적게)

2. 시간 복잡도 — “얼마나 빨리?”의 측정

왜 필요한가: 같은 문제도 알고리즘 선택에 따라 100배·1000배 차이가 난다. 이걸 미리 가늠하는 도구가 시간 복잡도(Big O 표기).

[자주 만나는 복잡도 — 데이터 100만 개 기준]
O(1)        — 1번
O(log n)    — 약 20번         (이진 탐색)
O(n)        — 100만 번        (선형 탐색)
O(n log n)  — 약 2천만 번     (효율적 정렬)
O(n²)       — 1조 번          (단순 비교 정렬) ← 거의 안 끝남

실생활 비유: 책에서 단어 찾기.

  • O(n) = 첫 페이지부터 한 장씩 넘기기
  • O(log n) = 사전처럼 펼치고 절반씩 좁히기

데이터가 많아질수록 차이가 폭발한다.

3. 자료구조 — 데이터를 담는 방식

왜 필요한가: 같은 데이터라도 어떻게 담느냐에 따라 처리 속도가 천차만별이다.

자료구조비유강점약점
배열(Array)칸막이 책장인덱스로 빠른 접근중간 삽입·삭제 느림
연결 리스트(Linked List)체인삽입·삭제 빠름인덱스 접근 느림
스택(Stack)접시 더미마지막 것 빠르게 꺼냄 (LIFO)중간 못 봄
큐(Queue)줄 서기먼저 들어온 것 먼저 (FIFO)중간 못 봄
해시 테이블(Hash Table)사전키로 즉시 조회메모리 더 씀
트리(Tree)가계도계층 데이터 표현균형 유지 필요
그래프(Graph)지도관계망 표현알고리즘 복잡

✅ “잘 고른 자료구조는 코드를 단순하게 만든다.” — Linus Torvalds

4. 추상화와 계층 — 복잡함을 다루는 법

왜 필요한가: 컴퓨터는 매우 복잡하지만, 우리가 한 번에 모든 걸 다루지 않는다. 각 계층은 아래 계층의 디테일을 숨기고 단순한 인터페이스만 제공한다.

[컴퓨터 시스템의 계층]

응용 프로그램  ← 사용자가 보는 것 (브라우저, 게임)

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

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

하드웨어       ← CPU, 메모리, 디스크

각 계층은 위 계층에 "단순한 사용법"만 제공.
"실제로 어떻게 작동하는지"는 안 보여줌.

실생활 비유: 자동차 운전. 우리는 액셀과 핸들만 안다. 엔진의 연소 메커니즘이나 변속기 톱니바퀴는 추상화돼 있다.

이 추상화 사고는 모든 복잡한 시스템(회사 조직, 도시 행정, 인체)에도 적용되는 일반 도구.

5. 네트워크 — 컴퓨터들이 대화하는 법

왜 알아야 하나: 인터넷은 우리 일상의 토대지만, 어떻게 작동하는지는 거의 안 알려진다.

[웹페이지 한 번 여는 데 일어나는 일]
1. 주소 → IP 주소 변환  (DNS 조회)
   "google.com" → "142.250.196.142"

2. IP로 신호 보내기      (라우팅)
   여러 라우터를 거쳐 목적지에 도달

3. 서버와 악수하기       (TCP 연결)
   "통신 시작합니다" 약속

4. 데이터 요청            (HTTP)
   "이 페이지 줘"

5. 응답 받기              (HTML, CSS, JS)
   브라우저가 해석해서 화면에 그림

IP = Internet Protocol (“인터넷 통신 규약”). DNS = Domain Name System (“도메인 이름 시스템” — 사람이 읽는 이름을 IP로 변환). HTTP = HyperText Transfer Protocol (“문서를 넘기는 규약”).

6. AI / 머신러닝 — 데이터에서 학습하는 기계

왜 알아야 하나: 2020년대 이후 거의 모든 산업의 핵심 기술이 됐다.

[전통 프로그래밍 vs 머신러닝]

전통:        규칙 + 데이터  →  답
            (사람이 규칙 입력)

머신러닝:    데이터 + 답   →  규칙
            (기계가 패턴 학습)

핵심 갈래:

  • 지도학습(Supervised) — 정답이 붙은 데이터로 학습 (스팸 분류, 주가 예측)
  • 비지도학습(Unsupervised) — 정답 없이 패턴 발견 (고객 군집화)
  • 강화학습(Reinforcement) — 시행착오로 보상을 최대화 (알파고, 게임 AI)
  • 딥러닝(Deep Learning) — 신경망 여러 층을 쌓아 복잡한 패턴 학습 (이미지·언어)

**LLM (Large Language Model)**은 딥러닝의 한 종류로, 막대한 텍스트로 다음 단어 예측을 학습한 모델 (ChatGPT, Claude 등).

⚠️ AI는 “이해”하는 게 아니라 “통계적으로 그럴듯한” 출력을 낸다. 사실 확인은 사람의 책임.


일상에서의 적용

상황CS적 사고
반복 작업 자동화알고리즘 + 스크립트
폴더·파일 정리자료구조(트리) 사고
회사 조직 분석추상화 계층으로 보기
비밀번호 관리해시·암호화 원리 이해
AI 활용학습 데이터의 한계 의식
보안 의식피싱·소셜엔지니어링 패턴 알아채기

흔한 오해

컴퓨터과학 = 코딩 ✅ 코딩은 도구 중 하나일 뿐. CS의 본질은 계산적 사고다.

AI는 곧 인간 지능을 능가한다 / AI는 그냥 사기다 ✅ 둘 다 극단. AI는 특정 작업에선 인간을 능가하고, 다른 작업에선 한계가 명확하다.

“클라우드”는 어딘가 신비한 공간 ✅ 다른 사람의 컴퓨터다. 데이터센터에 진짜 서버가 있다.

“양자컴퓨터가 모든 컴퓨터를 대체한다” ✅ 양자컴퓨터는 특정 종류 문제(인수분해, 암호 해독, 일부 시뮬레이션)에 강하고, 일반 작업엔 기존 컴퓨터가 더 효율적.


정리 체크리스트

□ 알고리즘이 무엇이고 왜 정확성·종료성·효율성이 필요한지 안다
□ Big O 표기를 보면 대략적 속도 차이를 가늠할 수 있다
□ 배열·해시·트리·그래프 자료구조가 각각 언제 쓰이는지 안다
□ 컴퓨터 시스템의 계층(앱→OS→하드웨어) 추상화를 이해한다
□ 웹페이지 한 번 여는 데 DNS·HTTP·라우팅이 일어남을 안다
□ 지도학습·비지도학습·강화학습·딥러닝의 차이를 안다
□ "AI는 이해하는 게 아니라 통계적 예측"이라는 한계를 안다

더 깊이 가려면

  • 입문서: Code (찰스 펫졸드 — 컴퓨터의 근본 원리), 알고리즘 산책 (단편 형식)
  • 시각: 유튜브 3Blue1Brown (수학·CS), Computerphile
  • 실습: 파이썬 입문, CS50 (하버드 무료 강의)

💡 핵심 포인트: 컴퓨터과학의 핵심은 **“문제를 단계로 분해하고, 추상화로 복잡함을 다루고, 효율을 측정하는 사고법”**이다. 이 사고법은 코딩 너머 인생 전반에 적용된다.

Comments

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