맨위로가기

컴퓨터 과학

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

컴퓨터 과학은 컴퓨터와 관련된 현상을 연구하는 학문으로, 계산의 이론, 하드웨어 및 소프트웨어의 설계, 문제 해결 등을 포괄한다. 주판과 같은 계산 도구에서 시작하여 1940년대 현대적 의미의 컴퓨터가 등장하면서 학문으로 발전했으며, 수학, 공학 등 여러 분야와 융합하여 발전해왔다. 현재는 이론, 알고리즘, 프로그래밍, 컴퓨터 시스템, 인공지능 등 다양한 분야로 세분화되어 있으며, 한국에서도 1970년대부터 교육이 시작되어 IT 강국으로서 세계적인 경쟁력을 갖추고 있다.

더 읽어볼만한 페이지

  • 응용과학 - 응용인류학
  • 응용과학 - 우주과학
    우주과학은 태양, 행성, 별, 은하 등 다양한 천체의 기원, 진화, 물리적 특성, 화학적 조성, 상호 작용 등을 탐구하는 학문으로, 천체물리학, 우주론, 행성과학, 천체화학 등 다양한 하위 분야로 구성된다.
  • 소프트웨어 개발 - 스파이웨어
    스파이웨어는 사용자의 동의 없이 설치되어 개인 정보를 수집하거나 시스템을 감시하며, 다양한 형태로 존재하여 광고 표시, 정보 탈취, 시스템 성능 저하 등의 피해를 유발하는 악성 프로그램이다.
  • 소프트웨어 개발 - 셰어웨어
    셰어웨어는 일정 기간 무료 사용 또는 기본 기능 무료 제공 후 추가 기능 유료 구매 방식으로 배포되는 소프트웨어의 한 종류이며, 다양한 형태로 제공되고 인터넷을 통해 배포되어 라이선스 키를 통해 정식 버전을 사용할 수 있다.
  • 컴퓨터 과학 - 수학적 최적화
    수학적 최적화는 주어진 집합에서 실수 또는 정수 변수를 갖는 함수의 최댓값이나 최솟값을 찾는 문제로, 변수 종류, 제약 조건, 목적 함수 개수에 따라 다양한 분야로 나뉘며 여러 학문 분야에서 활용된다.
  • 컴퓨터 과학 - 증명 보조기
    증명 보조기는 수학적 증명의 정확성을 검증하고 형식적인 증명 탐색을 지원하는 소프트웨어 도구로, 고차 논리, 의존 타입, 작은 커널, 자동 정리 증명, 반사 증명, 코드 생성 등의 다양한 기능을 제공하며, "정리 증명기 박물관" 프로젝트를 통해 소스 보존을 목표로 하는 다양한 시스템들이 존재한다.
컴퓨터 과학
컴퓨터 과학 개요
람다 대수의 처치 수 표현식
프로그래밍 언어 이론
퀵 정렬 알고리즘의 플롯
계산 복잡도 이론
모션 캡처를 사용하여 제작된 컴퓨터 애니메이션의 예
인공지능
반가산기 회로
컴퓨터 구조
기본 정보
학문 분야알고리즘, 데이터 구조, 프로그래밍 언어, 컴퓨터 구조, 컴퓨터 네트워크, 운영 체제, 인공지능 등을 포함하는 광범위한 학문 분야
핵심 질문'무엇을 (효율적으로) 자동화할 수 있는가?'
정의정보를 기술하고 변환하는 알고리즘 프로세스의 체계적인 연구, 이론, 분석, 설계, 효율성, 구현 및 응용을 다루는 학문
주요 분야
이론 컴퓨터 과학계산 이론
정보 이론
알고리즘 이론
자료 구조
형식 언어 이론
컴퓨터 시스템컴퓨터 구조
컴퓨터 네트워크
운영 체제
응용 컴퓨터 과학인공지능
기계 학습
컴퓨터 그래픽스
데이터베이스
컴퓨터 비전
분산 컴퓨팅
소프트웨어 공학
프로그래밍 언어 이론
정보보안
웹 개발
수치해석
과학 컴퓨팅
게임 이론
관련 주제
연관 분야수학
공학
인지 과학
물리학
생물학
심리학
언어학
철학
주요 연구 질문'무엇을 자동화할 수 있는가?'
'데이터를 어떻게 효율적으로 처리하고 저장할 수 있는가?'
'어떻게 지능적인 시스템을 만들 수 있는가?'
'효율적인 알고리즘을 설계하는 방법은 무엇인가?'
'계산의 근본적인 한계는 무엇인가?'
중심 개념알고리즘
데이터
프로그램
계산
정보
역사컴퓨터 과학의 역사
컴퓨터 과학 개척자
튜링상
관련 학문정보 이론
전기 공학
추가 정보
관련 용어컴퓨터 과학자
전산학
정보 과학
정보 공학
학문적 의미컴퓨터 과학은 정보 처리와 관련된 모든 측면을 다루는 학문
컴퓨터 과학은 추상적인 개념부터 실제 구현까지 광범위한 영역을 포괄
발전 과정초기에는 수학과 논리학에 기반을 둠
점차 독립적인 학문 분야로 발전
연구 방법이론적 연구
실험적 연구
모형화
시뮬레이션

2. 역사

컴퓨터 과학의 역사는 현대 디지털 컴퓨터가 발명되기 이전 시대로 거슬러 올라간다. 고대부터 주판과 같은 계산 도구가 존재했으며, 17세기에는 빌헬름 쉬카르트에 의해 최초의 기계식 계산기가 등장했다.[89]

1960년 이전에는 컴퓨터가 세상에 존재하지 않았고, 몇몇 선구자들의 상상 속에만 있었다. 1946년 최초의 컴퓨터인 에니악이 등장한 이후, EDSAC, UNIVAC, MARK 등의 발전을 거쳐 정보화 사회가 도래하였다. 컴퓨터는 빠른 속도로 발전하여 산업뿐만 아니라 일반 가정에서도 사용되고 있다. 제2차 세계 대전 이후 컴퓨터는 단순 계산 기능을 넘어 의사 결정 기능까지 발전하면서 경영 방식에도 큰 변화를 가져왔다.

경영정보시스템(MIS)의 발전에서 볼 수 있듯이, 기업에서 컴퓨터는 전략적 의사 결정에 활용되고 있다. 수치 제어와 같은 프로세스 제어 기술은 공정 자동화, 사무 자동화를 가능하게 했으며, 개인용 컴퓨터의 보급은 가정의 정보화와 연결되어 사회 전체의 정보통신 시스템을 구축하는 데 기여했다.

프로그래밍 기술의 발전은 컴퓨터가 기업 경영에 정착하는 데 중요한 역할을 했다. 그러나 소프트웨어 개발의 어려움은 여전히 과제로 남아 있으며, 이러한 문제를 해결하기 위해 컴퓨터 과학이라는 새로운 학문이 탄생하게 되었다.[102]

19세기 초 찰스 배비지차분기관을 개발하고, 해석기관을 설계했다.[90] 1843년 에이다 러브레이스베르누이 수를 계산하는 알고리즘을 작성했는데, 이는 컴퓨터에서 구현하기 위해 특별히 고안된 최초의 알고리즘으로 여겨진다.[24] 1890년에는 허먼 홀러리스가 발명한 펀치 카드 시스템이 미국 인구 조사에 처음으로 사용되었다.[91]

1920년대 이전 “computer”라는 단어는 계산을 직업으로 하는 사람(계산원)을 가리켰으나, 이 시기에 쿠르트 괴델, 알론조 처치, 앨런 튜링 등에 의해 현대적 계산 이론계산 모델이 고안되었다. 이들은 계산 가능성에 관심을 가졌고, 자동 계산 기계 개발에 대한 욕구에 기반하여 연구를 진행했다. 이들은 모든 계산 작업을 (이론상) 모두 실행 가능한 범용 계산 시스템을 구축하고자 했으며, 이전의 전용 기계를 범용 컴퓨터의 개념으로 일반화했다.

1940년대에 들어 더 새롭고 강력한 컴퓨터가 개발됨에 따라 “computer”라는 단어는 기계를 가리키는 단어가 되었다.

2. 1. 초기 발전





주판과 같이 계산을 돕는 도구는 고대부터 존재했다. 1623년 빌헬름 시카르트는 최초의 기계식 계산기를 만들었다.[89] 19세기 초 찰스 배비지차분기관을 만들었고, 해석기관을 설계했다.[90] 1843년 에이다 러브레이스베르누이 수를 계산하는 알고리즘을 작성했는데, 이는 컴퓨터에서 구현하기 위해 특별히 고안된 최초의 알고리즘으로 여겨진다.[24] 1890년에는 허먼 홀러리스가 발명한 펀치 카드 시스템이 미국 인구 조사에 처음으로 사용되었다.[91]

1920년대 이전 “computer”라는 단어는 계산을 직업으로 하는 사람(계산원)을 가리켰다. 하지만 이 시대에 현대에 통하는 계산 이론계산 모델이 고안되었다. 쿠르트 괴델, 앨론조 처치, 앨런 튜링 등은 계산 가능성에 관심을 가졌다. 이 연구는 자동적으로 계산하는 “계산하는 기계”를 개발하고자 하는 욕구에 기반했다. 이들은 모든 계산 작업을 (이론상) 모두 실행 가능한 범용 계산 시스템을 구축하고자 했으며, 그 이전의 전용 기계를 범용 컴퓨터의 개념으로 일반화했다.

1940년대에 들어 더 새롭고 강력한 컴퓨터가 개발됨에 따라 “computer”라는 단어는 기계를 가리키는 단어가 되었다. 아타나소프-베리 컴퓨터에니악과 같은 전자식 컴퓨터들이 제작되었다.

2. 2. 학문적 발전

1940년대에 아타나소프-베리 컴퓨터에니악과 같은 새롭고 더 강력한 컴퓨팅 기계가 개발되면서, "컴퓨터"라는 용어는 사람을 지칭하던 것에서 기계를 가리키는 것으로 변화하였다.[32] 컴퓨터가 수학적 계산 이상의 용도로 사용될 수 있다는 것이 분명해지면서, 컴퓨터 과학 분야는 일반적인 계산 연구로 확장되었다. 1945년, IBM은 뉴욕시 컬럼비아 대학교에 왓슨 과학 컴퓨팅 연구소를 설립하였다. 맨해튼 서쪽에 위치한 개조된 사교 클럽 건물은 순수 과학에 전념하는 IBM의 최초 연구소였다. 이 연구소는 오늘날 전 세계에 연구 시설을 운영하는 IBM 연구 부문의 전신이다.[33] IBM과 컬럼비아 대학교의 긴밀한 관계는 새로운 과학 분야 출현에 결정적인 역할을 했으며, 컬럼비아 대학교는 1946년에 컴퓨터 과학에 대한 최초의 학점 과정 중 하나를 제공했다.[34] 컴퓨터 과학은 1950년대와 1960년대 초에 독립적인 학문 분야로 자리 잡기 시작했다.[35][36] 세계 최초의 컴퓨터 과학 학위 프로그램인 케임브리지 컴퓨터 과학 디플로마는 1953년 케임브리지 대학교 컴퓨터 연구소에서 시작되었다. 미국 최초의 컴퓨터 과학 학과는 1962년 퍼듀 대학교에 설립되었다.[37] 실용적인 컴퓨터가 등장한 이후, 컴퓨팅의 많은 응용 프로그램은 그 자체로 독립적인 연구 분야가 되었다.

일부 대학에는 컴퓨터 과학을 전공하는 부서가 있다. 최근 컴퓨터 과학과 컴퓨터(계산 장치)의 보급으로, 모든 사람에게 기본적인 기술로서 "계산적 사고"(Computational Thinking)가 중요하게 여겨지고 있다.[94] 국제 학회인 ACM에서는 컴퓨터 과학 전공을 위한 커리큘럼을 제시하고 있으며, 1968년의 ''Curriculum 68'' 이후 정기적으로 개정되고 있다. 2015년 현재 최신판은 ''CS 2013''(''Computer Science 2013: Curriculum Guidelines for Undergraduate Programs in Computer Science'')이다. 일본의 정보처리학회도 이에 맞춰 "커리큘럼 표준"을 발표하고 있으며, 2015년 현재 최신판은 J07이다.[95]

2. 3. 한국의 컴퓨터 과학

1970년대부터 컴퓨터 과학 교육이 시작되었으며, 1980년대 이후 PC 보급과 인터넷 확산으로 급속히 발전했다. 한국은 IT 강국으로서 컴퓨터 과학 분야에서 세계적인 경쟁력을 갖추고 있다. 특히, 소프트웨어 개발, 인공지능, 네트워크 분야에서 뛰어난 성과를 거두고 있다.

3. 용어

초기에는 '컴퓨터 과학'이라는 용어 외에도 '정보과학', '시스템 엔지니어링' 등 다양한 용어가 사용되었다.[103] 1964년 애치슨(W. H. Atchison) 및 햄블렌(G.W. Hamblen) 등이 미국, 캐나다, 멕시코의 93개 대학을 대상으로 조사한 결과, 대부분 '정보과학'이나 '시스템 엔지니어링'보다 '컴퓨터 과학'이라는 용어를 선호하는 것으로 나타났다.[103]

1960년대 이후 '컴퓨터 과학'이라는 용어가 널리 사용되기 시작하여 현재는 이 분야를 대표하는 용어로 자리 잡았다. 1965년 미국의 컴퓨팅기기협회(Association of Computer Machinery)는 컴퓨터 과학이 컴퓨팅 장치나 수치 계산 기술뿐만 아니라 정보 문제를 광범위하게 다루는 과학 체계임을 강조했다.[103] 같은 해 캐나다 서온트리오 대학에서 열린 '시스템과 컴퓨터 과학 콘퍼런스'에서는 컴퓨터 과학이 수치 분석, 응용 통계, OR, 데이터 처리 등 여러 영역에서 응용 과학으로서의 프레임워크 설정을 목표로 한다는 점이 명확해졌다.[103]

'컴퓨터 과학'이라는 학문 체계의 존재와 본질에 대한 논쟁은 여전히 활발하지만,[104] 관련 출판물은 그 정의 확립 이전부터 많이 나왔다.[104] 초기 컴퓨팅 시대에는 컴퓨팅 분야 종사자를 지칭하기 위해 "튜링 엔지니어(turingineer)", "투롤로지스트(turologist)", "플로우 차트맨(flow-charts-man)", "응용 메타 수학자(applied meta-mathematician)", "응용 인식론자(applied epistemologist)",[44] "컴프톨로지스트(comptologist)", "히폴로지스트(hypologist)",[45] "컴퓨틱스(computics)"[46] 등 여러 용어가 제안되었다.

유럽에서는 "자동 정보"(예: 이탈리아어 "informazione automatica") 또는 "정보 및 수학"의 축약된 번역에서 파생된 용어가 종종 사용된다. 예를 들어 프랑스어 ''informatique'', 독일어 ''Informatik'', 이탈리아어 및 네덜란드어 ''informatica'', 스페인어 및 포르투갈어 ''informática'', 슬라브어족 및 헝가리어 ''informatika'', 그리스어 ''pliroforiki'' (πληροφορική, 정보학을 의미) 등이다.[47]

정보 과학(information science)과 컴퓨터 과학의 상관성에 관한 이론적 분석, 또는 컴퓨터 연구에서 이론과 응용 간의 불균형 문제는 중요한 과제로 남아있다.[103]

4. 컴퓨터 과학의 정의와 본질

1967년 사이먼(H. A. Simon) 교수는 뉴웰(A. Newell)·펠리스(A.G. Pelris)와 함께 『사이언스』지에 공개장을 보내 컴퓨터 과학의 정당성을 주장했다. 이들은 현상이 있는 곳에는 이를 기술하는 과학이 존재하며, 컴퓨터가 존재하는 한 컴퓨터를 연구하는 과학으로서 '컴퓨터 과학'이 존재해야 한다고 주장했다.[105]

이들은 컴퓨터 과학이 인위적이고 불변의 법칙이 없다는 반론에 대해, 컴퓨터와 컴퓨터 프로그램은 계속 발전하고 있으며, 과학의 현상과 영역은 항상 변화하는 것이라고 반박했다. 천문학, 물리학, 심리학, 수학 등의 예를 들며, 컴퓨터 과학만이 변화하는 것이 아니라고 주장했다.[105]

또한, 컴퓨터 과학이 다른 과학의 분지과학(分枝科學)이라는 반론에 대해서는, 컴퓨터 연구에 기존 과학의 연구가 필요하다는 점을 인정하면서도, 현상이 과학의 중심을 정의하는 것이지 다른 과학과의 경계가 중요한 것은 아니라고 반박했다. 생화학동물학이나 화학의 존재를 부정하지 않는다는 점을 예로 들었다.[105]

컴퓨터가 공학에 귀속된다는 의문에 대해서는, 전기물리학과 공학, 식물식물학농학에 모두 관련되는 것처럼 컴퓨터도 공학과 과학 양쪽에 관련된다고 설명했다. '컴퓨터 과학'은 전문적인 과학으로서 발전 과정에서 분석과 가설의 조합, 순수 연구와 애플리케이션 분석의 통합적 전개를 통해 학문적 체계를 명확히 할 필요가 있다고 주장했다.[105]

에츠허르 데이크스트라는 "컴퓨터 과학에서 컴퓨터란, 천문학에서 망원경 이상의 것이 아니다."라고 말하며, 컴퓨터 과학이 단순히 컴퓨터라는 기계에 대한 학문이 아님을 강조했다.

컴퓨터 과학은 수학, 인지 과학, 물리학, 언어학 등 다양한 학문과 밀접한 관계를 맺고 있다. 특히 수학은 컴퓨터 과학의 기초에 큰 영향을 미쳤는데, 조지 불불 대수이진법을 기반으로 한 대수학으로, 체론과 환론 또한 중요한 영향을 미쳤다. 쿠르트 괴델앨런 튜링 등의 수학자들은 컴퓨터 과학의 초기에 큰 영향을 주었으며, 수리논리학, 범주론, 도메인 이론, 대수학 등은 컴퓨터 과학과 함께 발전하고 있다.

5. 다른 분야와의 관계

컴퓨터 과학은 수학, 인지 과학, 물리학, 언어학 등 다양한 학문 분야와 밀접하게 관련되어 있다. 특히, 수학은 컴퓨터 과학의 기초 이론을 제공하며, 인지 과학인공지능 연구에 중요한 영향을 미친다.[93]

컴퓨터 과학은 수학과 가장 밀접한 관계를 가지며, 수학에 기초를 둔 과학의 한 분야이다. 조지 불불 대수이진법을 기반으로 한 대수학으로 컴퓨터 과학의 기초에 큰 영향을 미쳤다. 체론과 환론 또한 중요한 영향을 미쳤다. 초기의 컴퓨터 과학은 쿠르트 괴델앨런 튜링 등의 수학자들의 영향을 많이 받았으며, 수리논리학, 범주론, 도메인 이론, 대수학과 같은 수학 분야들은 컴퓨터 과학과 함께 발전하고 있다.[93]

컴퓨터 과학과 소프트웨어 공학의 관계는 논쟁의 대상이다. "소프트웨어 공학"이라는 용어가 무엇을 의미하는지, 그리고 컴퓨터 과학의 범위를 어떻게 정의할 것인가는 오랫동안 논의되어 왔다.

5. 1. 컴퓨터 과학과 경영 관리

컴퓨터는 단순한 계산 기능을 넘어 기업 경영의 의사 결정 과정에 참여하고 있다. 경영정보시스템(MIS)의 발전은 컴퓨터를 활용한 전략적 의사 결정을 가능하게 한다.[102] 컴퓨터 과학은 경영학 혁신의 에이전트(agent)적 기능을 수행하며, 경영 관리의 효율성을 높이는 데 기여한다.[107]

6. 분야

컴퓨터 과학은 데이크스트라의 말처럼 단순히 컴퓨터라는 기계에 대한 학문이 아니라, 수학, 인지 과학, 물리학, 언어학 등 다양한 학문과 깊은 관계를 맺고 있는 광범위한 분야이다. 특히 조지 불불 대수이진법을 기반으로 컴퓨터 과학의 기초에 큰 영향을 미쳤다.[59]

ACM과 (IEEE Computer Society)의 대표들로 구성된 CSAB (구 컴퓨팅 과학 인증 위원회)는 컴퓨터 과학의 주요 분야로 다음 네 가지 영역을 제시했다.[59]


  • ''계산 이론''
  • ''알고리즘 및 자료 구조''
  • ''프로그래밍 방법론 및 언어''
  • ''컴퓨터 요소 및 아키텍처''


CSAB는 위 네 가지 영역 외에도 소프트웨어 공학, 인공지능, 컴퓨터 네트워킹 및 통신, 데이터베이스 시스템, 병렬 컴퓨팅, 분산 컴퓨팅, 인간과 컴퓨터 상호작용, 컴퓨터 그래픽스, 운영 체제, 수치 및 기호 계산 등을 컴퓨터 과학의 중요한 영역으로 포함한다.[59]

컴퓨터 과학은 라이프니츠, 조지 불, 앨런 튜링, 클로드 섀넌 등의 통찰을 바탕으로 발전했다.[73] 튜링은 컴퓨터가 수행해야 하는 다섯 가지 동작을 제시했고, 코라도 뵘과 주세페 자코피니는 이러한 동작들을 결합하는 세 가지 방법을 제시하여 컴퓨터 과학 발전에 기여했다.[74][75]

최근에는 "계산적 사고"(Computational Thinking)가 모든 사람에게 중요한 기본 기술로 여겨지고 있으며, 국제 학회에서 제시하는 커리큘럼에서도 중시되고 있다.[94]

6. 1. 인접 학문

컴퓨터 과학 연구는 수학, 인지 과학, 물리학, 언어학과 같은 학문과 공생한다.

6. 2. 바탕이 되는 이론

이산수학, 정보이론, 수리논리학, 도메인 이론, 확률론, 통계학, 암호학 등은 컴퓨터 과학의 바탕이 되는 이론이다.[94] 일부 대학에는 컴퓨터 과학을 전공하는 부서가 있으며, 컴퓨터 및 계산 장치의 보급으로 인해 모든 사람에게 기본적인 기술로서 "계산적 사고"가 중요하게 여겨지고 있다.[94]

6. 3. 이론 컴퓨터 과학

이론 컴퓨터 과학은 수학적이고 추상적인 성격을 띠지만, 실용적이고 일상적인 계산으로부터 동기를 얻는다. 이는 계산의 본질을 이해하고, 그 이해의 결과로 더 효율적인 방법론을 제공하는 것을 목표로 한다.[3]

오토마타 이론
형식 언어
계산 복잡도 이론
계산 모델
양자 계산 이론
논리 회로 이론
셀룰러 오토마타



피터 데닝(Peter Denning)에 따르면, 컴퓨터 과학의 근본적인 질문은 "무엇이 자동화될 수 있는가?"이다.[3] 계산 이론은 무엇을 계산할 수 있는지, 그리고 그러한 계산을 수행하는 데 필요한 자원의 양에 대한 근본적인 질문에 답하는 데 중점을 둔다. 첫 번째 질문에 답하기 위해 계산 가능성 이론은 다양한 이론적 계산 모델에서 어떤 계산 문제가 해결 가능한지 조사한다. 두 번째 질문은 계산 복잡도 이론에 의해 다루어지는데, 이 이론은 수많은 계산 문제를 해결하는 데 필요한 시간 및 공간 비용을 연구한다.

유명한 P=NP? 문제는 계산 이론의 미해결 문제 중 하나이며, 밀레니엄 문제 중 하나이다.[62]

정보 이론확률통계학과 밀접한 관련이 있으며, 정보의 정량화와 관련이 있다. 이 이론은 클로드 섀넌이 데이터 압축과 데이터의 안정적인 저장 및 통신과 같은 신호 처리 작업에 대한 기본적인 한계를 찾기 위해 개발되었다.[63]

부호 이론부호(정보를 한 형태에서 다른 형태로 변환하는 시스템)의 속성과 특정 응용 프로그램에 대한 적합성을 연구하는 학문이다. 부호는 데이터 압축, 암호화, 오류 검출 및 수정에 사용되며, 최근에는 네트워크 코딩에도 사용된다. 부호는 효율적이고 안정적인 데이터 전송 방법을 설계하기 위해 연구된다.[64]

부호 이론
채널 용량
알고리즘 정보 이론
신호 검출 이론
콜모고로프 복잡도


6. 4. 알고리즘과 자료 구조

자료 구조와 알고리즘은 일반적으로 사용되는 계산 방법과 그 계산 효율성을 연구하는 분야이다.

알고리즘 분석
퀵 정렬 알고리즘
트리
조합 최적화
계산 기하학
난수화 알고리즘


6. 5. 프로그래밍 언어론과 정형 기법

프로그래밍 언어 이론은 프로그래밍 언어의 설계, 구현, 분석, 특징 분석 및 분류와 개별적인 특징을 다루는 컴퓨터 과학의 한 분야이다. 수학, 소프트웨어 공학언어학에 의존하고 영향을 미치는 컴퓨터 과학 분야에 속한다. 많은 전문 학술지가 있는 활발한 연구 분야이다.

포멀 메서드(형식 방법)는 소프트웨어 및 하드웨어 시스템의 명세, 개발 및 검증을 위한 특정한 수학적 기반 기법이다.[65] 소프트웨어 및 하드웨어 설계에 포멀 메서드를 사용하는 것은 다른 공학 분야와 마찬가지로 적절한 수학적 분석을 수행하면 설계의 신뢰성과 강건성에 기여할 수 있다는 기대에서 비롯된다. 소프트웨어 공학, 특히 안전 또는 보안이 관련된 경우 중요한 이론적 기반을 형성한다. 포멀 메서드는 오류를 방지하고 테스트 프레임워크를 제공하기 때문에 소프트웨어 테스트에 유용한 보조 수단이다. 산업적 사용을 위해서는 도구 지원이 필요하다. 그러나 포멀 메서드 사용의 높은 비용은 안전 또는 보안이 가장 중요한 고도의 무결성 및 생명 위험 시스템의 개발에만 일반적으로 사용됨을 의미한다. 포멀 메서드는 특히 논리 계산, 형식 언어, 오토마타 이론, 및 프로그램 의미론뿐만 아니라 타입 시스템 및 대수적 자료형과 같은 다양한 이론 컴퓨터 과학 기본 원리를 소프트웨어 및 하드웨어 명세 및 검증 문제에 적용하는 것으로 가장 잘 설명된다.

형식 의미론
\Gamma\vdash x: \text{Int}
컴파일러 설계
프로그래밍 언어
형식 검증
자동 정리 증명


6. 6. 병행·병렬·분산 컴퓨팅

동시성은 여러 계산이 동시에 실행되고 서로 상호 작용할 수 있는 시스템의 속성이다.[69] 동시 계산을 위한 여러 수학적 모델이 개발되었는데, 여기에는 페트리 네트, 프로세스 미적분, 병렬 랜덤 액세스 머신 모델이 포함된다.[70] 여러 컴퓨터가 네트워크로 연결되어 동시성을 사용하는 경우 이를 분산 시스템이라고 한다. 분산 시스템 내의 컴퓨터는 자체 개인 메모리를 가지며, 공통 목표를 달성하기 위해 정보를 교환할 수 있다.[71]

6. 7. 소프트웨어 공학

소프트웨어 공학은 소프트웨어의 설계, 구현 및 수정을 연구하여 고품질, 경제성, 유지보수 용이성 및 빠른 개발을 보장하는 학문이다. 이는 소프트웨어에 대한 공학적 방법론을 적용하는 체계적인 소프트웨어 설계 접근 방식이다. 소프트웨어 공학은 소프트웨어의 구성 및 분석을 다루며, 단순히 새로운 소프트웨어의 생성이나 제조뿐 아니라 내부 구성 및 유지보수에도 관여한다. 예를 들어 소프트웨어 테스팅, 시스템 엔지니어링, 기술 부채소프트웨어 개발 프로세스 등이 있다.[1]

6. 8. 컴퓨터 시스템

컴퓨터 아키텍처 또는 디지털 컴퓨터 구성은 컴퓨터 시스템의 개념적 설계 및 기본적인 작동 구조이다. 주로 중앙 처리 장치가 내부적으로 수행하는 방식과 메모리의 주소에 접근하는 방식에 중점을 둔다.[68] 컴퓨터 공학자들은 개별 프로세서 구성 요소, 마이크로컨트롤러, 개인용 컴퓨터부터 슈퍼컴퓨터임베디드 시스템에 이르기까지 컴퓨터 하드웨어의 계산 논리와 설계를 연구한다. 컴퓨터 문헌에서 "아키텍처"라는 용어는 1959년 IBM의 주요 연구 센터의 기계 조직 부서 구성원인 Lyle R. Johnson과 프레더릭 브룩스 주니어의 연구에서 유래했다.

처리 장치
마이크로아키텍처
다중 처리
프로세서 설계
유비쿼터스 컴퓨팅
시스템 아키텍처
운영 체제
입출력
임베디드 시스템
실시간 컴퓨팅
신뢰성
인터프리터


6. 9. 네트워크

이 컴퓨터 과학 분야는 전 세계 컴퓨터 간의 컴퓨터 네트워크를 관리하는 것을 목표로 한다.[72]

6. 10. 인공지능

인공지능(AI)은 문제 해결, 의사 결정, 환경 적응, 학습 및 의사소통과 같이 인간과 동물에게서 발견되는 목표 지향적 과정을 합성하는 것을 목표로 한다.[1] 사이버네틱스와 다트머스 회의(1956)에서 시작된 인공 지능 연구는 응용 수학, 기호 논리, 기호학, 전기 공학, 마음의 철학, 신경 생리학, 사회적 지능 등 여러 분야를 융합한다.[1]

인공 지능은 대중적으로 로봇 개발과 관련되어 있지만, 실제 응용 분야는 계산적 이해가 필요한 소프트웨어 개발 분야의 내장 구성 요소로서 활용되어 왔다.[1] 1940년대 후반 앨런 튜링은 "컴퓨터는 생각할 수 있을까?"라는 질문을 던졌으며, 이 질문은 여전히 효과적으로 답변되지 않았지만, 튜링 테스트는 여전히 인간 지능의 척도로 컴퓨터 출력을 평가하는 데 사용된다.[1] 복잡한 실제 데이터를 포함하는 컴퓨터 응용 분야에서 인간의 모니터링 및 개입을 대체하는 평가 및 예측 작업의 자동화는 점점 더 성공적이었다.[1]



계산 학습 이론
컴퓨터 비전
신경망
계획 및 스케줄링
자연어 처리
계산 게임 이론
진화 컴퓨팅
자율 컴퓨팅
표현 및 추론
패턴 인식
로봇 공학
군집 지능


6. 11. 데이터베이스

데이터베이스는 대량의 데이터를 쉽게 구성, 저장 및 검색하기 위한 목적으로 사용된다. 디지털 데이터베이스는 데이터베이스 관리 시스템(DBMS)을 사용하여 데이터베이스 모델과 쿼리 언어를 통해 데이터를 저장, 생성, 유지 관리 및 검색한다. 데이터 마이닝은 대량의 데이터 집합에서 패턴을 발견하는 과정이다.

6. 12. 컴퓨터 그래픽스와 시각화

컴퓨터 그래픽스는 디지털 시각 콘텐츠에 대한 연구이며, 영상 데이터의 합성 및 조작을 포함한다. 이 연구는 컴퓨터 비전, 영상 처리, 계산 기하학을 포함한 컴퓨터 과학의 다른 많은 분야와 관련이 있으며, 특수 효과 및 비디오 게임 분야에 광범위하게 적용된다.

2D 컴퓨터 그래픽스
컴퓨터 애니메이션
렌더링
혼합 현실
가상 현실
솔리드 모델링


6. 13. 이미지 처리와 음향 처리

FFT 알고리즘, 이미지 처리, 음성 인식, 데이터 압축, 음성 합성데이터 처리의 주요 분야이다.[1] 정보는 이미지, 음향, 비디오 또는 기타 멀티미디어 형태를 취할 수 있으며, 정보의 비트신호를 통해 스트리밍될 수 있다.[1] 데이터 처리는 정보학의 중심 개념이며, 정보 처리 알고리즘을 연구한다.[1] 이 분야는 정보 이론, 통신, 정보 공학에서 중요한 역할을 하며, 의료 영상 컴퓨팅 및 음성 합성 등에 응용된다.[1]

FFT 알고리즘이미지 처리음성 인식데이터 압축의료 영상 컴퓨팅음성 합성
FFT 알고리즘
이미지 처리
음성 인식
데이터 압축
의료 영상 컴퓨팅
음성 합성


6. 14. 소셜 컴퓨팅과 인간과 컴퓨터 상호 작용

소셜 컴퓨팅인간과 컴퓨터 상호작용(HCI, Human–computer interaction)은 컴퓨터 과학 분야에서 중요한 연구 주제이다.

인간과 컴퓨터 상호작용은 주로 컴퓨터와 인간 사이의 상호작용 분석을 기반으로 컴퓨터 시스템의 설계 및 사용과 관련된 연구 분야이다. HCI는 감정, 사회적 행동, 뇌 활동컴퓨터와의 관계에 중점을 둔 여러 하위 분야를 가지고 있다.

인간 중심 설계


6. 15. 계산과학

과학 컴퓨팅(또는 계산 과학)은 수학적 모델과 정량적 분석 기법을 구성하고 컴퓨터를 사용하여 과학적 문제를 분석하고 해결하는 것을 다루는 연구 분야이다. 과학 컴퓨팅의 주요 용도는 계산 유체 역학, 물리적, 전기적 및 전자 시스템과 회로뿐만 아니라 사회 및 사회적 상황(특히 워게임)과 그 서식지를 포함한 다양한 프로세스의 시뮬레이션이다. 현대 컴퓨터는 완전한 항공기와 같은 설계의 최적화를 가능하게 한다. 전기 및 전자 회로 설계에서 주목할 만한 것은 SPICE[66]뿐만 아니라 새로운(또는 수정된) 설계의 물리적 구현을 위한 소프트웨어이다. 후자에는 집적 회로에 대한 필수적인 설계 소프트웨어가 포함된다.[67]

분야이미지
수치 해석
수치 해석
계산 물리학
계산 물리학
계산 화학
계산 화학
생물 정보학
생물 정보학
신경 정보학
신경 정보학
심리 정보학
심리 정보학
의료 정보학
의료 정보학
계산 공학
계산 공학
계산 음악학
계산 음악학


7. 프로그래밍 패러다임

프로그래밍 언어는 서로 다른 방식으로 다양한 작업을 수행하는 데 사용될 수 있다. 일반적인 프로그래밍 패러다임에는 다음이 포함된다.


  • 함수형 프로그래밍: 계산을 수학적 함수의 평가로 취급하고 상태 및 가변 데이터를 피하는, 컴퓨터 프로그램의 구조와 요소를 구축하는 스타일이다. 명령형이 아닌 선언형 프로그래밍 패러다임으로, 문장 대신 표현식이나 선언으로 프로그래밍이 이루어진다.[76]
  • 명령형 프로그래밍: 프로그램의 상태를 변경하는 문장을 사용하는 프로그래밍 패러다임이다.[77] 자연어에서 명령법이 명령을 표현하는 것과 마찬가지로, 명령형 프로그램은 컴퓨터가 수행할 명령으로 구성된다. 명령형 프로그래밍은 프로그램이 어떻게 작동하는지 설명하는 데 중점을 둔다.
  • 객체지향 프로그래밍: "객체"라는 개념을 기반으로 하는 프로그래밍 패러다임으로, 객체는 종종 속성으로 알려진 필드 형태의 데이터와 종종 메서드로 알려진 절차 형태의 코드를 포함할 수 있다. 객체의 특징은 객체의 절차가 해당 객체와 연결된 데이터 필드에 접근하여 수정할 수 있다는 것이다. 따라서 객체 지향 컴퓨터 프로그램은 서로 상호 작용하는 객체로 만들어진다.[78]
  • 서비스 지향 프로그래밍: 통합 비즈니스 애플리케이션 및 핵심 업무 소프트웨어 프로그램을 설계 및 구현하기 위해 "서비스"를 컴퓨터 작업 단위로 사용하는 프로그래밍 패러다임이다.


많은 언어는 여러 패러다임을 지원하므로, 이러한 구분은 기술적 기능보다는 스타일의 문제에 가깝다.[79]

참조

[1] 웹사이트 What is Computer Science? https://www.cs.york.[...] 2020-06-11
[2] 서적 What Can Be Automated? Computer Science and Engineering Research Study https://mitpress.mit[...] MIT Press
[3] 학술지 Computing as a discipline https://ieeexplore.i[...] 1989-02-01
[4] 웹사이트 WordNet Search—3.1 http://wordnetweb.pr[...] Wordnetweb.princeton.edu 2012-05-14
[5] 웹사이트 Definition of computer science Dictionary.com https://www.dictiona[...] 2020-06-11
[6] 웹사이트 What is Computer Science? Undergraduate Computer Science at UMD https://undergrad.cs[...] 2022-07-15
[7] 서적 Algorithmics The Spirit of Computing http://worldcat.org/[...] Springer Berlin 2014-01-01
[8] 서적 Encyclopedia of Computer Science and Technology: Volume 21 - Supplement 6: ADA and Distributed Systems to Visual Languages https://books.google[...] CRC Press 1989-01-01
[9] 서적 What Can be Automated? What Cannot be Automated? https://link.springe[...] Springer 2009-01-01
[10] 학술지 Computer Science and Education 1969-08-05
[11] 학술지 George Forsythe and the development of computer science 1972-08-01
[12] 학술지 Celebrating 50 years of the Turing award 2017-01-23
[13] 학술지 ACM marks 50 years of the ACM A.M. turing award and computing's greatest achievements https://doi.org/10.1[...] 2018-06-05
[14] 웹사이트 2021: 375th birthday of Leibniz, father of computer science https://people.idsia[...] 2023-02-04
[15] 웹사이트 Charles Babbage Institute: Who Was Charles Babbage? http://www.cbi.umn.e[...] 2016-12-28
[16] 웹사이트 Ada Lovelace Babbage Engine Computer History Museum http://www.computerh[...] 2016-12-28
[17] 웹사이트 History of Computer Science https://cs.uwaterloo[...] 2022-07-15
[18] 웹사이트 Wilhelm Schickard – Ein Computerpionier https://web.archive.[...] 2016-12-04
[19] 웹사이트 A Brief History of Computing https://web.archive.[...] The Royal Society 2014-01-19
[20] 기타
[21] 웹사이트 Science Museum, Babbage's Analytical Engine, 1834–1871 (Trial model) https://collection.s[...] 2020-05-11
[22] 서적 Charles Babbage: Pioneer of the Computer Oxford University Press
[23] 기타 1970-01-01
[24] 웹사이트 A Selection and Adaptation From Ada's Notes found in Ada, The Enchantress of Numbers," by Betty Alexandra Toole Ed.D. Strawberry Press, Mill Valley, CA https://web.archive.[...] 2006-05-04
[25] 웹사이트 The John Gabriel Byrne Computer Science Collection https://web.archive.[...] 2019-08-08
[26] 간행물 Ensayos sobre Automática – Su definicion. Extension teórica de sus aplicaciones 1914-01-01
[27] 간행물 Automática: Complemento de la Teoría de las Máquinas https://quickclick.e[...] 1914-11-19
[28] 서적 Numbers and Computers https://books.google[...] Springer 2017-01-01
[29] 서적 Digital Computers: Origins https://dl.acm.org/d[...] 2003-01-01
[30] 기타 2000-01-01
[31] 기타 1975-01-01
[32] 기타
[33] 웹사이트 IBM Archives: 1945 https://www.ibm.com/[...] Ibm.com 2003-01-23
[34] 웹사이트 IBM100 – The Origins of Computer Science https://www.ibm.com/[...] Ibm.com 1995-09-15
[35] 학술지 Computing as a discipline https://ieeexplore.i[...] 1989-02-01
[36] 웹사이트 Some EDSAC statistics http://www.cl.cam.ac[...] University of Cambridge 2011-11-19
[37] 웹사이트 Computer science pioneer Samuel D. Conte dies at 85 http://www.cs.purdue[...] Purdue Computer Science 2002-07-01
[38] 서적 The Science of Computing: Shaping a Discipline Taylor and Francis / CRC Press
[39] 논문 The Role of the University in Computers, Data Processing, and Related Fields
[40] 웹사이트 Stanford University Oral History http://library.stanf[...] Stanford University 2013-05-30
[41] 논문 George Forsythe and the Development of Computer Science http://www.stanford.[...]
[42] 웹사이트 The Development of Computer Science: A Sociocultural Perspective http://epublications[...] 2014-12-12
[43] 논문 The science of datalogy
[44] 논문 Letters to the editor
[45] 간행물
[46] 간행물
[47] 서적 L'Informatique en France, de la seconde guerre mondiale au Plan Calcul. L'émergence d'une science PUPS
[48] 웹사이트 Why an Informatics Degree? http://cacm.acm.org/[...] Cacm.acm.org 2010-02
[49] Wikiquote Computer science
[50] 논문 Computing as a Science: A Survey of Competing Viewpoints
[51] 논문 Software engineering programmes are not computer science programmes
[52] 논문 Insight in how computer science can be a science
[53] 논문 Computer science and its relation to mathematics
[54] 웹사이트 The Philosophy of Computer Science (Stanford Encyclopedia of Philosophy) https://plato.stanfo[...] Metaphysics Research Lab, Stanford University 2021-09-16
[55] 학회발표 Research paradigms in computer science—Proceedings of the 2nd international Conference on Software Engineering IEEE Computer Society Press, Los Alamitos, CA 1976-10-13
[56] 논문 Computing is a natural science
[57] 논문 Three Paradigms of Computer Science https://web.archive.[...]
[58] 백과사전 The Philosophy of Computer Science https://plato.stanfo[...] 2019-10-14
[59] 웹사이트 Computer Science as a Profession http://www.csab.org/[...] Computing Sciences Accreditation Board 1997-05-28
[60] 웹사이트 Computer Science: Reflections on the Field, Reflections from the Field http://www.nap.edu/c[...] National Academies Press 2008-08-31
[61] 웹사이트 CSAB Leading Computer Education http://www.csab.org/ CSAB 2011-08-03
[62] 웹사이트 P = NP http://www.claymath.[...] Clay Mathematics Institute
[63] 웹사이트 Claude E. Shannon: Founder of Information Theory http://www.scientifi[...] 2002-10-14
[64] 서적 Uncertainty Analysis in Econometrics with Applications Springer Science & Business Media
[65] 서적 Encyclopedia of Software Engineering CRC Press
[66] 서적 SPICE for Power Electronics and Electric Power CRC Press
[67] 뉴스 What is an integrated circuit (IC)? A vital component of modern electronics https://whatis.techt[...] 2021-11-15
[68] 웹사이트 Computer Architecture http://galton.uchica[...] The University of Chicago 1997-04-07
[69] 서적 Real-Time Embedded Systems Wiley
[70] 서적 Computing Nature: Turing Centenary Perspective Springer Science & Business Media
[71] 서적 Smart Sustainable Cities of the Future: The Untapped Potential of Big Data Analytics and Context-Aware Computing for Advancing Sustainability Springer
[72] 서적 Introduction to modern cryptography https://www.worldcat[...] Chapman & Hall/CRC 2021-11-17
[73] 웹사이트 What Is Computation? http://www.cse.buffa[...] State University of New York at Buffalo 2013-08-31
[74] 서적 Alan Turing's Electronic Brain: The Struggle to Build the ACE, the World's Fastest Computer OUP Oxford 2012
[75] 서적 An Introduction to Programming Using Alice 2.2 Cengage Learning 2010
[76] 서적 Scala and Spark for Big Data Analytics: Explore the concepts of functional programming, data streaming, and machine learning Packt Publishing Ltd. 2017
[77] 서적 Learning Functional Programming in Go: Change the way you approach your applications using functional programming in Go Packt Publishing Ltd. 2017
[78] 서적 Substation Automation Systems: Design and Implementation Wiley 2015
[79] 웹사이트 Multi-Paradigm Programming Language https://developer.mo[...] Mozilla Foundation 2013-08-21
[80] 학술지 Viewpoint: Research evaluation for computer science https://pure.itu.dk/[...] 2009-04
[81] 웹사이트 Evaluating Computer Scientists and Engineers For Promotion and Tenure http://cra.org/resou[...] Computing Research Association 2015-07-19
[82] 학술지 Viewpoint: Time for Computer Science to Grow Up 2009-08
[83] 백과사전 ブリタニカ国際大百科事典 小項目事典 『計算機科学』 https://kotobank.jp/[...]
[84] 학술지 Computer science (CS) in the compulsory education curriculum: Implications for future research 2017
[85] 학술지 Generation CS: the growth of computer science 2017
[86] 웹사이트 計算機情報科学科 http://www.njit.edu/[...]
[87] 웹사이트 聖ヨハネ大学 聖ベネディクト校 計算機科学科 http://www.csbsju.ed[...]
[88] 웹사이트 マッセイ大学 http://study.massey.[...]
[89] 웹사이트 Calculator Timeline http://www.vintageca[...] 2006-09-18
[90] 웹사이트 Science Museum - Introduction to Babbage http://www.sciencemu[...] 2006-09-24
[91] 웹사이트 IBM Punch Cards in the U.S. Army http://www.pattonhq.[...] 2006-09-24
[92] 일반
[93] 학술지 Computer science:the discipline https://web.archive.[...] 2000
[94] 서적 計算論的思考 (Computational Thinking) https://www.cs.cmu.e[...]
[95] 웹사이트 https://www.ipsj.or.[...]
[96] 간행물 大学の理工系学部情報系学科のためのコンピュータサイエンス教育カリキュラム J97(第1.1版) http://www.ipsj.or.j[...] 情報処理学会 2013-03-22
[97] 학술지 How Do I Know Whether to Trust a Research Result? https://ieeexplore.i[...] 2015-01
[98] 서적 Computer Science: Achievements and Challenges circa 2000 https://web.archive.[...] 2000-03
[99] 서적 Structure and Interpretation of Computer Programs MIT Press 1996
[100] 학술지 Software Engineering Programmes are not Computer Science Programmes https://web.archive.[...] 1998
[101] 웹사이트 https://www.cs.stanf[...]
[102] 웹사이트 컴퓨터의 이용 https://ko.wikisourc[...]
[103] 웹사이트 컴퓨터 과학 https://ko.wikisourc[...]
[104] 웹사이트 컴퓨터 과학의 정의의 문제점 https://ko.wikisourc[...]
[105] 웹사이트 컴퓨터 과학의 본질 https://ko.wikisourc[...]
[106] 위키소스 미국의 컴퓨터 과학 https://ko.wikisourc[...]
[107] 위키소스 컴퓨터 과학과 경영 관리 https://ko.wikisourc[...]



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com