컴퓨팅 사고

컴퓨팅 사고 또는 전산적 사고(電算的 思考, 영어: computational thinking, CT)는 컴퓨터(사람이나 기계)가 효과적으로 수행할 수 있도록 문제를 정의하고 그에 대한 답을 기술하는 것이 포함된 사고 과정 일체를 일컫는다. 정답이 하나가 아니라 여러가지일 수 있는 문제(Open-ended Problem)는 다양한 변수에 기반한 포괄적이며 유의미한 해답 도출이 필요한데, 컴퓨팅 사고를 통해서 발견한 문제분해(decomposition), 자료 표현(data representation), 일반화(generalization), 모형(modeling), 알고리즘이 필요하다. 컴퓨팅 사고에는 전체 의사결정 과정을 분해하고, 연관된 변수와 모든 가능한 해법을 고려해서, 이를 상응하는 모수와 문제 한계를 고려하여 올바른 의사 결정을 내린다. 컴퓨팅 사고라는 용어는 컴퓨터 과학자 시모어 페퍼트가 처음으로 1980년 다시 1996년 각각 언급했다. 컴퓨팅 사고를 사용해서 복잡한 대규모 문제를 알고리즘으로 해결할 수 있고, 흔히 효율성에서 상당한 개선을 달성하는데 사용된다. 컴퓨팅 사고를 정의하는 특성은 문제분해, 패턴 인식, 자료 표현, 일반화/추상화, 알고리즘이다. 문제를 분해하고, 자료 표현하는데 연관된 변수를 식별하고, 알고리즘을 생성함으로써 도출된 결과가 일반적인 해답이다. 일반화와 추상화를 통해 최초 문제에서 파생된 다양한 응용 문제를 해결할 수 있다. 컴퓨팅 사고는 Jeannette Wing 박사가 ACM에 기고한 논문에서 컴퓨터 과학 커뮤니티에 전면으로 부상하기 시작했다. 이 논문에서 컴퓨터적으로 사고하는 기술이 단지 컴퓨터 과학자에만 국한되지 않고 모든 사람에게 필요한 읽기, 쓰기, 셈하기와 같은 근본적인 기술이 되었다고 제시하고 있다. 또한, 컴퓨터적 아이디어를 다른 학문분야와 통합하는 중요성에 대해서도 언급했다. 컴퓨팅 사고는 문제해결 과정으로 다음 특징을 포함하고 있다. 자료를 분석하고 논리적으로 조직화 데이터 모형화, 자료 추상화, 모의시험 컴퓨터 도움을 받을 수 있도록 문제를 구성 가능한 해결책을 식별하고, 테스트하고, 구현 알고리즘적 사고를 통해 해결책을 자동화 본 과정을 다른 문제에 대해 일반화하고 적용 미국의 컴퓨터과학 교사협회는 컴퓨팅 사고를 크게 추상화와 자동화로 분류하고 있다. 우선 추상화는 복잡하게 얽혀 있는 문제를 구조화하고 해결 가능한 상태로 만드는 것이다. 추상화를 통해서는 자료를 수집하고 분석한 후 문제를 분해하여 보다 간결한 상태로 만든다. 자동화는 추상화된 문제를 컴퓨터의 언어로 바꾸는 과정으로, 이를 거쳐 컴퓨터의 언어로 변환된 문제에서 알고리즘을 도출해 문제를 보다 쉽게 해결할 수 있게 된다. 컴퓨팅 사고는 컴퓨터 프로그래밍에만 이용되는 사고방식이라고 오인하기 쉽지만, 컴퓨팅적 사고는 경영, 금융, 공학, 예술 등의 분야를 넘어 ‘열쇠를 잃어버렸을 때’, ‘밀린 과제의 우선순위를 결정할 때’ 와 같은 실생활에서 나타나는 문제에도 적용할 수 있을 만큼 실용적이다. 컴퓨터의 문제 해결 방식과 같이, 가장 처음 문제가 발생했을 때는 문제를 파악하고 구조화한 후 그에 맞는 알고리즘을 도입해 단계별로 문제를 해결해 나간다면 컴퓨팅적 사고로 문제를 해결했다고 할 수 있다. 예를 들어 잃어버린 열쇠를 찾는 경우, “만약 열쇠가 방에 없다면, 차 안을 찾아본다. 차 안에도 없다면, 코트 주머니 속을 찾아본다. 어느 곳에서도 찾지 못했다면 열쇠를 새로 만든다.” 와 같이 컴퓨터 프로그래밍 언어의 “If, elif, else”와 유사한 구조가 나타나는 것과 같다. 현재 세계의 여러 나라들은 정보 교육을 정규 교과 과정으로 도입하며 단순 코딩 능력을 넘어 컴퓨팅적 사고 교육에 힘쓰고 있다. 미국은 컴퓨팅 사고를 교육과정에 도입하고, STEM(Science, Technology, Engineering, Math)분야에 적용하기 위해 3500억원이라는 막대한 예산을 할당하여 100만명의 컴퓨팅적 사고 교사를 육성하고 있다. 또한 시카고, 뉴욕을 포함한 몇 개 주들은 소프트웨어 교육을 필수과목으로 지정하고, Advanced placement 프로그램에도 “Computational Thinking”이라는 컴퓨팅 사고를 직접 가르치는 과목을 추가할 예정이라고 한다. 또한 영국의 경우 컴퓨팅 사고 과목을 필수 교과 과정으로 지정하고 대학생과 중고등학생은 물론 미취학 아동들에게까지 장기적 컴퓨터적 교육을 실시하고 있다. 대한민국에서도 앞의 사례들을 참고하여 초, 중, 고등학교에 소프트웨어 교육을 도입하려는 계획을 수립하고, 소프트웨어중심 대학을 선정하여 전공에 상관없이 컴퓨터 프로그래밍 강의를 실시함으로써 전공이나 나이에 상관없이 단순 코딩을 넘어선 컴퓨팅 사고를 기를 수 있는 방법을 모색 중이다. 컴퓨팅 사고는 새로운 창의적 사고의 방법으로 주목받고 있다. 많은 나라들이 정보 교육을 실시하는 것은 국민을 단지 컴퓨터 코딩을 능숙하게 다루는 프로그래머로 만들자는 것이 아니라, 국민들이 모든 분야의 문제를 새로운 방향으로 생각하여 수월하게 해결할 수 있게 돕고자 함이다. 컴퓨팅 사고는 자료를 수집하고 분석하는 것에서부터 문제를 병렬화하여 여러 문제를 동시에 해결하는 것도 수월하게 한다. 또한 컴퓨터가 우리 생활의 전반을 지배하고 있는 현대에는 모든 문제를 컴퓨터와 접목시키는 것이 매우 중요해졌다. 창업을 할 때 소프트웨어를 이용해 경영에 도움되는 프로그램을 구상하는 일, 소프트웨어 외주 업체와 대화하는 일, 심지어는 예술을 컴퓨터 기술로 표현하는 일까지 컴퓨터를 다양한 분야에 이용하게 되었기 때문이다. 이러한 상황에서 여러 분야의 문제를 컴퓨터로 해결할 수 있게 컴퓨터화한다면 더욱 효율적이고 정확한 해결책을 찾을 수 있을 뿐만 아니라 비슷한 유형을 가진 다른 문제들에도 쉽게 적용할 수 있게 될 것이다. 피츠버그에 위치한 카네기 멜런 대학교에 컴퓨팅 사고에 대한 연구센터가 있다. 센터의 주요 연구활동은 문제지향 탐색(PROBE, PROBlem-oriented Explorations)을 수행하는 것이다. 문제지향 탐색은 최신 컴퓨팅 개념을 문제에 적용해서 컴퓨팅 사고의 가치를 시연하는 실험과정이다. 문제지향 탐색은 일반적으로 컴퓨터 과학자와 연구하는 해당분야 전문가와의 공동작업으로 진행된다. 실험은 일반적으로 일년간 진행된다. 문제지향 탐색은 대체로 협소한 이슈는 피하고 폭넓게 적용될 수 있는 문제에 대한 해결책을 찾으려고 한다. 문제지향 탐색에 대한 사례로 콩팥 이식 최적 물류체계 구축과 약물 부작용없는 신약 생성을 들 수 있다. 컴퓨팅 사고에 대한 관심이 상당히 높아졌지만, 언제, 누구에게서, 무엇을, 어떤 방식으로 배우냐에 따라 컴퓨팅 사고에 대한 상당한 지식의 차이가 존재한다. 다만, 기존 오피스나 아래한글 같은 사무자동화, 인터넷 사용법, 포토샵같은 이미지 그리는 것이 정보 교육이 아니라는 것은 이제 합의되어 나가는 것으로 보인다. 계산 지능 인공지능 의사결정 기계 학습 데이터 사이언스 논리형 프로그래밍 Papert, Seymour. Mindstorms: Children, computers, and powerful ideas. Basic Books, Inc., 1980. Papert, Seymour (1996). “An exploration in the space of mathematics educations”. 《International Journal of Computers for Mathematical Learning》 1. doi:10.1007/BF00191473.  Repenning, A.; Webb, D.; Ioannidou, A. (2010). 〈Scalable game design and the development of a checklist for getting computational thinking into public schools〉. 《Proceedings of the 41st ACM technical symposium on Computer science education - SIGCSE '10》. 265쪽. doi:10.1145/1734263.1734357. ISBN 9781450300063.  Guzdial, Mark (2008). “Education: Paving the way for computational thinking” (PDF). 《Communications of the ACM》 51 (8): 25. doi:10.1145/1378704.1378713. 2016년 3월 3일에 원본 문서 (PDF)에서 보존된 문서. 2016년 1월 27일에 확인함.  Wing, J. M. (2008). “Computational thinking and thinking about computing”. 《Philosophical Transactions of the Royal Society A: Mathematical, Physical and Engineering Sciences》 366 (1881): 3717. Bibcode:2008RSPTA.366.3717W. doi:10.1098/rsta.2008.0118.  Center for Computational thinking at Carnegie Mellon cmu.edu Exploring Computational Thinking, Google.com Conrad Wolfram: Teaching kids real math with computers - 유튜브, TED talk 2010-11-15 What is Computational Thinking? CS4FN at CS4FN “The Sacramento Regional CPATH Team has created a Think CT website with information on CT developed by this NSF-funded project.”. 2011년 8월 31일에 원본 문서에서 보존된 문서. 2016년 1월 27일에 확인함.  “A short introduction to Computational Thinking by the Open University”. 2016년 2월 25일에 원본 문서에서 보존된 문서. 2016년 1월 27일에 확인함.  “Introduction to computational thinking”. 《BBC Bitesize》. 2015년 11월 25일에 확인함.  “Exploring Computational Thinking”. 《Google for Education》. 2015년 11월 25일에 확인함.  Wing, Jeanette M. (2006). “Computational thinking” (PDF). 《Communications of the ACM》 49 (3): 33. doi:10.1145/1118178.1118215.  Stephenson, Chris; Valerie Barr (May 2011). “Defining Computational Thinking for K-12”. 《CSTA Voice》 7 (2): 3–4. ISSN 1555-2128. CT is a problem solving process...  PROBE Experiments POSTECH 컴퓨팅사고력센터