우리나라의 컴퓨터과학은 어디에 있는가?
  • 김진형 제1대 소장 (2013.12. ~ 2016.07.)
날짜2015.02.27
조회수13131
글자크기
  • 1장 서론
    • 컴퓨터는 지난 75년간 다른 어떤 기술보다 많이 우리 사회를 변화시켰다. 인간 생산성의 극적인 증가, 소통과 엔터테인먼트 다양성의 폭발적 증가, 거의 모든 학문 분야의 내용과 연구 방법에서 근본적인 변혁이 컴퓨터를 통하여 일어나고 있다. 이 변화의 폭과 깊이가 매우 커서 인류 문명사에서 최고의 범용 기술이란 자리를 놓고 내연 기관, 전기 동력 등과 경쟁하고 있다. 이런 변화를 이끌어 가는 컴퓨터에 관한 학문이 바로 컴퓨터과학(Computer Science)이다.
    • 컴퓨터과학은 우리나라에서 다양한 명칭으로 불린다. 한국에 이 학문이 처음 소개되었던 1970년경에는 전자계산학 또는 전산학이라고 많이 불렸으나 최근에는 컴퓨터과학, 컴퓨터공학, 정보공학이라고도 불리곤 한다. 외국에서는 ”컴퓨터공학”을 컴퓨터과학 분야 중에서 하드웨어를 다루는 세부 영역의 명칭으로 사용하는데 우리나라에서는 컴퓨터과학과 같은 뜻으로 자리 잡았다. 영어권에서도 학문의 명칭에 관한 논란이 많다. 공산품인 ‘컴퓨터’를 연구하는 것을 ‘과학’이라고 하여도 되냐는 것이 핵심이다. 따라서 “Computing Science”라고 하자는 의견도 다수 있다. 유럽에서는 정보학(Informatics)이라는 용어도 자주 쓰인다. 명칭에 따라서 집중하는 것이 약간씩 다르긴 하지만 이 글에서는 컴퓨터과학이라는 명칭을 사용하고자 한다.
    • 영국의 찰스 배비지(Charles Babbage)는 컴퓨터의 아버지로 불린다. 1833년에 ‘해석기관’이라 이름 지은 프로그램이 가능한 범용의 컴퓨터를 만들었기 때문이다. 현대적 의미의 전자기기 컴퓨터는 1946년에 펜실베이니아 대학에서 개발한 에니악(ENIAC)이 최초이다. 1951년에는 미국의 인구 센서스를 위하여 유니박(UNIVAC)을 도입했다. 유니박은 최초로 대량 생산된 컴퓨터이다. 1954년 IBM은 IBM650이라는 상대적으로 가볍고 가격이 싼 컴퓨터를 만들어서 시장을 석권하기 시작하였다. 우리나라에 최초로 컴퓨터가 도입된 것은 1967년으로서 경제기획원에서 인구 센서스 통계를 위하여 도입하였다.
    • 소프트웨어의 연구와 개발이 시작된 것은 1950년대 후반부터이다. 1957년 존 배커스(John Backus)가 포트란(FORTRAN) 언어를 만들었다. 1960년대 들어와서 컴퓨터과학이 독립적인 학문 영역으로 발전했다. 1962년 퍼듀 대학에 최초로 컴퓨터과학 학과가 설립되었고, 1965년에는 최초의 컴퓨터과학 박사 학위가 펜실베이니아 대학에서 수여되었다.
    • 한국에 도입된 컴퓨터는 초기에는 주로 과학 계산과 통계 처리에 사용되었다. 그러나 곧 데이터 처리로 사용이 확산되었다. 1970년부터 홍릉의 과학기술연구소에 대형 컴퓨터를 설치하고 민간 기업들과 같이 컴퓨터 시간을 나누어 섰다. 민간 기업에서도 컴퓨터 응용 프로그램 개발 능력을 확보하여 급여 관리, 입시성적 관리 등의 데이터 처리에 활용하였다.
    • 우리나라에서 컴퓨터과학 교육이 시작된 것은 1970년부터이다. 1970년에 숭실대학교에 최초로 학부 전자계산학과가 설립되어 체계적 교육이 시작되었다. 1971년에는 과학기술원에 최초의 석•박사 학위 과정이 개설되었다. 지금은 대부분의 4년제 대학에 컴퓨터 학과가 설립되어 있다. 전문 대학을 포함하여 연 3만 명의 졸업생이 배출된다.
    • 이 글은 다음과 같이 구성될 것이다. 제2장에서는 컴퓨터과학이 어떤 학문인지를 개략적으로 검토하는 개관으로 구성하고, 제3장에서는 컴퓨터과학이 연구, 교육하는 지식영역의 목록과 각 지식영역에 대하여 간단히 서술하고자 한다. 제4장에서는 컴퓨터과학의 미래라는 제목으로 시작되고 있는 컴퓨터과학의 변화와 새로운 연구 분야를 간단히 검토한다. 제5장에서는 우리나라 컴퓨터과학의 연구 현황과 수준을 저자의 주관으로 서술하고자 한다. 제6장은 결론을 위하여 사용된다.
  • 2장 컴퓨터과학의 개관
    • 컴퓨터과학은 컴퓨터 및 그 응용에 관한 연구라고 간단히 정의할 수 있다. 정보와 계산의 이론적 기반을 바탕으로 정보 처리, 컴퓨터 하드웨어 및 소프트웨어의 동작 원리와 설계, 그리고 컴퓨터 기술을 과학, 비즈니스, 예술 등 다양한 분야에 응용하는 방법을 연구하는 학문이다. 컴퓨터과학은 실생활 문제를 해결하겠다는 실용적인 목표와 접근 방식의 학문이다. 즉 과학, 경제, 사회의 지식을 총 동원하여 문제를 해결하고 발명을 이끌어 낸다. 이런 점에서 볼 때 공학(Engineering)과 그 축을 같이하고 있다.
    • 컴퓨터과학에서는 정보의 수집, 표현, 처리, 보관, 통신의 방법과 기계화를 체계적으로 연구한다. 여기서 정보는 메모리상에서 0과 1의 비트로 표현되기도 하고, 생명 세포에서 유전자와 단백질 구조로 부호화되었을 수도 있다. 현대 컴퓨터과학은 디지털 기술을 기반으로 한다. 정보를 디지털로 표현하고 순차적 정보 처리, 즉 알고리즘에 관한 연구에 집중한다. 즉 하나의 함수 값을 계산하기 위하여 유한 개의 순차적 명령어로 구성된 목록인 알고리즘은 단순한 계산과 데이터 처리는 물론 자동 추론 등 고도의 문제 풀이에도 사용된다.
    • 디지털 컴퓨터의 하드웨어는 사칙 계산과 논리 연산만을 하는 단순한 기계이다. 컴퓨터 프로그램은 컴퓨터로 하여금 지정된 과업을 수행하기 위해 기록된 일련의 명령어다. 즉 알고리즘을 기계가 이해할 수 있는 언어로 표현(코딩)한 것이다. 소프트웨어란 컴퓨터 프로그램과 이를 구동하기 위한 데이터와 관련 문서를 포함한다. 따라서 컴퓨터과학은 컴퓨터 하드웨어와 소프트웨어에 관한 학문이라고 할 수 있으나 컴퓨터 하드웨어는 반도체 기술의 발전에 힘입어 단순한 전자 제품이 됨에 따라 컴퓨터과학은 이제 소프트웨어가 중심이 되었다.
    • 컴퓨터과학의 학문 분야를 섬세하게 나누면 이론과 실제의 다양한 분야로 나눌 수 있다. 계산의 본질과 어려운 계산 문제의 근본적인 속성을 탐구하는 계산복잡도 같은 추상적 이론 분야가 있는가 하면, 컴퓨터 그래픽 같은 분야는 실세상에서의 응용을 강조한다. 또 계산적 구현에 초점을 맞추는 분야도 있다. 예를 들어, 프로그래밍 언어 이론 분야는 컴퓨터 계산에 대하여 다양한 방법으로 설명한다. 또한 컴퓨터 프로그래밍 언어에 대한 연구는 프로그래밍 언어를 사용하는 다양한 양태를 조사 연구한다. 인간-컴퓨터 상호 작용 분야에서는 특별한 훈련이 없이도 사람이 컴퓨터를 쉽게 사용할 수 있도록 만드는 문제를 연구한다. 컴퓨터과학에서 다루는 지식영역의 목록과 짧은 소개는 이 다음 장에 서술되어 있다.
    • 컴퓨터과학은 수학, 전기 공학, 심리학, 통계학, 언어학, 물리학 및 생물학 등의 다양한 학문 분야와 밀접한 관계를 갖는다. 이들 학문의 지식이 컴퓨터과학의 지식영역을 이루는 데 사용되었고, 컴퓨터과학이 성장하고 다양화됨에 따라 컴퓨터과학의 지식은 이들 학문의 발전에도 공헌한다. 컴퓨터과학이 다른 학문 영역과 결합되어 계산사회학 또는 생물정보학과 같이 ‘계산’이라는 접두어가 붙거나 ‘정보학’이라는 접미어가 붙는 새로운 학문 분야가 속속 생성되고 있다.
    • 모든 산업에서 경험과 지식이 소프트웨어로 코딩되고, 코딩된 지식은 소프트웨어를 통하여 산업화된다. 따라서 컴퓨터과학은 전문가의 실무적 경험과 업무 방식에서 많은 것을 배웠다. 추상화 기법, 진화적 변화, 공용 자원의 공유, 보안, 동시성 등이 대표적이다. 소프트웨어 공학은 소프트웨어 개발에서 가장 성공적인 실무적 업무 방식에 기반하고 있다.
    • 컴퓨터가 사회에 끼치는 영향은 지대하다. 그래서2013년 발의된 미국의 컴퓨터과학 교육법 에 의하면 컴퓨터과학의 교육, 연구 범위에 컴퓨터가 사회에 끼치는 영향을 포함하도록 권하고 있다. 또 21세기 대학 교육의 핵심 분야 중 하나로서 어떤 분야를 전공하든 적정 수준의 컴퓨터과학 능력과 이해를 가지고 있어야 한다고 권하고 있다. 컴퓨터과학이 최고의 범용 기술임을 강조하는 것이다.
  • 3장 컴퓨터과학의 지식영역
    • 컴퓨터과학에서 다루는 학문 분야는 광범위하며, 그 영역이 점점 더 확장되고 있다. 독립된 학문 분야로 성립되기 시작한 1950년대에는 컴퓨터 하드웨어 및 운영 체제의 제작, 프로그래밍 언어의 개발, 데이터베이스 등이 주된 연구 영역이었다. 1980년대 이후에는 컴퓨터 네트워크, 컴퓨터와 인간의 상호 작용, 컴퓨터 그래픽스, 자연어 처리, 컴퓨터 비전 등으로 그 연구 분야를 확장했다. 요즘은 사이버 물리 시스템, 대용량 데이터의 분석, 인공지능, 기계학습 등 지적 활동의 자동화로 그 영역이 확장되고 있다. 물론 산업 현장에서 요구되는 소프트웨어 생산 기술, 품질 보증 기법, 컴퓨터 및 네트워크 보안, 분산 병렬 처리 등의 연구 영역도 깊이를 더하고 있다.
    • 컴퓨터과학에서 다루는 내용의 변화가 그 어느 학문보다 급격하다. 이는 우리 사회에서 컴퓨터를 활용하는 영역이 넓고 좋은 일자리를 많이 제공하기 때문에 이에 따라 컴퓨터과학을 연구하는 과학자와 이 분야의 현장 전문가가 많기 때문이다. 또한 다른 학문 분야에서도 컴퓨터 활용이 촉진됨에 따라 새로운 연구의 요구가 부단히 발생하고 이는 컴퓨터과학의 범위를 넓히고 연구의 질을 풍부하게 한다.
    • 미국 컴퓨터 학회(Association for Computing Machinery, ACM)에서는 미국 전기전자 학회(IEEE))와 함께 약 10년에 한 번씩 4년제 학사 과정의 교과목 표준 을 제정하여 발표한다. 2013년 12월에 가장 최근의 제안을 발표했다. 이 제안에는 지난 10년 사이에 새로 발생한 지식영역 5개가 처음 포함되어 총 교육 시간 비중이 약 6분의 1이 된다. 즉 학사 과정에서 가르쳐야 할 새로운 교과목이 5개를 차지할 정도로 변화가 빠르다.
    • 2013년에 발표된 컴퓨터과학 학문의 영역
    • 2013년에 발표된 컴퓨터과학 학문의 영역에는 다음과 같은 18개의 지식영역이 있다.
    • 1. 이산 구조 (Discrete Structures)
    • 2. 소프트웨어 개발 기본 (Software Development Fundamentals)
    • 3. 알고리즘 및 복잡성 (Algorithms and Complexity)
    • 4. 컴퓨터 구조 및 조직 (Architecture and Organization)
    • 5. 운영 체제 (Operating Systems)
    • 6. 네트워킹 및 통신 (Networking and Communications)
    • 7. 프로그래밍 언어 (Programming Languages)
    • 8. 인간-컴퓨터 상호 작용(Human-Computer Interaction)
    • 9. 그래픽 및 시각화 (Graphics and Visualization)
    • 10. 지능 시스템 (Intelligent Systems)
    • 11. 정보 관리 (Information Management)
    • 12. 사회 이슈 및 전문가로서의 업무 (Social Issues and Professional Practice)
    • 13. 소프트웨어 공학 (Software Engineering)
    • 14. 계산 과학 (Computational Science)
    • 15. 정보 보증 및 보안 (Information Assurance and Security)
    • 16. 병렬 및 분산 컴퓨팅 (Parallel and Distributed Computing)
    • 각각의 지식영역을 간단히 설명하고자 한다
  • 1) 이산 구조 (Discrete Structures)
    • 이산 구조 지식영역은 컴퓨터과학에 대한 기초적인 소재다. 집합론, 논리학, 그래프 이론, 확률 이론 등의 내용을 포함한다. 컴퓨터과학의 많은 영역에서 이산 구조의 개념을 이해하고 이용할 수 있는 능력을 요구한다.
  • 2) 소프트웨어 개발 기본 (Software Development Fundamentals)
    • 소프트웨어 개발 과정의 숙련은 대부분의 컴퓨터과학 연구에 필수 조건이다. 컴퓨터를 이용하여 효과적으로 문제를 해결하기 위해서는 여러 프로그래밍 언어의 읽기와 쓰기에 능통해야 한다. 프로그래밍 능력뿐만 아니라, 알고리즘을 설계하고 분석할 수 있어야 하고, 적절한 패러다임을 선택하고, 그에 맞는 개발 및 테스트 도구를 사용할 줄 알아야 한다.
  • 3) 알고리즘 및 복잡성 (Algorithms and Complexity)
    • 알고리즘 지식영역은 컴퓨터과학 및 소프트웨어 공학의 기초이다. 실제 소프트웨어 시스템의 성능은 선택한 알고리즘과 구현의 적합성과 효율에 따라서 결정된다. 그러므로 좋은 알고리즘 설계는 모든 소프트웨어 시스템의 성능에 매우 중요하다. 또한 알고리즘의 연구는 사용하는 프로그래밍 언어, 프로그래밍 패러다임, 컴퓨터 하드웨어에 상관없이 문제의 본질적인 특성과 가능한 솔루션 기법에 대한 통찰력을 제공한다. 특정한 목적에 적합한, 효율적인 알고리즘을 선택하고 적용하는 능력은 소프트웨어 공학자에게 중요하다.
  • 4) 컴퓨터 구조 및 조직 (Architecture and Organization)
    • 이 지식영역은 모든 계산이 일어나고 소프트웨어 계층과 인터페이스를 제공하는 하드웨어 환경에 대한 것이다. 컴퓨터 시스템의 기능적 구성 요소, 그들의 특성, 성능, 상호 작용에 대해 연구한다. 높은 성능을 달성하는 프로그램을 개발하기 위하여는 컴퓨터 구조를 잘 이해하고 선택하여야 한다. 특히 병렬 분산 처리를 통하여 성능 개선에 도전한다.
  • 5) 운영 체제 (Operating Systems)
    • 운영 체제는 사용자에게 프로그램을 쉽고 효율적으로 실행할 수 있는 환경을 제공하기 위하여 컴퓨터에 기본적으로 탑재되는 소프트웨어다. 운영 체제는 하드웨어 및 소프트웨어 자원을 여러 사용자 간에 효율적으로 할당하고 관리하며 보호한다. 운영 체제는 실행되는 응용 프로그램들이 메모리와 CPU, 입출력 장치 등의 자원들을 사용할 수 있도록 만들어 주고, 이들을 추상화하여 파일 시스템 등의 서비스를 제공한다. 사용자 프로그램의 오류나 잘못된 자원 사용을 감시한다.
  • 6) 네트워킹 및 통신 (Networking and Communications)
    • 인터넷과 컴퓨터 네트워크는 일상적으로 여기저기서 많이 쓰인다. 점점 더 많은 컴퓨터 활동이 유선 혹은 무선 네트워크에 의존한다. 이 세상은 점점 더 상호 연결되어 가고 있다. 센서 네트워크의 범위가 점점 더 넓어지고 있다. 이 지식영역에서는 네트워크 아키텍처와 인터넷 구조 등 네트워크가 어떻게 작동하는가를 바탕으로 네트워크를 어떻게 설계하고, 어떻게 관리하여야 하는가를 이해하여야 한다. 웹 개발, 네트워크 보안, 모바일 디바이스 등의 내용이 포함된다.
  • 7) 프로그래밍 언어 (Programming Languages)
    • 프로그래밍 언어는 프로그래머로 하여금 작성된 알고리즘을 정확하게 서술하게 하는 매체다. 객체 지향적 프로그래밍, 함수형, 이벤트 구동 및 반응형 등의 프로그래밍 모델에 따라 독특한 프로그래밍 언어의 기능과 형식이 정의된다. 이 지식영역은 프로그래밍 언어의 번역, 정적 분석, 메모리 관리 등의 기본 지식의 연구와 학습을 통하여 그 언어의 효과적 사용과 한계를 이해할 수 있게 한다.
  • 8) 인간-컴퓨터 상호 작용(Human-Computer Interaction)
    • 인간-컴퓨터 상호 작용(HCI)은 인간의 활동과 전산 시스템 사이의 상호 작용의 설계에 관한 것이다, 즉 사용하기 쉬운 컴퓨터 시스템을 만들고자 하는 연구이다. 그러나 이 지식영역은 컴퓨터를 이용하여 여러 사람이 효율적으로 협동하는 환경에 관한 연구 영역도 포함한다. 소프트웨어와 하드웨어를 모두 포함하는 인터페이스를 다룬다. 인간-컴퓨터 상호 작용에는 사람이 참여하므로 컴퓨터 시스템뿐만 아니라 인간의 인지 및 지각 능력에 대한 이해와 문화적, 사회적 속성의 이해가 요구된다. 따라서 심리학, 인체 공학, 컴퓨터 그래픽, 제품 설계, 인류학, 공학 등의 폭넓은 지식을 요구한다.
  • 9) 그래픽 및 시각화 (Graphics and Visualization)
    • 컴퓨터 그래픽 지식영역은 컴퓨터를 이용하여 이미지의 생성과 조작을 연구한다. 즉 계산 기법을 통하여 시각적 소통을 가능하게 하는 과학 영역이다. 이 지식영역은 인간의 시각 인지 능력의 이해, 표현 대상의 모델링, 모델을 2차원으로 그려 주는 렌더링 과정, 이미지가 움직이는 것처럼 보이게 하는 애니메이션, 자료의 이해를 돕기 위한 고차원 데이터의 시각적 표현, 전산 기하학 등이 주요 연구 분야이다.
  • 10) 지능 시스템 (Intelligent Systems)
    • 인공 지능(AI)은 사람이 수행했을 때 지능이 필요한 업무를 기계가 수행하도록 연구하는 학문이다. 사람이 수행했을 때 지능이 필요한 업무는 자연어의 구사, 시각적 인지, 상황 이해를 통한 의사 결정 등이다. 인공 지능은 전통적인 방법으로 해결하기 어렵거나 가능성이 없어 보이는 문제에 대한 해결 방법을 찾는 데 쓰인다. 이는 이메일, 문서 편집, 검색 등과 같은 일상적인 응용에서 쓰이기도 하지만, 데이터 분석을 통한 과학적 의사 결정, 자신이 처한 환경을 인식하고 그 환경과 합리적으로 상호 작용하는 자율적 에이전트의 설계 및 분석 등에서도 적용된다. 이 지식영역은 상식 및 전문 지식의 표현 방식, 검색 및 계획 세우기 등의 문제 해결 방법론 및 기계 학습 기법, 문제해결에 필요한 에이전트나 다중 에이전트의 구조 등을 연구한다.
  • 11) 정보 관리 (Information Management)
    • 정보 관리 지식영역은 정보와 데이터의 취득, 디지털화, 표현, 조직화, 저장된 정보에의 접근, 검색 등을 다루는 데이터베이스 영역이다. 저장된 정보를 접근하고 갱신하는 효율적이고 효과적인 알고리즘, 데이터 모델링과 추상화, 물리적 파일 저장 기술, 분산 데이터베이스 기법, 멀티미디어 데이터의 관리, 데이터로부터 정보의 추출 기술 등을 다룬다. 이 지식영역의 연구는 데이터베이스의 확장성, 접근성과 사용성을 감안하여 정보 관리 시스템을 설계 개발하거나 적절한 해법을 선택할 수 있는 능력을 제공한다.
  • 12) 사회 이슈 및 전문가로서의 업무 (Social Issues and Professional Practice)
    • 기술의 진보에 따라 우리의 일상생활과 일하는 방식에 상당한 변화가 온다. 컴퓨터를 기반한 새로운 제품이나 인터넷과 같은 사이버 공간에서의 생활은 점점 더 예민한 윤리적 문제를 야기하고 판단을 어렵게 한다. 물론 일반적인 도덕 규범이 개인의 책임, 전문가로서의 행동과 역할에 대한 이해를 제공하지만 컴퓨터 과학자나 소프트웨어 공학도가 지켜야 할 윤리 및 전문가로서의 행동의 결정은 간단하지 않다. 미국 컴퓨터 학회에서는 최소한의 윤리 강령 을 제시하지만 이것이 윤리적 의사 결정을 할 때 알고리즘이나 매뉴얼이 되지는 못한다. 이 지식영역에서는 직업 윤리, 지적 재산권, 개인 정보 보호 및 시민의 자유, 전문가로서의 소통, 컴퓨팅의 경제, 보안 정책, 법률 및 컴퓨터 범죄 등의 이슈를 다룬다.
  • 13) 소프트웨어 공학 (Software Engineering)
    • 소프트웨어 공학은 고품질의 소프트웨어를 신속하고 효율적으로 구축하는 방법론을 연구하는 지식영역이다. 사용자의 요구 사항에 맞추어 신뢰할 수 있는 소프트웨어 시스템을 품질, 일정 계획, 비용 등을 감안하여 효과적이고 효율적으로 구축하는 것이 목적이다. 이를 위하여 이론과 지식, 실무 경험을 동원한다. 소프트웨어 공학은 요구 사항 추출, 분석, 시방서 작성, 설계, 구축, 테스팅 및 검증, 배포, 운영 및 유지 보수를 포함하는 소프트웨어 시스템의 라이프 사이클 모든 단계를 고려한다. 소프트웨어의 진화와 재사용을 위하여 잘 통제되고 훈련된 방법과 도구를 사용해야 한다. 이 도구들이 매우 빠르게 진화하고 있기 때문에 적절한 도구, 방법론, 개발 환경 시스템의 선택에는 전문성이 요구된다.
  • 14) 계산 과학 (Computational Science)
    • 정보 보증 및 보안은 컴퓨터를 사용하는데 있어서 기밀성, 무결성 및 가용성을 보장하는 지식영역이다. 정보와 정보 시스템을 보호하기 위한 기술적, 정책적 통제와 절차 등에 대하여 연구한다. 안전한 시스템 설계의 원리, 방어적 프로그래밍. 위협 및 공격에 대한 이해, 암호화, 보안 정책 및 지배 구조, 인증 및 부인 방지, 디지털 포렌식(digital Forensic) 등의 영역을 포함한다.
  • 16) 병렬 및 분산 컴퓨팅 (Parallel and Distributed Computing)
    • 멀티코어 프로세서나 분산 데이터센터 등 다중 프로세서를 사용하는 병렬 및 분산 처리는 복잡한 방법으로 작동이 겹치는 다중 프로세서의 동작을 연구한다, 동시성과 병렬 시행, 그리고 이를 위한 프로세서 간의 통신과 조정 기제에 대하여 연구하는 지식영역이다.
  • 4장 컴퓨터과학의 미래
    • 더 작아지고 강력해진 컴퓨터와 센서 기술, 통신의 발달로 많은 장치와 센서들이 연결되고 이들은 디지털 형태의 데이터를 풍부하게 생산해 낸다. 또한 소셜 네트워크로부터 엄청난 양의 데이터가 생성된다. 데이터 폭주라고도 부르는 이 상황은 컴퓨터를 쓰지 않고는 시뮬레이션도, 실험도, 검증도 할 수 없게 만들었다. 창의적인 방법을 통하여 데이터 집합을 분석하면 작은 규모의 데이터 집합이나 합성된 데이터로는 얻을 수 없는 유용한 정보가 얻어진다. 이는 실세계에 대한 새로운 통찰력을 제공한다. 컴퓨터과학은 모든 분야의 과학자들이 연구를 수행하기 위한 핵심 요소가 되고 있다.
    • 실세계의 큰 데이터 집합을 모으고 분석하여야 한다는 것 때문에 컴퓨터과학은 지금 근본적인 변화를 맞고 있다. 큰 데이터 집합은 우리의 세상에 대한 이해를 다시 만들고 있기 때문이다. 코넬 대학의 존 호프크로프트(John Hopcroft)는 빅데이터 분석이 미래 컴퓨터과학의 핵심이 될 것이라고 예측하고 있다 .
    • 상용 컴퓨터가 일상화되기까지 컴퓨터과학은 프로그래밍 언어, 컴파일러, 운영 체제, 데이터베이스 개발 등과 같은 컴퓨터를 유용하게 만드는 데 관심이 있었다. 1970년대 이전에는 과학 계산용이 주된 사용 목적이었다가, 1970년대에 개인용 컴퓨터가 활성화되면서 개인이나 사무실에서의 작업을 돕는 컴퓨팅에 관심이 생겨나게 되었고, 인간의 생산성을 크게 향상시켰다. 그러나 앞으로 컴퓨터과학은 새로운 방법으로 새로운 문제를 풀게 될 것이다. 생활 밀착형 컴퓨팅이라고 할까? 매우 작은 센서와 프로세서를 활용하는 기술, 엄청난 양의 데이터를 즉시 처리하는 기술이 요구될 것이다. 이미 사물 인터넷, U헬스 등의 연구가 깊이를 더하고 있다. 이와 같은 새로운 방향을 지원하는 컴퓨터과학 기반을 개발해야 하고. 학생들이 이런 측면에서 훈련 받을 수 있도록 교육 과정을 개발해야 한다.
    • 호프크로프트는 다음과 같은 것들이 미래의 컴퓨터과학의 연구 주제가 될 것이라고 예측하고 있다.
    • - 과학 문헌에서 아이디어의 흐름을 추적
    • - 소셜 네트워크에서 커뮤니티 진화를 추적
    • - 비정형 데이터 소스에서 정보의 추출
    • - 대용량 데이터 세트와 스트림을 처리
    • - 노이즈 데이터로부터 신호 추출
    • - 높은 차원의 데이터 다루기 및 차수 감소
    • 데이터 폭주는 앞으로의 모든 과학 연구에서 수학뿐 아니라 컴퓨터과학과 통계학이 필수 요소가 될 것이다. 가설을 세우고 시뮬레이션을 하고 실험을 하여 가설 검증을 하는 과정을 컴퓨터 프로그램을 통하여 수행한다. 결국 이러한 연구 과정의 대부분이 자동화될 것이다. 자동화된 기계학습 프로그램이 데이터를 분석하여 과학적 모형을 만들고 자동 로봇이 실험하고 검증과 평가도 자동으로 진행한다. 고급 인지 과정이라고 믿어 왔던 많은 부분이 컴퓨터에게 넘어가게 될 것이다.
    • 컴퓨터가 과학 연구에 영향을 주는 것과 마찬가지로 과학 기술의 발전이 컴퓨터 기술의 발전에 기여하는 전통적인 기술의 흐름도 여전하다. 미래의 과학자, 컴퓨터 과학자, 통계 전문가는 적극적으로 협력하여 서로 정보를 교류하고 공동 연구팀을 구성하여 과학계의 문제에 도전해야 할 것이다. 이것은 비단 과학계뿐 아니라 컴퓨터과학의 연구에도 새로운 지평을 여는 계기가 될 것이다. 처음에는 과학에서 수학을 활용하는 것으로 시작했지만 나중에는 과학에 의해 수학도 함께 발전했듯이 이제는 과학과 컴퓨팅 분야도 서로 영감을 주고받으며 함께 발전하게 될 것이다.
  • 5장. 우리나라의 컴퓨터 과학, 어디에 있는가?
    • 우리나라 대부분의 4년제 대학에서 컴퓨터과학 학사 과정을 운영하고 있다. 일부 대학에서는 정보통신학과, 전자정보공학과라는 등 학업 내용을 알 수 없는 다양한 명칭으로 불리지만 컴퓨터과학 및 유사 전공에서 연 2만 명이 졸업하는 것으로 보인다.
    • 우수한 대학에서는 컴퓨터과학 석•박사 학위 프로그램을 운영한다. 수도권의 사립 대학이나 지방 국립 대학에서는 20~30명의 교수를 확보하고 있어서 미국 컴퓨터 학회(ACM)에서 추천하는 대부분의 지식영역을 교육•연구하고 있다.
    • 카이스트(KAIST)의 전산학과에는 연 60명 수준의 석사 과정, 30명 수준의 박사 과정 학생이 입학하고 있으며, 50여 명의 교수가 봉직하고 있다. 2014년 QS 대학 순위에서 카이스트는 컴퓨터과학 분야에서 36위를 차지했다. 서울대학교는 42위를 차지했다.
    • 우리나라의 컴퓨터과학 논문 생산 실적은 양에서는 문제 없어 보인다. 대학이나 교수 실적 평가에서 과학기술논문 색인지수(SCI) 논문을 강조하다 보니 많은 수의 논문이 생산되었다. 그러나, 컴퓨터과학 분야만의 특성으로 자리 잡은 학술대회 논문 중시의 관행이 국내에서는 아직 자리 잡지 못하고 있다. 학술 대회의 참여가 저조하여 국내 학자들의 능력에 비하여 국제사회에서의 평판이 저조하다.
    • 컴퓨터과학 대학 교육의 질에 대하여 산업체로부터 부단히 질책을 받는다. 졸업생의 현장에서의 실용적 능력이 부족하다는 것이다. 대기업에서는 몇 개월에 걸친 소프트웨어 교육을 실시한 후에 현장에 투입하기도 한다. 학사 과정 컴퓨터과학 교육이 부실한 원인은 여러 곳에서 찾을 수 있으나 초•중•고에서 컴퓨터 언어 교육이나 코딩 교육 없이 컴퓨터과학 관련 학과에 진학한 후에 진행되는 대학에서만의 노력으로는 역부족이 아닌가 한다. 외국에서처럼 초•중•고교에서 컴퓨터과학적 사고(思考)의 기본 소양과 컴퓨터 언어를 이용한 간단한 소프트웨어 개발 교육이 있어야 한다. 그래야만 전공자에 관계없이 모든 사람들이 스스로 소프트웨어를 만들 수 있는 능력을 갖게 될 것이다.
    • 우리나라 소프트웨어 활용도는 선진국의 3분의 1에 지나지 않는다. 대부분의 산업 분야에서 소프트웨어의 활용이 미흡하여 생산성이 낮다. 소프트웨어의 활용이 적고 외국산에 의존하다보니 우리의 소프트웨어 산업이 영세하다. 소프트웨어 생산량이 세계 시장의 1.5%에 지나지 않는다. 보상이 따르지 않으니 우수 인재가 기피하는 산업이 되었다. 그러나 1990년대 말 인터넷 창업의 열기는 네이버, 다음 등의 포털 기업, 넥슨 엔씨소프트 등의 세계적 게임 기업을 키웠고, 2010년의 모바일 열풍은 카카오, 라인 등의 세계적 모바일 서비스를 키웠다. 이들 회사의 창업자는 모두 탄탄한 컴퓨터과학 실력을 바탕으로 한다.
  • 6장 결론
    • 소프트웨어가 개인•기업•정부 전반에 광범위하게 사용되어 삶의 질이 향상되고 소프트웨어가 개인, 기업, 국가의 경쟁력이 되는 사회를 소프트웨어 중심사회라고 부른다 . 스마트폰, 무인 자율 주행 자동차, 유전자 분석을 통한 맞춤형 치료, 감성을 이해하는 로봇 등에서 보는 것처럼 소프트웨어가 단순히 생산성을 높이는 단계를 넘어서 창조와 혁신의 도구로 쓰인다. 소프트웨어 중심의 융합으로 산업의 경계가 파괴되는 현상이 가속화된다. 산업 분야의 지식이 소프트웨어에 집적되고, 소프트웨어를 통해서 지식이 새로운 산업으로 형성된다.
    • 자동화를 통하여 많은 일자리가 없어진다. 단순 반복 일자리는 물론 지식 노동의 전문직 일자리도 컴퓨터로 대체된다. 최근 연구결과에 의하면 20년내에 47%의 미국 일자리가 컴퓨터에 의한 자동화로 없어질 위험에 있다고 한다. 그러나 소프트웨어 중심사회에서는 없어지는 일자리보다 더욱 많은 창의적 일자리가 창출된다. 현재 180만 개의 유럽 내 소프트웨어 일자리가 2018년에는 480만 개로 확대될 것이라고 한다.
    • 사회의 근간이 소프트웨어로 이루어짐에 따라 소프트웨어 오류 및 오작동 시 피해의 대규모 확산이 우려된다. 토요타 자동차의 급발진 사고에서 보듯이 소프트웨어의 품질이 사회의 안전에 직결된다. 또한 사회 기반시설이 인터넷과 소프트웨어를 기반으로 작동함에 따라 해킹의 위협, 개인정보 침해 등의 대규모 위험에 노출되어 있다. 이를 대비하기 위하여는 컴퓨터과학을 더욱 발전시키고, 컴퓨터과학자와 소프트웨어 엔지니어를 다수 양성하여야 한다.
    • 투명하고, 안전하며, 풍요로운 소프트웨어 중심사회의 핵심 학문으로서 컴퓨터과학은 앞으로 더욱 발전하면서 사회에 큰 공헌을 하게 될 것이다.