컴퓨팅 사고력의 이해

*다음글은 “2016년 소프트웨어교육 선도교원 연수” 교재의 글입니다.

 

가. 컴퓨팅 사고력이란?

1) 컴퓨팅 사고력의 등장과 정의

컴퓨팅 사고력에 관한 연구는 미국 MIT의 S. Papert 교수가 1980년대에 그의 저서에서 절차적 사고라는 용어를 사용한 이후, 2006년 미국 카네기멜론 대학의 Wing교수의 연구에 의해 컴퓨팅 사고력(Computational Thinking, CT)이라는 용어가 재조명되면서 컴퓨터 교육 현장에서 이슈화되기 시작하였습니다. 이후 수많은 학자와 다양한 단체에서 컴퓨팅 사고력의 정의를 내리고 그 속성을 규명하기 위한 연구를 진행하였습니다.
이후 컴퓨팅 사고력의 다양한 정의를 유 초 중등 교육에 효과적으로 적용할 수 있는 기반을 마련하고자, 국제교육공학협회(ISTE)와 컴퓨터과학교사회(CSTA)에서 컴퓨터 과학교사, 연구자 및 관련 참여자들의 검토 결과를 취합하여, 컴퓨팅 사고력의 통일성 있는 조작적 정의와 교육적 적용 방안을 명확화 하였습니다. 이들이 제시한 컴퓨팅 사고력의 조작적 정의(ISTE & CSTA, 2011)는 다음과 같은 특징을 갖는 문제 해결 절차로 설명하고 있습니다.
 
  • 문제 해결을 위해 컴퓨터나 도구를 사용할 수 있도록 문제를 표현하기
  • 논리적으로 자료를 조직하고 분석하기
  • 모델이나 시뮬레이션 등의 추상화를 통해 자료를 표현하기
  • 알고리즘 사고와 같은 일련의 절차를 통해 해결책을 자동화하기
  • 가장 효율적이고 효과적인 절차와 자원을 조합하여 목표를 달성하는 데 필요한 해결책을 확인하고, 분석하고, 구현하기
  • 이러한 문제 해결 절차를 다양한 문제로 일반화하고 적용하기
 
컴퓨팅 사고력에서 위와 같은 역량들은 다음과 같은 성향이나 태도를 지원하고 신장시킵니다.
  • 복잡한 문제를 다루는 데 있어서의 자신감
  • 어려운 문제를 다루는 인내력
  • 모호성에 대한 허용
  • 답이 정해지지 않은 개방형 문제를 다룰 수 있는 능력
  • 공동의 목표나 해결책을 달성하기 위해서 다른 사람과 의사 소통하고 일할 수 있는 능력
 

2) ‘Computational Thinking’의 우리말 표기

위에서 살펴본 바와 같이 Computational Thinking이라는 용어는 외국에서 도입된 용어이고, ‘Computational’ 이라는 용어의 중의성 때문에 국내에서는 연구자에 따라서 ‘계산적’, ‘정보 과학적’, ‘컴퓨터 과학적’, ‘컴퓨팅적’ 등으로 다르게 사용하고 있습니다. 이와 관련하여 한국과학창의재단에서는 연구 및 전문가 협의를 통해 해당 용어에 대한 우리나라의 통일된 시각과 인식을 제공하여 초 중등 교육 현장에 효과적으로 도입하고자 ‘ComputationalThinking’의 우리말 표기를 ‘컴퓨팅 사고력’이라는 용어로 표기하는 것이 적절하다고 최종적으로 합의하여 제시하였습니다. 그 결과, 소프트웨어교육 운영 지침, 2015 개정 교육 과정에서도 ‘컴퓨팅 사고력’이라는 용어를 사용하고 있습니다.
 

3) 컴퓨팅 사고력의 필요성과 소프트웨어교육의 방향

소프트웨어교육 운영 지침의 기본 방향은 ‘학습자들이 미래 사회에서 살아가는 데 필요한 컴퓨팅 사고력을 기반으로 문제를 해결하는 역량을 신장하는 것’입니다. 또한 2015 개정 정보과 교육과정에서는 ‘컴퓨터 과학의 기본 개념과 원리를 바탕으로 실생활 및 다양한 학문 분야의 문제를 창의적으로 해결하는 컴퓨팅 사고력 함양을 위한 교육’을 지향하고 있습니다. 따라서 초 중등 학교에서 이루어지는 소프트웨어교육은 프로그램 개발 역량보다는 정보 윤리 의식과 태도를 바탕으로 실생활의 문제를 컴퓨팅 사고력으로 해결할 수 있도록 하는 데 역점을 두고 있다고 이해할 수 있습니다. 또한, 소프트웨어교육에서는 지식 위주의 교육보다는 체험과 실습 위주의 교육을 통하여 소프트웨어 중심 사회의 필수적 요소인 컴퓨팅 사고력의 중요성을 학습자 스스로 인식하고 그 가치를 확인할 수 있도록 교육 방법을 설계해야 합니다.
 

나. 컴퓨팅 사고력의 구성 요소

연구자들에 의하면, 컴퓨팅 사고력은 다양한 구성요소로 이루어져 있습니다. Wing(2008)은 컴퓨팅 사고력을 크게 추상화(Abstraction)와 자동화(Automation)로 구분하였습니다. 추상화는 실제 세계의 문제를 해결 가능한 형태로 표현하기 위한 사고 과정이고, 자동화는 추상화 과정을 통해 만들어진 해결 모델을 컴퓨터가 이해할 수 있는 프로그래밍 언어로 표현하여 인간이 처리하기 어려운 많은 양의 반복된 작업이나 시뮬레이션을 실시하는 것입니다.
국제교육공학협회(ISTE)와 컴퓨터과학교사회(CSTA)에서는 컴퓨팅 사고력의 조작적 정의를 내리면서 그 세부 요소를 자료 수집, 자료 분석, 자료 표현, 문제 분해, 추상화, 알고리즘과 절차, 자동화, 시뮬레이션, 병렬화의 9가지 요소로 제시하였습니다.
 여기서 유의할 점은 Wing이 제시한 컴퓨팅 사고력을 구분할 때 사용하였던 추상화와 컴퓨팅 사고력 구성 요소에 포함된 추상화를 구별해야 한다는 점입니다. 위에서 분류한 추상화는 인간이 문제 해결을 위해 사고하는 과정 전반을 의미하지만 세부 구성 요소에 포함되는 추상화는 문제 해결에 필요한 핵심 요소를 선정하고 복잡함을 줄이는 단계라는 점에서 의미상의 차이가 있고, 자동화 또한 마찬가지입니다. 큰 의미로 컴퓨팅 시스템이 갖는 능력을 의미하는 자동화와는 달리 세부 구성 요소의 자동화는 컴퓨터나 정보 기기가 이해할 수 있는 언어로 해결 방법을 표현하는 것을 의미합니다.
최근 구글 (Google for Education)에서도 컴퓨팅 사고력의 구성 요소에 대해서 제시하고 있는데, 패턴 인식과 패턴 일반화라는 요소를 추가하여, 조금 더 구체적으로 기술하고 있습니다. 다음은 연구자별 컴퓨팅 사고력의 구성 요소입니다.
 
 
 
 

“컴퓨팅 사고력의 이해” 에 대한 3의 댓글

  1. 핑백: 학교에서 코딩을 가르치는 3가지 이유 – 지니코딩

  2. 핑백: 컴퓨터처럼 생각하기가 컴퓨팅적 사고? – 지니코딩

  3. 핑백: 왜 스마트 코딩이 필요한가! – 지니코딩

댓글 남기기