컴퓨터 과학

컴퓨터 과학(, 컴퓨터 사이언스) 또는 전산학(電算學)은 계산(computation), 정보(information) 그리고 자동화(automation)에 대한 학문이다.

컴퓨터 과학은 알고리즘, 계산 및 정보에 대한 이론적 연구에서부터 하드웨어와 소프트웨어의 계산 시스템 구현에 대한 실질적인 문제에 이르기까지 다양한 주제에 걸쳐 있다.

전산 이론 및 시스템 설계를 다루는 전문가를 컴퓨터 과학자 또는 전산학자라 부른다.

외국에서는 컴퓨터 공학()을 컴퓨터과학(, 컴퓨터 사이언스) 분야 중에서 하드웨어를 다루는 세부 영역의 명칭으로 사용하는데 대한민국에서는 컴퓨터과학과 같은 뜻으로 자리 잡았다. Stanford의 경우 Computer Science전공에서 Computer Engineering트랙을 제공한다.[]

Computer Science and Engineering (CSE)이라는 이름으로 교육 프로그램을 운영하는 대학도 존재한다.

컴퓨터 과학의 분야는 (알고리즘, 계산 이론, 정보 이론 같은 )이론적인 분야와 (하드웨어와 소프트웨어 설계 및 구현을 포함한 )실용적인 분야로 나눌 수 있다. 예를 들어, 컴퓨터 그래픽스나 계산 기하학은 보다 구체적인 응용을 강조하는 반면, 계산 이론은 추상적인 계산 모델과 그것들을 사용하여 해결할 수 있는 일반적인 종류의 문제에 관한 것이다. 알고리즘과 데이터 구조는 컴퓨터 과학의 심장이라고 불려왔다. 프로그래밍 언어론은 계산 프로세스의 설명에 대한 접근 방식을 고려하는 반면, 컴퓨터 프로그래밍은 복잡한 시스템을 만들기 위해 그것들을 사용하는 것을 포함한다. 컴퓨터 구조는 컴퓨터 구성요소와 컴퓨터 작동원리를 설명한다. 인공지능은 인간과 동물에게서 발견되는 문제 해결, 의사결정, 환경 적응, 계획, 학습과 같은 목표 지향적인 과정을 종합하는 것을 목표로 한다. 디지털 컴퓨터는 다양한 정보 과정을 시뮬레이션할 수 있다. 컴퓨터 과학의 근본적인 관심사는 자동화할 수 있는 것과 없는 것을 결정하는 것이다. 컴퓨터 과학자들은 보통 학술 연구에 집중한다. 튜링상은 일반적으로 컴퓨터 과학에서 가장 뛰어난 상으로 인정받고 있다.

컴퓨터 과학은 정보 및 전산의 이론적 기초와 그것의 구현 및 응용을 위한 실용적인 기술을 다룬다.

컴퓨터의 이용 
1960년 전만 하더라도 컴퓨터는 이 세상에 존재하지 않았고 몇몇 선각자의 상상 속에서만 자리하고 있었다. 1946년 최초의 컴퓨터인 ENIAC이 출현한 이래 EDSAC·UNIVAC·MARK 등의 진보를 거쳐 작금에 이르러서는 정보화 사회·정보산업의 시대가 도래하였다. 폭발적인 수요확대로 초고속성장·진보를 거듭한 컴퓨터는 이용범위도 확대되어 산업사회의 다양한 분야에서 이용됨은 물론 일반 가정에서도 이용되고 있다. 제2차 대전 후 처음으로 산업에 이용되기 시작한 컴퓨터는 단순한 계산대체기능(計算代替機能)에서, 의사결정기능(意思決定機能)에 참여할 가능성을 보여주는 비약적인 발전을 보였고, 경영행동(經營行動)의 본질조차도 바꾸고 있다. 이러한 사실은 경영정보시스템(MIS) 지향(志向)의 많은 예에서 볼 수 있듯이, 기업에 있어서 컴퓨터 이용의 최종 목표로서의 전략적 의사결정으로의 효과적 이용을 다할 수 있는 가능성을 증대시키고 있음을 알 수 있다. 즉 커뮤니케이션 기술의 병행적 개발·이용의 진전과 더불어 컴퓨터는 직접 라인 업무의 일부로 되어 있고, 더욱이 수치제어(數値制御：numerical control) 등에서 실증되는 바와 같이 프로세스 제어의 활용분야를 확대하고 있다. 공정자동화, 사무자동화, 혁명으로 지칭되는 경영구조의 개선은 퍼스털 컴퓨터의 보급확대로 나타난 가정의 정보화와 연결되어 공공·금융·유통 서비스가 일체화된 사회·정보통신시스템을 구축하게 되어 원재료의 구매에서 판매시점에 이르는 총체적 관리와 EFTS(전자식 동시결제시스템)의 구축이 가능해진다. 이것은 프로그래밍의 개발의 가속화(加速化) 또는 문제 해결 기술의 진보로 컴퓨터가 기업경영에의 정착을 확고히 했다는 반증이다. 그러나 역시 계산기 개발상에서 애로가 되는 것은 소프트웨어(software)의 문제이며, 이와 같은 소프트웨어(software)·하드웨어(hardware) 또는 여러 인자간의 발전에 있어서 갭을 어떻게 메우느냐 하는 문제가 야기되어 결국 계산기를 독립적인 학문으로 연구·개발시키려는 계산기 과학이라는 새로운 학문이 태동되는 것이다.

용어 
이 말은 새크먼(H. Sackman)에 의하면 '컴퓨터 과학이란 수학·논리학·언어분석·프로그래밍·컴퓨터디자인·정보시스템·시스템스 엔지니어링 등의 공헌과 컴퓨터 개발과 이것의 응용에 관한 이론적·응용적인 훈련교육(訓練敎育)을 중심으로 광범위하게 걸친 연구분야이다'라고 정의한다. 그는 제2차 세계대전 후의 컴퓨터에 상관되는 모든 활동은 '컴퓨터 과학'이라고 하는 학제간연구(interdisciplinary) 영역을 형성하고, 급속한 발전을 가져온 것이라 하고, 1964년에 애치슨(W. H. Atchison) 및 햄블렌(G.W. Hamblen) 등이 개발한 상관영역도(相關領域圖)를 소개하였다. 컴퓨터 과학이라는 하나의 체계의 학문적 인정은 별문제로 하고 그것이 나날이 기성과학에의 참획(參劃), 공헌을 확대하여 인터디스플리너리한 특질을 급속히 변화시키고 있는 것은 명백하다. 애치슨 및 햄블렌은 '컴퓨터 과학'에 대해서 미국·캐나다·멕시코의 93개 대학을 대상으로 해서 앙케트 조사를 하였다. 그 결과로서 거의 모든 대학이 '정보과학'이나 '시스템 엔지니어링'보다 '컴퓨터 과학'이라는 용어를 더 선호하는 것으로 나타났다. 또 1965년 미국의 컴퓨팅기기협회(Association of Computer Machinery)는 이 협회가 조직한 컴퓨터 과학에 관한 커리큘렴(curriculum) 위원회의 권고서(勸告書)를 공개하고 컴퓨터 과학이 단지 컴퓨팅 디바이스나 수치계산의 기술(art)이 아니고, 물리학이 에너지에 관련되는 것과 같은 의의 이상으로 정보문제를 보다 광의(廣義)로 다루는 과학체계임을 논증하고 있다. 이에 관해서 1965년 9월에 캐나다의 서(西)온트리오 대학이 주최한 '시스템과 컴퓨터 과학 콘퍼런스'가 열렸다. 여기서 캐나다의 모든 대학에서의 컴퓨터 과학교육의 방향을 설정하는 토론이 있었고, 새로운 과학의 정의를 비롯해서 경계영역·교수방법 등의 연구·개발결과가 발표되었다. 그 성과의 일단으로서 컴퓨터 과학이 수치분석·응용통계·OR·데이터 처리 등의 여러 영역에 있어서 순수연구보다는 오히려 응용과학으로서의 프레임워크제에 서서의 설정을 목표로 하는 것이 명백해졌다. 또 이러한 전제에서 정보과학(information science)과 컴퓨터 과학의 상관성(相關性)에 관한 이론적 분석, 또는 컴퓨터 연구에 있어서의 이론과 응용간의 불균형 문제가 논구되었다. 이 콘퍼런스는 세계적으로 최초의 시도인 것으로 생각되는데 캐나다의 대학교육에서 '컴퓨터 과학'의 커리큘럼에의 편입은 다른 나라에 앞서는 것으로 보인다.

컴퓨터 과학의 정의의 문제점 
컴퓨터가 미국의 산업 사회에서도 불가결한 존재로서 실제로 많이 쓰이고 있는 것은 부정할 수 없는 사실이지만, '컴퓨터 과학'의 본질에 관한 학계의 논쟁은 아직도 활발하다. 이러한 논쟁과는 별도로 '컴퓨터 과학'에 관한 출판물은 그 정의(定義) 확립 이전에 많이 나와 있고, 이 현상은 MIS의 경우와 많은 유사점을 지닌다고 하겠다. 맥그로 힐(McGraw－Hill Book Co.)의 '컴퓨터 과학 문헌 안내'를 비롯해서 각 출판사가 컴퓨터 과학도서의 선전에 힘을 기울이고 있는 것도 사실이다. 그러면 '컴퓨터 과학'이라는 학문체계가 과연 존재하는가, 존재한다면 그 본질은 어떠한 것인가에 대한 문제점이 거론된다.

컴퓨터 과학의 본질 
1967년 사이먼(H. A. Simon) 교수는 이와 같은 기본적 의문에 대해서 뉴웰(A. Newell)·펠리스(A.G. Pelris)와의 연명으로 『사이언스』지의 공개장(公開狀)에서 다음과 같이 말했다. 그 내용을 요약하면, 현상(現象)이 있는 곳에는 이 현상을 기술하는 과학이 존재한다. 예컨대 식물학이 식물연구의 과학이고, 또 천문학이 별 연구를 목적으로 하는 과학인 것처럼 모든 과학은 현상에 의해서 창조된다. 따라서 컴퓨터가 있는 한, 컴퓨터를 연구하는 과학으로서의 '컴퓨터 과학'이 있어야 할 것이다. 컴퓨터를 둘러싼 환경,현상이 여러 갈래고 복잡하며 문제점이 다수 존재하는 오늘날, 그런 것의 과학적인 추구의 중요성은 다른 모든 과학의 그것에 비해 다름이 없음을 명백히 하고, 회의론자(懷疑論者)에 의해서 제기된 반론(反論)에 대해서, 논리적인 6가지 점을 열거하여 과학으로서의 정당성을 주장하고 있다. 우선, 자연현상만이 과학을 창조하며, 컴퓨터는 인위(人爲) 인공적인 데다 그에 대한 불변의 법칙이 없다. 따라서 과학적인 논거가 불비하다는 반론에 대해서는, 컴퓨터나 컴퓨터 프로그램은 나날이 발전하고 있고, 또한 컴퓨터의 정의(定義)는 명확하지 않으며, 그 뜻이 새로운 개발에 의해서 변화한다고 해도 과학의 현상, 영역은 모두 항상 변화하는 것이며, 컴퓨터 과학만이 그러한 것은 아니라고 하였다. 천문학도 당초에는 천체 사이의 가스는 그 영역 밖에 있었고, 물리학에도 방사선이 포함되지 않았으며, 심리학도 동물행동의 연구를 범위 외로 하였던 시대가 있었음을 지적하고, 또 수학이 지난날에는 '수량의 과학'이라고 정의되었던 사실을 예증(例證)하고 있다. '컴퓨터 과학'은 어디까지나 컴퓨터를 둘러싼 현상의 연구를 하려는 과학이지 컴퓨터를 온도계와 같이 단지 기기(機器)로서 파악하는 것을 부정한다. 그리고 과학을 일렉트로닉스나 수학·심리학 등의 분지과학(分枝科學)이라고 하는 반론에 대해서, 컴퓨터의 연구에는 위에 든 기존과학의 연구도 필요하다는 것을 긍정하면서도 현상이 과학의 중심(中心)을 정의하고 타과학과의 경계를 정의하는 것이 아니며, 그 예증(例證)으로서 생화학(生化學)이 동물학·화학의 어느 것의 존재도 부정하는 것이 아니라는 것을 지적하고 있다. 또 컴퓨터가 공학에 귀속하며, 과학의 대상이 될 수 없지 않은가라는 의문에 대해서는, 전기가 물리학과 공학, 식물(植物)이 식물학과 농학(農學)에 각각 상관되는 것과 같이 컴퓨터도 공학과 과학의 양자에 상관한다. '컴퓨터 과학'은 그것의 전문적인 과학으로서의 발전과정에서 더욱 더 분석(分析)과 가설(假設)과의 조합(組合), 순수연구와 애플리케이션 분석의 통합적(統合的) 그리고 상관적 전개를 통해서 학문적 체계의 특성을 명확히 할 필연성을 갖는다고 말하고 있다. 여하간 '컴퓨터 과학'이 생명력을 갖춘 컴퓨터의 추구를 목적으로 한 과학체계로서 발전할 것은 사실이며, 컴퓨터 과학자의 과제는 여러 인접과학자와의 상관활동을 활발히 하고, '컴퓨터 과학'으로 하여금 인간사회 진보를 위해 유효한 과학체계로서 공헌할 수 있도록 하는 데 있다고 할 수 있다.

역사 
컴퓨터 과학의 역사는 현대의 디지털 컴퓨터의 역사만을 가리키는 것이 아니다. 주판과 같이 계산을 수행하는 기계는 오래전부터 있었다. 1623년에는 최초의 계산기계가 만들어졌고, 찰스 배비지는 19세기 초에 차분기관을 만들었다. 1900년대에 들어서 IBM사가 펀치카드 시스템(PCS)을 개발하여 회계에 관련된 일을 하도록 보급하였다. 하지만 이들 모두는 주어진 한 가지의 일만 수행할 수 있었다.

1920년 이전까지 '컴퓨터'(computer)는 계산(compute)을 담당하는 사무관을 일컫는 용어였다. 쿠르트 괴델, 알론조 처치, 앨런 튜링과 같은 컴퓨터 과학 초기의 학자들은 계산 가능성 문제(종이와 연필만을 가진 사무관이 철저하게 어떠한 지시에 따라 행동하여 계산할 수 있는 것들은 어떤 것들인가?)에 흥미를 느꼈다. 이러한 흥미는 계산이라고 하는, 지겨울 수도 있고 오류율이 높은 작업을 자동화하고자 하는 욕구로부터 비롯되었다. 그들은 이리하여 한 가지의 종류의 작업만 수행할 수 있었던 기존의 기계들과는 다른, 이론적으로 어떠한 계산도 가능한 기계를 만들고자 했다. 이러한 노력이 현대 컴퓨터 과학의 지평을 열었다.

1940년대에 들어서자 더욱 강력한 기능을 지닌 계산기들이 등장했고, 이때부터 '컴퓨터'는 사람이 아닌 이들 기계를 부르는 용어로 굳어졌다. 컴퓨터가 단순한 숫자 계산보다 더 다양한 기능을 할 수 있는 것들이 알려지면서 컴퓨터 과학이라는 분야가 더욱 넓어지기 시작했다. 1960년대부터 여러 대학에 컴퓨터 과학 학과와 전공 과정이 생기면서 컴퓨터 과학이 학문으로 인정받기 시작하였으며, 학문의 쓰임새에 따라 세분되었다.

미국의 컴퓨터 과학 
컴퓨터는 이제 '컴퓨터 만능'으로까지 지칭될 만큼 시대의 총아이며 미래의 청사진이기도 하다. 이미 독립적인 사고능력을 가진 컴퓨터가 나타나고 있는데, 미국의 경우에는 일리노이대학에서 컴퓨터와 인간간의 대화에 의해서 학습을 진행하는 CAI(Computer Aided Instruction) 시스템이 시도되고 있다. 특히 미국은 정부 민간기업체 차원에서 컴퓨터 과학연구개발을 위해 대학 또는 민간연구단체에 막대한 재정지원과 프로젝트를 추천해 오고 있다. 이에 따라 미국의 학계에서 커리큘럼 속에 인터디시플리너리적 과학으로서의 컴퓨터 과학 강좌를 설치할 것을 검토하였으며, 컴퓨터 시대에 대응하기 위한 대학의 역할에 적극적인 자세를 보이고, 이 몇 해 동안에 유명한 대학의 경영대학원에서 컴퓨터 강좌를 병설하는 곳이 증가하고 있다. 또한 많은 컴퓨터 사이언스 담당교수가 있다고 한다. 예컨대 사이먼(H.A. Simon) 교수는 1966년 이후 컴퓨터 사이언스 심리학담당 교수로 활약하고 있다. 또한 OR의 세계적 권위자이며 파이어니어인 스탠포드대학의 단치히(G.H. Dantzig) 박사도 컴퓨터 사이언스를 강의하고 있다. 경영과학(managment science)의 여러 기법(技法)과 컴퓨터와의 연동(連動)을 전제로 한 문제해결법(problem solving)의 발전이 컴퓨터 효과의 증대에 기여할 가능성을 크게 나타내고 있는데도 불구하고 '컴퓨터 과학'의 침투가 늦어지고 있는 이유로서는 ① 경영과학의 응용성의 결여, ② 인터디시플리너리한 어프로치에 있어서의 통합이론(統合理論), 또는 기술상의 미(未)발달 등을 들 수 있다 다시 말해서 경영관리의 환경 적응성의 이론적 프레임워크의 설정 곤란, 교육시스템의 개발 지체에 있는 것이다. 이 문제를 고려함에 있어 정보과학 또는 MIS의 발달과정을 정사(精査)하는 것도 중요하다. 즉 MIS의 조속한 이용을 기대한 경영자의 실망에 비추어 보아 컴퓨터 사이언스에 대한 의문이나 재고(再考)의식이 나온 것도 부정할 수 있다. 컴퓨터 과학을 둘러싼 논의가 활발해졌지만, 그 전체로서 컴퓨터 과학이 경영관리의 혁신에 있어서 진실로 가치 있는 과학체계임을 명백히 할 필요가 있다. 따라서 캐나다의 컴퓨터 교육의 발전을 논하기 이전에 미국에서의 논쟁을 추적함으로써 그 본질과 방향에 대해 고찰하는 것도 중요한 일이 되겠다.

다른 분야와의 관계 
컴퓨터 과학은 오늘날 많은 사람들이 사용하는 컴퓨터라는 기계에 대한 학문으로 한정되지 않는다. 유명한 컴퓨터 과학자 에츠허르 데이크스트라는 "컴퓨터 과학에서 컴퓨터란, 천문학에서 망원경 이상의 것이 아니다."라고 하였다.

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

많은 과학 분야와 비슷하게 컴퓨터 과학도 수학과 가장 밀접한 관계를 가지고 있을뿐만 아니라, 수학에 기초를 둔 과학의 한 분야이다. 컴퓨터 과학의 기초에 큰 영향을 미친 수학이 조지 불의 불 대수이다. 불 대수는 이진법을 기반으로 한 대수학으로, 그 외에 체론과 환론 또한 중요한 영향을 미쳤다. 초기의 컴퓨터 과학은 쿠르트 괴델과 앨런 튜링 등의 수학자들이 큰 영향을 끼쳤고, 수리논리학, 범주론, 도메인 이론, 대수학과 같은 수학 분류들은 컴퓨터 과학과 함께 발전하고 있다.

스탠 켈리-부틀은 "과학과 컴퓨터 과학의 관계는 유체동력학과 납공업의 관계와 같다"라고 말하였다. 이는 컴퓨터 과학이 과학의 특성을 충분히 갖지 않는다는 오해에 기인한다. 

컴퓨터 과학과 소프트웨어 공학의 관계에 대해서는 논란이 많다. 컴퓨터 과학과 소프트웨어 공학의 용어 정의가 많은 사람들에게 다소 모호하게 보이기 때문이다. 소프트웨어 공학은 컴퓨터 과학의 한 분야에 불과하다고 말하는 사람들이 있는 반면, 소프트웨어 공학은 다른 분야에 대한 응용이나 자원을 운용하는 방법 등 실용적인 특징에서 컴퓨터 과학의 다른 분야와 잘 구분된다.

컴퓨터 과학과 경영 관리 
사이먼은 컴퓨터와 사상의 관계에 대해서 '컴퓨터가 인간의 이미지에 따라서 조직되는 것이라면, 컴퓨터는 명백히 인간행동에 대한 택일적(擇一的) 조직상(組織上)의 가설에서 생기는 결과를 개발하는 기기(機器)이다'라고 말하고, 인간행동의 깊은 이해를 얻기 위한 수단으로서의 컴퓨터 시뮬레이션(computer simulation)의 중요한 역할과 의의를 밝히고 있다. 이 뜻을 경영관리의 향상이라는 관점에서 파악할 경우, 맨머신 시스템(man-machine system)의 원의(原義)가 밝혀질 것으로 생각되지만, 컴퓨터의 본질과 적용분야의 과학적 추구를 적극화하고, 컴퓨터에 대한 투자의 최적 효과의 창출에 체계적으로 노력함이 경영관리의 도전적 과제라고 이해할 수 있다. 또 이와 같은 방향설정이 긍정된다면, 경영교육 커리큘럼 편성에 있어서의 '컴퓨터 과학'의 위치 설정도 명백해질 것으로 생각되지만, 교육기간은 말할 것도 없고, 기업조직에서 과학으로서의 컴퓨터 사고(思考)는 가속적(加速的) 보편화를 이룰 것이 명확하다. 경영관리에 대한 컴퓨터의 임팩트(impact)의 본질적 이해와 대응책도 컴퓨터의 과학적 추구에 크게 의존할 것이라는 점을 강조함과 동시에 '컴퓨터 과학'이 경영학 혁신의 에이전트(agent)적 기능을 다할 것이라는 점을 지적해야 한다.

분야 
컴퓨터 과학은 그 이론의 적용법에 따라 여러 분야로 나뉜다. 일반적인 분류는 다음과 같다.

인접 학문 

 정보철학
 정보심리학
 인지과학
 언어학
 사이버네틱스

바탕이 되는 이론 
 이산수학
 정보이론
 수리논리학
 도메인 이론
 확률론과 통계학
 암호학

이론 컴퓨터 과학 
 계산 이론
 그래프 이론
 최적화 이론
 오토마타 이론
 유형 이론
 정보 이론
 부호 이론
 양자 컴퓨팅
 계산 가능성 이론
 형식언어
 람다 대수

알고리즘과 자료 구조 
 알고리즘
 알고리즘 분석
 확률적 알고리즘
 자료 구조
 계산기하학
 조합 최적화

프로그래밍 언어론과 정형 기법 
 프로그래밍 언어
 유형이론
 컴파일러
 자동 정리 증명

병행·병렬·분산 컴퓨팅 
 병렬 컴퓨팅
 그리드 컴퓨팅
 병행 컴퓨팅
 병행성
 분산 컴퓨팅

소프트웨어 공학 

 소프트웨어 공학
 컴퓨터 프로그래밍

컴퓨터 시스템 

 컴퓨터 공학
 컴퓨터 아키텍처
 마이크로아키텍처
 명령어 집합 구조
 다중 처리
 운영 체제
 실시간 컴퓨팅
 프로세서 디자인

네트워크 
 컴퓨터 네트워크

인공지능 
 자동 추론
 로보틱스
 컴퓨터 비전
 기계 학습
 진화 연산
 자율 컴퓨팅
 패턴 인식
 지식 표현
 강화 학습
 심층 학습
 인공 신경망
 떼 지능
 게임이론
 Algorithmic game theory
 인공생명

데이터베이스 
 데이터베이스
 데이터 마이닝
 검색 엔진

컴퓨터 그래픽스와 시각화 
 2차원 컴퓨터 그래픽스
 3차원 컴퓨터 그래픽스
 계산기하학
 컴퓨터 애니메이션
 렌더링
 혼합 현실
 가상 현실
 솔리드 모델링

이미지 처리와 음향 처리 

 FFT 알고리즘
 이미지 처리
 음성 인식
 데이터 압축
 음성 합성

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

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

계산과학 

 수치해석학
 계산생물학
 계산물리학
 계산화학
 생물정보학
 신경정보학
 계산신경과학
 기호계산

프로그래밍 패러다임 

 함수형 프로그래밍
 명령형 프로그래밍
 선언형 프로그래밍
 객체지향 프로그래밍
 절차적 프로그래밍

같이 보기 
 컴퓨터과학자
 컴퓨터과학자 목록
 튜링상
 ACM 
 컴퓨터 공학

각주

외부 링크 

 
 루치아노 플로리디, 정보철학(The Philosophy of Information)

 
응용과학
컴퓨터 공학
형식과학