Computational Thinking 이란?

일상의 문제를 소프트웨어로 해결하기 위한 프로그래밍 과정은 다음과 같이 정리할 수 있다.

  1. 문제를 정확하게 이해하고 분석하고 (문제 이해 및 분석)
  2. 문제에 핵심 요소를 추출하고, 추출된 요소로 문제를 재정의하고 (추상화와 모델링)
  3. 문제 해결을 위한 방법과 절차 (알고리즘)을 고안한다.
  4. 고안된 방법과 절차대로 컴퓨터가 일을 수행할 수 있도록 프로그램을 작성하고(소스 프로그램 작성) 결과가 정확한가를 확인한다(자동화).
  5. 만약 그 결과가 올바르지 않으면 전 단계 어디에서 무엇이 잘 못 되었는지를 탐색하여 오류를 수정한다.
  6. (디버깅) 목적했던 프로그램이 완성될 때까지 나머지 단계를 반복한다.

이런 이련의 과정을 수행할 수 있는 능력을 컴퓨팅 사고력(CT : Computational Thinking)이라고 할 수 있다.

CT 능력은 학습 능력과 문제 해결 능력과도 매우 깊은 연관이 있다. 무엇인가를 학습하기 위해서는 그 문제에 대한 이해와 분석이 선행되어야 하며, 그 후 그 문제를 풀거나 경험해 보아야 한다. 학습 이후에는 무엇을 알고 무엇을 모르는지에 대한 평가 후 모르거나 부족한 부분에 대한 재학습과 오개념에 대한 수정이 있어야 한다. 이렇듯 무엇인가를 학습 과정과 프로그래밍의 과정은 매우 유사하며 이러한 이유로 최근 SW 프로그래밍 교육과 학습이 전 세계적으로 화두가 되고 있는 듯 하다. 

우리는 종종 문과계열의 사람들과 이공계열 사람들간의 특성을 우스개 소리로 이야기한다. 문과 계열 사람들은 생각과 말은 많으나 실제 일을 실행하는 능력이 떨어진다라고 한다. 반면 이공계열 사람들은 실행력은 좋은데 통합적 분석 능력과 깊은 사고 능력이 떨어진다고 한다. 하지만 무한 경쟁 시대를 살아가는 요즘은 이공계열의 특징과 문과계열의 특징 모두를 가지는 것이 매우 중요하다. 사회에서 경쟁력을 갖고 리더가 되기 위해서는 말만 많이 앞서고 실행능력이 없어서도 안 될 것이고, 앞뒤를 가리지 않고 직접 일을 실행하는 일도 있어서는 안될 것이다. 본서는 단순히 프로그램을 배우거나 빅데이터 처리 기술을 배우기 위한 책이 아니다. 오히려 우리가 학습과 직업 현장에서 날마다 부딪치는 '문제'를 논리적으로 또 계산적으로 해결할 수 있는 방법을 배우는 것이라 할 수 있다.

본서는 크게 세부분으로 나눌 수 있다. 책의 앞부분은 논리적 체계적으로 문제를 이해하고 분석하는 사고력에 대해서 다룬다. 다음은 문제 해결을 위한 알고리즘을 개발하고 개발된 알고리즘을 누구나 쉽게 프로그램을 개발할 수 있는 블록형 언어를 이용하여 구현하는 실행력을 다룬다. 마지막은 파이썬을 이용하여 우리 삶 속에서의 빅데이터를 분석하는 프로그램을 구현해봄으로써 배운 내용에 대한 통합과 전이능력을 다룬다. 이러한 내용을 책 한권에서 다루는 것은 다소 도전적이며 목적을 성취하기가 쉽지는 않은 것이다. 하지만 단편적이고 파편화되어 있는 우리들의 문제를 해결 능력과 사고력을 분석적이고 통합적이며 또 CT능력을 바탕으로 한 실행력을 갖추는데 기여했으면 하는 바이다. 이제 우리는 이것도 해야하지만 저것도 하지 않으면 안되는 융합과 통섭의 시대에 살고 있기 때문이다.

본서는 Virginia Tech 공대 컴퓨터학과에서 비전공자들을 위한 CT교육을 하기위해 개발된 자료를 바탕으로 번역하고 새로 필요한 부분을 변형하여 내용을 추가해서 만들어진 자료이다.

본 자료를 만든 Virginia Tech의 Dennis Kafura교수와 다른 동료 교수들에게 감사의 뜻을 표한다.

 

2016년 2월 19일 저자 임희석

크리에이티브 커먼즈 라이선스이 저작물은 크리에이티브 커먼즈 저작자표시-동일조건변경허락 4.0 국제 라이선스에 따라 이용할 수 있습니다.