WWWIKI
컴퓨터 과학
S10
2026-07-11
5
40.77.
AI SUMMARY
Generating...
# 컴퓨터 과학 컴퓨터 과학(computer科學, 영어: computer science) 또는 전산학(電算學)은 계산, 정보, 자동화와 이를 수행하는 컴퓨터 및 계산 시스템을 연구하는 학문이다. 컴퓨터 과학은 계산이 무엇인지, 어떤 문제가 계산 가능한지, 계산을 얼마나 효율적으로 수행할 수 있는지, 그리고 그러한 계산을 실제 시스템으로 어떻게 구현할 수 있는지를 다룬다. 컴퓨터 과학은 알고리즘, 자료 구조, 계산 이론, 프로그래밍 언어, 컴퓨터 시스템, 데이터베이스, 인공지능, 컴퓨터 보안, 소프트웨어 공학 등 이론적·실용적 분야를 포함한다. 이 가운데 일부는 수학과 논리학에 가깝고, 일부는 공학과 시스템 설계에 가깝지만, 모두 계산과 정보 처리라는 공통된 대상을 중심으로 연결된다. 컴퓨터 과학에서 말하는 “컴퓨터”는 단순히 특정한 전자 기기만을 뜻하지 않는다. 연구의 핵심은 컴퓨터 자체의 사용법보다, 계산 절차를 알고리즘으로 표현하고, 정보를 자료 구조와 프로그래밍 언어로 나타내며, 이를 하드웨어와 소프트웨어 시스템에서 실행하는 원리를 밝히는 데 있다. 따라서 컴퓨터 과학은 실제 컴퓨터가 만들어지기 전부터 존재했던 계산과 논리의 문제까지 포함한다. 컴퓨터 과학은 현대 사회의 여러 기술과 밀접하게 관련된다. 인터넷, 검색 엔진, 암호학, 기계 학습, 컴퓨터 그래픽스, 분산 컴퓨팅, 클라우드 컴퓨팅, 데이터 과학 등은 모두 컴퓨터 과학의 이론과 방법을 바탕으로 발전하였다. 또한 자연과학·공학·사회과학·인문학에서 대규모 자료를 분석하거나 복잡한 과정을 모의실험하는 데에도 컴퓨터 과학의 방법이 사용된다. 컴퓨터 과학은 넓게 말해 계산과 정보 처리의 이론, 설계, 구현, 응용을 연구하는 학문이다. 여기서 계산은 어떤 입력으로부터 정해진 절차에 따라 출력을 얻는 과정을 뜻하고, 알고리즘은 그러한 계산을 수행하기 위한 명확한 절차를 뜻한다. 컴퓨터 과학은 알고리즘이 올바른 결과를 내는지, 얼마나 많은 시간과 기억 공간을 쓰는지, 어떤 문제는 원리적으로 계산할 수 없는지 등을 연구한다. 컴퓨터 과학의 범위는 단순한 컴퓨터 프로그래밍보다 넓다. 프로그래밍은 계산 절차를 실제 프로그래밍 언어로 표현하는 중요한 활동이지만, 컴퓨터 과학은 그보다 더 근본적인 계산 모델, 알고리즘의 설계와 분석, 정보의 표현, 시스템의 구조, 프로그램의 의미와 검증, 인간과 컴퓨터의 상호작용까지 다룬다. 이러한 이유로 컴퓨터 과학은 “컴퓨터를 사용하는 기술”이라기보다 “계산과 정보 처리의 원리를 연구하는 학문”으로 이해된다. 컴퓨터 공학, 소프트웨어 공학, 정보기술, 정보과학은 컴퓨터 과학과 밀접하지만 강조점이 다르다. 자세한 관계는 아래의 다른 분야와의 관계 절에서 다룬다. 영어의 computer science는 문자 그대로는 “컴퓨터 과학”이지만, 역사적으로는 컴퓨터라는 기계만을 연구하는 좁은 분야를 뜻하지 않는다. 오늘날 이 말은 계산의 이론적 기초, 알고리즘, 프로그래밍, 하드웨어와 소프트웨어 시스템, 정보 처리의 응용을 포괄하는 넓은 학문 분야를 가리킨다. 한국어에서는 컴퓨터 과학, 전산학, 컴퓨터공학이라는 말이 문맥에 따라 함께 쓰인다. 이 문서에서는 computer science에 대응하는 학문 분야를 주로 컴퓨터 과학이라고 부른다. 다만 대학 학과명이나 교육과정에서는 “컴퓨터공학”이라는 명칭이 같은 범위를 넓게 가리키는 경우도 있으므로, 문맥에 따라 구별이 필요하다. 영어권에서 computer engineering은 보통 컴퓨터 공학, 즉 하드웨어·소프트웨어·통신 요소를 통합한 컴퓨터 기반 시스템의 설계와 구현에 중점을 두는 분야를 가리킨다. 반면 computer science는 계산의 이론적 기초, 알고리즘, 프로그래밍 기법, 운영체제, 인공지능 등 더 넓은 계산 원리를 다룬다. 컴퓨터 과학의 이론적 범위에는 계산 가능성 이론, 오토마타 이론, 형식 언어, 계산 복잡도 이론, 알고리즘 분석 등이 포함된다. 이러한 분야는 “무엇이 계산 가능한가”, “어떤 계산이 효율적인가”, “계산 과정은 어떤 수학적 모델로 표현할 수 있는가”와 같은 질문을 다룬다. 컴퓨터 과학의 시스템적 범위에는 컴퓨터 구조, 운영체제, 컴파일러, 컴퓨터 네트워크, 분산 컴퓨팅, 데이터베이스, 컴퓨터 보안 등이 포함된다. 이들 분야는 계산을 실제 장치와 소프트웨어 시스템 위에서 신뢰성 있고 효율적으로 실행하는 방법을 연구한다. 컴퓨터 과학의 응용적 범위에는 인공지능, 기계 학습, 컴퓨터 그래픽스, 인간-컴퓨터 상호 작용, 정보 검색, 데이터 마이닝, 생물정보학, 계산과학 등이 포함된다. 이러한 분야에서는 알고리즘과 계산 시스템을 사용하여 지능적 행동, 시각적 표현, 대규모 자료 분석, 과학적 모의실험 등 구체적인 문제를 해결한다. 현대 교육과정에서는 컴퓨터 과학의 지식 영역을 알고리즘 기초, 컴퓨터 구조, 인공지능, 데이터 관리, 프로그래밍 언어, 그래픽스와 상호작용, 수학·통계 기초, 네트워크, 운영체제, 병렬·분산 컴퓨팅, 보안, 소프트웨어 공학 등으로 나누어 설명하기도 한다. 이러한 분류는 컴퓨터 과학이 하나의 단일 기술이 아니라, 여러 하위 분야가 서로 연결된 학문임을 보여 준다. 컴퓨터 과학의 역사는 현대적인 디지털 컴퓨터의 등장보다 앞선다. 사람들은 오래전부터 주판과 같은 계산 도구를 사용했고, 계산을 일정한 절차로 수행하는 방법도 발전시켜 왔다. 이러한 절차적 계산 방법은 오늘날의 알고리즘(영어: algorithm) 개념으로 이어졌으며, 컴퓨터 과학의 역사에서 하드웨어보다 더 오래된 뿌리를 이룬다. 다만 컴퓨터 과학의 역사는 계산 장치의 역사와 완전히 같지는 않다. 계산 가능성, 알고리즘, 정보 이론, 프로그래밍 언어처럼 실제 장치와 독립적으로 발전한 이론도 중요한 일부이다. 근대 이전의 계산 도구는 주로 산술 계산을 빠르고 정확하게 수행하기 위한 것이었다. 주판, 계산자, 기계식 계산기(영어: mechanical calculator)는 모두 수치 계산을 도와 주는 장치였지만, 임의의 절차를 일반적으로 표현하고 실행하는 현대적 의미의 컴퓨터와는 구별된다. 그러나 이러한 장치들은 계산을 물리적 과정으로 구현할 수 있다는 생각을 발전시키는 데 기여했다. 19세기에는 계산을 기계적으로 자동화하려는 시도가 더욱 구체화되었다. 찰스 배비지는 차분기관(영어: Difference Engine)과 해석기관(영어: Analytical Engine)을 구상했으며, 특히 해석기관은 계산 절차를 기계가 따를 수 있는 명령으로 표현한다는 점에서 중요한 의미를 가진다. 에이다 러브레이스는 배비지의 해석기관에 관한 글에서 기계가 일련의 명령, 곧 프로그램(영어: program)을 따라 복잡한 계산을 수행할 수 있음을 설명했으며, 흔히 초기의 컴퓨터 프로그래밍 개념과 관련되어 언급된다. 19세기 말과 20세기 초에는 천공 카드(영어: punched card)와 표 작성 기계가 통계 처리와 행정 업무에 사용되었다. 허먼 홀러리스의 표 작성 장치는 대규모 자료를 기계적으로 처리할 수 있음을 보여 주었고, 이러한 흐름은 뒤에 IBM과 같은 기업의 계산 장비 및 정보 처리 기술로 이어졌다. 이 시기의 장치들은 현대 컴퓨터 과학의 이론을 직접 만든 것은 아니지만, 계산과 자료 처리가 산업적·제도적으로 중요해지는 배경을 형성했다. 20세기 초에는 수리논리학과 기초론의 문제에서 계산의 본질을 묻는 질문이 제기되었다. 특히 어떤 절차가 “효과적으로 계산 가능하다”는 말이 무엇을 뜻하는지, 모든 수학적 명제를 판정하는 일반적인 절차가 존재하는지와 같은 문제가 중심이 되었다. 이러한 논의는 계산 가능성 이론(영어: computability theory)과 계산 이론의 출발점이 되었다. 앨런 튜링은 1936년에 튜링 기계(영어: Turing machine)라는 추상적 계산 모델을 제시하였다. 튜링 기계는 실제 기계라기보다 계산 절차의 핵심 구조를 추상화한 수학적 모형이며, 이후 디지털 컴퓨터의 이론적 기초를 설명하는 데 중요한 역할을 했다. 같은 시기 알론조 처치의 람다 계산(영어: lambda calculus)도 계산 가능한 함수의 개념을 형식화하였고, 두 접근은 오늘날 처치-튜링 명제(영어: Church–Turing thesis)와 관련되어 설명된다. 계산 이론의 형성은 컴퓨터 과학을 단순한 기계 제작이나 계산 기술에서 구별되게 만들었다. 정지 문제와 같은 결과는 어떤 문제는 원리적으로 알고리즘으로 해결할 수 없음을 보여 주었고, 이후 계산 복잡도 이론은 계산 가능한 문제들 사이에서도 필요한 시간과 기억 공간이 크게 다를 수 있음을 연구하게 되었다. 이러한 이론적 전통은 오늘날에도 컴퓨터 과학의 핵심 기반으로 남아 있다. 제2차 세계 대전 전후에는 전자 공학의 발전과 함께 전자식 계산 장치가 등장하였다. ENIAC은 초기의 전자식 범용 디지털 컴퓨터(영어: general-purpose electronic digital computer) 가운데 하나로 알려져 있으며, 이후 전자식 컴퓨터는 과학 계산, 군사 계산, 산업 계산에 빠르게 사용되기 시작하였다. 이 시기에는 프로그램과 자료를 같은 기억장치에 저장하는 저장 프로그램 방식(영어: stored-program concept)도 정식화되었다. 이 방식은 명령을 배선이나 외부 장치에 고정하지 않고 기억 장치 안에 저장하여, 같은 기계가 다양한 작업을 수행할 수 있게 한다. 이러한 발상은 폰 노이만 구조와 결합하여 현대 컴퓨터 구조의 기본 원리로 자리 잡았다. 클로드 섀넌의 연구는 정보 이론(영어: information theory)의 형성에 결정적인 역할을 했다. 정보 이론은 메시지의 의미와 별개로 신호의 전달, 부호화, 잡음, 통신 용량을 수학적으로 다루며, 통신 공학, 부호 이론, 데이터 압축, 암호학 등 여러 분야와 연결되었다. 1940년대 후반부터 컴퓨터가 단순한 계산 장치를 넘어 과학 연구와 정보 처리의 도구로 쓰이면서, 계산을 일반적으로 연구하는 학문 분야가 형성되기 시작하였다. IBM은 1945년에 컬럼비아 대학교에 왓슨 과학 계산 연구소(영어: Watson Scientific Computing Laboratory)를 열었고, 이와 같은 연구 환경은 학계와 산업계가 계산 기술을 함께 발전시키는 데 영향을 주었다. 1950년대에는 컴퓨터 과학 교육이 대학 안에서 별도의 과정으로 정착하기 시작하였다. 케임브리지 대학교의 컴퓨터 연구소는 1953년에 수치해석과 자동 계산 디플로마 과정(영어: Diploma in Numerical Analysis and Automatic Computing)을 시작했으며, 이는 영국에서 제도화된 초기 컴퓨팅 교육 과정 가운데 하나였다. 미국에서는 1962년에 퍼듀 대학교에 컴퓨터 과학과가 설치되었다. 이 시기에는 프로그래밍 언어, 운영체제, 컴퓨터 구조, 수치해석, 알고리즘 등의 교육과 연구가 점차 하나의 학문 분야로 묶였고, 컴퓨터 과학은 수학이나 전기공학의 부속 영역이 아니라 독립적인 학과와 교육과정을 갖춘 분야로 자리 잡기 시작하였다. 1960년대와 1970년대에는 컴파일러, 운영체제, 데이터베이스, 컴퓨터 네트워크, 프로그래밍 언어론 같은 분야가 빠르게 발전하였다. 동시에 계산 복잡도 이론과 형식 언어 이론도 성장하면서, 컴퓨터 과학은 실제 시스템을 만드는 기술과 계산의 수학적 한계를 연구하는 이론을 함께 포함하는 학문이 되었다. 1970년대 이후 마이크로프로세서와 개인용 컴퓨터의 보급은 컴퓨터 과학의 사회적 영향력을 크게 넓혔다. 컴퓨터가 대학과 연구소의 특수 장비에서 사무실과 가정의 도구로 확산되면서, 소프트웨어 공학, 인간-컴퓨터 상호 작용, 컴퓨터 그래픽스, 정보 검색 같은 분야의 중요성도 커졌다. 1990년대 이후 인터넷과 월드 와이드 웹의 보급은 컴퓨터 과학의 연구 대상을 더욱 확장하였다. 분산 컴퓨팅, 컴퓨터 보안, 암호학, 데이터베이스, 검색 엔진, 사회 연결망 분석은 대규모 네트워크와 자료를 다루는 핵심 분야가 되었고, 컴퓨터 과학은 정보 사회의 기반 학문으로 자리 잡았다. 21세기에는 인공지능, 기계 학습, 데이터 과학, 클라우드 컴퓨팅, 양자 컴퓨팅, 생물정보학, 계산과학 등이 빠르게 성장하였다. 현대 컴퓨터 과학은 알고리즘과 계산 이론에서 출발한 원리를 바탕으로, 대규모 자료와 복잡한 시스템, 자동화 가능한 지능적 행위의 한계와 가능성을 함께 탐구하는 학문으로 발전하고 있다. 컴퓨터 과학의 여러 분야는 서로 다른 문제를 다루지만, 그 바탕에는 몇 가지 공통된 개념이 있다. 대표적으로 계산, 알고리즘, 정보, 자료 구조, 추상화, 프로그래밍 언어, 컴퓨터 시스템이 있다. 이 개념들은 이론 컴퓨터 과학에서 실제 소프트웨어와 하드웨어 시스템에 이르기까지 넓게 사용된다. 계산 또는 컴퓨테이션(영어: computation)은 어떤 입력으로부터 정해진 규칙이나 절차를 따라 출력을 얻는 과정이다. 컴퓨터 과학에서는 실제 전자식 컴퓨터에서 일어나는 계산뿐 아니라, 튜링 기계(영어: Turing machine), 람다 대수(영어: lambda calculus), 오토마타와 같은 추상적 계산 모델도 연구한다. 이러한 모델은 계산의 본질을 기계의 구체적인 형태와 분리하여 분석하게 해 준다. 계산 가능성(영어: computability)은 어떤 문제가 원리적으로 알고리즘에 의해 풀릴 수 있는지를 묻는 개념이다. 계산 가능성 이론은 어떤 함수나 문제가 계산 가능한지, 어떤 문제는 어떤 절차를 사용해도 해결할 수 없는지를 연구한다. 대표적인 예로 정지 문제는 임의의 프로그램이 언젠가 종료하는지를 판정하는 일반 알고리즘이 존재하지 않음을 보여 준다. 이 관점에서 컴퓨터 과학은 단순히 빠른 계산 방법을 찾는 학문이 아니라, 계산으로 해결할 수 있는 것과 해결할 수 없는 것의 경계를 연구하는 학문이기도 하다. 이러한 질문은 수리논리학, 형식 언어, 오토마타 이론, 계산 이론과 깊게 연결된다. 알고리즘(영어: algorithm)은 주어진 문제를 해결하기 위한 명확하고 유한한 절차이다. 예를 들어 수를 정렬하는 절차, 두 지점 사이의 최단 경로를 찾는 절차, 데이터베이스에서 원하는 항목을 검색하는 절차는 모두 알고리즘으로 표현될 수 있다. 알고리즘의 설계와 분석은 컴퓨터 과학의 중심 주제이다. 알고리즘을 평가할 때에는 단순히 정답을 내는지만이 아니라, 얼마나 효율적으로 동작하는지도 중요하다. 이를 위해 시간 복잡도(영어: time complexity)와 공간 복잡도(영어: space complexity)를 사용한다. 시간 복잡도는 입력 크기가 커질 때 필요한 계산 단계 수가 어떻게 증가하는지를 나타내고, 공간 복잡도는 필요한 기억 공간의 양을 나타낸다. 계산 복잡도 이론은 문제를 푸는 데 필요한 계산 자원의 양을 기준으로 문제들을 분류한다. 예를 들어 P-NP 문제는 효율적으로 검증할 수 있는 모든 문제가 효율적으로 풀 수도 있는지를 묻는 문제이다. 이처럼 복잡도 이론은 알고리즘의 한계와 효율성의 본질을 다룬다. 정보(영어: information)는 컴퓨터 과학에서 계산의 대상이자 결과이다. 정보는 비트(영어: bit), 수, 문자, 이미지, 소리, 그래프, 논리식 등 다양한 형태로 표현될 수 있다. 컴퓨터 시스템에서는 이러한 정보가 일정한 규칙에 따라 부호화(영어: encoding)되어 저장되고 처리된다. 정보를 어떻게 표현하느냐는 계산의 효율성과 가능성에 큰 영향을 준다. 예를 들어 같은 수라도 이진수, 십진수, 부동소수점 수로 표현할 수 있고, 같은 자료도 배열, 연결 리스트, 해시 테이블, 트리, 그래프 등 서로 다른 자료 구조(영어: data structure)로 저장할 수 있다. 자료 구조는 알고리즘이 자료에 접근하고 수정하는 방식을 결정한다. 정보 이론은 정보량, 부호화, 압축, 통신의 한계를 수학적으로 연구한다. 데이터 압축, 오류 검출과 정정, 암호학, 통신 공학은 모두 정보의 표현과 전달 방식에 관한 문제와 관련된다. 프로그램(영어: program)은 알고리즘이나 계산 절차를 컴퓨터가 실행할 수 있는 형태로 표현한 것이다. 프로그램은 일반적으로 프로그래밍 언어(영어: programming language)로 작성되며, 프로그래밍 언어는 계산을 표현하기 위한 문법과 의미를 제공한다. 프로그래밍 언어론은 프로그래밍 언어의 구조, 의미, 타입 체계, 실행 방식, 표현력을 연구