잡담&계획

코딩, 그리고 컴퓨팅 사고.

NONE_31D 2019. 9. 10. 04:11

  컴퓨터 알고리즘이라는 강의를 듣던 중, 교수님의 '미래를 바꾸는 3가지 사고방식, 3CT' 라는 제목의 강연을 들을 기회가 있었다. 비판적 사고(Critical Thinking), 창의적 사고(Creative Thinking), 컴퓨팅 사고(Computational Thinking)을 설명해주셨는데 그 중에서도 최근에 제일 이슈가 되고 있는 컴퓨팅 사고에 관해서 강연을 진행하셨다. 컴퓨터 사고라는 용어의 등장과 그 필요성에 대해 설명을 들으면서, 이 글을 써야겠다는 마음이 생겼다.

 

컴퓨팅 사고는 프로그래머들이 프로그램을 만들 때 컴퓨터로 문제를 풀기 위해 생각하는 것을 의미한다. 이는 왜 갑자기 모두에게 필요한 소양이 되었을까?  컴퓨터가 해결할 수 있을 정도로 어떤 문제를 간소화시키고, 추상화시키고 그 해결 방안을 객체화시켜 활용할 수 있게 하는 방식들이 실생활에 적용했을 때도 충분한 효율성을 가져올 수 있기 때문 아닐까.

 

하여튼, 이렇게 대학, 기업 할 것 없이 컴퓨팅적 사고를 외치는 사회가 왔고 대한민국에는 이를 아이들에게 가르치기 위해 갑자기 코딩 교육 열풍이 불었다. 중고등학교에서도 교과 과정으로 정보가 들어가면서 쉽게는 스크래치, 엔트리와 같은 블록 코딩을 어렵게는 아예 C를 배우는 경우가 늘었고, 심할 경우 초등학생들도 학원에 다니면서까지 코딩을 배우는 모습이 적잖이 보이기 시작했다.

 

그런데 여기서 궁금한 것은, 코딩은 정말 컴퓨팅 사고를 배우게 해 주는 것인가?

 

잠시 주제를 바꿔 중학교, 고등학교 정보 시간의 교실을 생각해보자. 내가 겪었던 정보 시간은 학습자 입장에서 그렇게 즐거운 시간은 아니었다고 기억한다. 선생님은 앞에서 따라 해보라며 예시 코드를 보여주고 있고 학생들은 뒤에서 나란히 배열된 컴퓨터를 앞에 두고 앉아 있다. 적지 않은 학생이 코드를 따라 하는 행위 자체에 대해 이해하지 못하고 수업을 따라가는 것을 포기한 채 다른 공부를 하거나 딴짓을 하게 된다. 그럼 이 교실에서, 얼마나 많은 학생이 이 수업에 집중하고 있을까? 몇 명의 학생이나 이 수업의 의의에 대해 알고 얻어가는 것이 있을까. 이런 모습이, 단지 내가 있었던 교실에서만 일어났던 것은 아닐 것이다. 이게 비전공자들에게 컴퓨팅 사고를 배울 수 있게 하는 방법이 맞는걸까?

 

컴퓨터 공학, 혹은 그와 비슷한 전공자들은 컴퓨팅 사고를 어떻게 배우는 걸까. 앞에 언급했던 교수님은 알고리즘 수업을 통해 컴퓨팅 사고를 배울 수 있다고 말해주셨다. 알고리즘은 어떤 문제를 해결할 수 있는 방법을 의미하는데, 여기서 우리는 좋은 알고리즘을 생각해볼 수 있다. 좋은 알고리즘이란 것은 효율성이 좋다는 것도 포함하는데, 여기서 효율적인 알고리즘을 위해서는 1. 한정된 자원의 최소한 사용, 2. 최단 처리 시간을 주로 생각한다. 그래서 알고리즘을 배우게 된다면 문제를 분석하는 방법을 배우게 된다. 문제를 분석하면서 이 문제를 하나의 복잡한 덩어리가 아닌 간단한 여러 덩어리로 나누기도 하고, 문제를 추상화시키기도 하면서 그에 맞는 해결 방법을 찾을 수 있게 되기 때문이다. 이 과정에서 앞에 언급했던 효율성을 따질 수 있게 되는데, 복잡한 문제를 푸는 것보다는 간단한 문제 여러 개를 푸는 것이 훨씬 빠르니까. 

 

여기까지 알고리즘에 대한 설명을 듣는다면, 이게 전적으로 코딩에 종속된 부분으로 보이지는 않을 것이다. 문제 해결 방법, 즉 어떤 문제에 대한 알고리즘을 구하는 방법을 생각하기 위해서 컴퓨팅 사고를 하게 되는 것이고, 지속적인 학습을 통해 컴퓨팅 사고를 키울 수 있는 건데 이 부분은 많은 사람의 생각과는 달리 코딩만 한다고 해서 배울 수 있는 게 아니지 않을까. 오히려 코딩을 접하지 못한 비전공자들에게는 직접 접해볼 수 있는 문제를 들고 와 분석하여 분해, 추상화해보고 효율적인 해답을 찾는 경험이 컴퓨팅 사고를 키울 수 있는 좋은 방식이라고 생각한다. 코딩은 어디까지나 이 해결법을 찾는 데 사용하는 도구일 뿐이지, 해결법을 찾는 방법이 아니기 때문이다.

 

 

 

c.f.

이런 글을 정말 처음으로 쓰게 되어 문장 전달력이라든지, 전체적인 흐름에서 매우 어색할 것으로 보입니다.

4차 산업혁명이라는 키워드가 사회에 등장하면서 제가 다니던 학원가에 '코딩'이라는 단어가 하나둘씩 늘어가는 것을 보면서 들었던 생각을 몇 년 만에 정리하게 되었네요.

마지막에 글을 끝맺기가 애매해서 생략한 부분이지만, 컴공에서도 알고리즘을 배울 때는 언어를 어느 정도 배운 상태로 진행하게 됩니다. 문제의 해결법을 구현하기 위해 코드를 짜는 것이지, 문제를 풀기 위해 코드를 짜는 것이 아니라는 것을, 이 차이점을 많은 분이 아셨으면 좋겠네요.

이 외에도 비전공자에게 코딩을 가르치는 부분에 대해서도 생각한 게 있는데 이 글에 그 내용을 쓰기에는 산으로 가는 것이 아닐까 싶어 생략하게 되었습니다. 나중에 이 건에 관해서도 쓸 기회가 있었으면 좋겠네요.

끝까지 읽어주셔서 감사합니다:)