Cognita Sapiens [847641] · MS 2018 · 쪽지

2024-07-28 15:47:50
조회수 4,100

컴퓨팅 사고력2 (computational thinking)!

게시글 주소: https://tcgjztg.orbi.kr/00068829690





 제가 부산대를 잠깐 다니면서 '컴퓨팅 사고력'을 통해 얻은 것이 정말 많았습니다. 마치 99도에서 끓지 않던 물을 1도를 더 높여서 액체 상태의 물을 끓어오르게 만든 분기점이랄까요? 그동안 재수를 하면서 깨달은 것들을 컴퓨팅 사고력 수업을 통해서 상당부분 재정비하고, 컴퓨팅 사고력의 문법과 논리를 통해서 제가 깨달은 바를 남들에게 객관적이고 알기 쉽게 설명할 수 있었습니다.




 

저처럼 코딩이나 컴퓨터과학을 공부하지 않는 학과로 가더라도, 최소한 기초 프로그래밍과 컴퓨팅 사고력, 소프트웨어적 사고와 같은 기초적인 컴퓨터 과목을 꼭 한번은 들어보시길 추천합니다

https://hicomputing.org/class/59797




 코딩을 시작할 때 가장 기본적인 시작은 바로


 '변수를 설정한다' 입니다.





 이게 무슨 말이냐면, 만약 컴퓨터에게 다짜고짜 '12'라는 숫자를 부여하면 컴퓨터는 무슨 말인지 이해를 하질 못합니다. 뭐지? 숫자 12인가? 아니면 12라는 형태의 문자인가? 12번째라는 의미인가? 등등




 쉽게 예를 들어서, 제가 갑자기 여러분에게 "점심!"이라고 말을 해봤다고 상상해봅시다. 여러분은 별에 별 생각이 다 떠오를 것입니다. 같이 점심을 먹자는 소리인가? 오늘 점심을 뭘 먹었는지 묻는건가? 이제 점심시간이라고 하는 통보인가? 등등




 그나마 인간이 이런 질문을 받았더라면, 맥락과 상황을 고려해서 유추를 시도할 것입니다. 아직 점심 시간 전이니까 어떤 음식을 먹을 지 묻는 것이구나! 점심시간이 지난 상태이니까 뭘 먹었는지 묻는 거구나! 이제 점심 시간이니까, 같이 점심 먹자는 소리구나! 근데 컴퓨터에게는 그런 능력이 없습니다. 때문에 구체적으로 아주 세세하게 조건과 의미를 설명을 해줘야 합니다.




 컴퓨터한테 '변수 a를 설정한다'라고 선언한다면, 이때부터 컴퓨터에게는 'a'라는 이름의 '상자'가 생기게 되는 것입니다. 이제 여러분은 이 상자에 어떤 것을 넣을 수 있게 됩니다. 












 제가 수학 공부를 하고 1등급을 맞게 되면서, 굉장히 중요한 테크닉을 하나 익히게 된 것이 있습니다. 마치 컴퓨터에서 변수를 선언하듯이, 수학 29번 30번 문제처럼 어렵고 복잡한 문제를 풀 때는 '임의의 함수를 설정한다' 라는 방법이 매우 유용하게 쓰였습니다.




 어려운 수학 문제들의 특징은, 한방에 쉽게 풀리지 않는다는 것입니다. 여러가지 사고력과 방법을 동원하여 풀어야 합니다. 그런데 예를 들어 봅시다.




 문제를 풀다보니, x^3 + x^2 + 5x + 9 라는 식이 나왔다고 생각해봅시다. 여러분은 이후에도 풀이를 적을 때 매번 이 길쭉한 식을 계속 반복해서 쓸 생각이 있을까요? 아닙니다. 이렇게 반복하다 보면 실수로 9를 3으로 적을 수도 있고, 매번 긴 식을 반복해서 적어야 하다보니 시간도 오래 걸리고 풀이도 난잡해질 가능성이 높아집니다.




 이때, 비록 문제가 직접적으로 함수라고 제시해주지는 않았지만, 문제를 수동적으로 받아들이는 한계를 뛰어넘어, 이제는 주도적으로 새로운 함수를 설정할 줄을 알아야 합니다. 그래서 이렇게 두는 것입니다.




 g(x) = x^3 + x^2 + 5x + 9 라고 약속하자~ 한 다음에, 앞으로 문제를 풀 때 식을 그대로 쓰지 않고 이 g(x)를 쓰는 것입니다.




 마치 컴퓨터에서 'a'라는 이름의 상자를 약속했듯이, 어렵고 복잡하고 단계가 많이 요구되는 수학 문제를 풀 때 뭔가 식을 구했다면, 이것을 새로운 함수로 스스로 약속하고 이것을 통해 쉽게 식을 미분하거나 적분하는 적극성과 주도성이 필요합니다. 제가 여러가지 수학적 테크닉을 익혔는데, 이 테크닉은 생각보다 쉽게 습관화 되지 않았었습니다. 근데 이 테크닉을 활용해서, 이 임의의 함수를 정의하고, 이 새로운 함수의 그래프를 그리고 정의역을 집어넣는 방법을 통해 관찰을 해보니, 그제서야 가장 어려운 30번 문제도 쉽게 풀 수 있었습니다.






어려운 수학 문제에서는, 함수를 간단하게 주는 것이 아니라 이런 식으로 새롭게 주는 경우도 많습니다. 이때 우리는 이 함수를 해석해야 하며, 정의역을 일일이 집어넣으면서 어떤 개형을 그리게 되는지 관찰을 해야하는 경우가 많이 있습니다

https://samtoring.com/r/unit/UNT0001654












 그 다음 소재로 '알고리즘의 통합'에 대해서 이야기 해보겠습니다.




 한번 예시를 들어볼께요. 여러분이 여러 가축을 발골하는 전문가입니다. 그럼 도구가 많이 필요하겠죠? 닭 잡는데 쓰는 칼, 소 잡는데 쓰는 칼, 돼지 잡는데 쓰는 칼 등등. 여러가지 연장을 가지고 다닐 것입니다.




 이때 기본적으로 닭을 잡을 때는 닭 잡는 칼로 열심히 연습을 해보아야 한다는 것입니다. 그래야지 숙련도가 올라갑니다. 예컨데 수학이나 영어 문제에서 닭을 제시했는데, 엉뚱하게 읽고 해석해서 소 잡는 칼을 꺼내들면 안됩니다. 그럼 실수가 생길 확률이 높아질 뿐만 아니라 풀이가 괴상망측해집니다.




 때문에 저는 항상 4~5등급을 왔다갔다하던 수학문제를 풀 때, 각 유형별로 적절한 풀이 방법, 즉 각 상황에 맞는 연장을 고르고 그 연장으로 푸는 연습을 열심히 했습니다. 다항함수가 나왔을 때는 기본적으로 이런 방식으로, 초월함수가 나왔을 때는 저런 방식으로 등등.









 그런데 여기서 재미있는 거 알려드릴게요. 전 여태 영어는 1등급을 놓쳐본 적이 없을 정도로 천성적으로 어릴 때부터 영어를 매우 잘했습니다. 그런데요, 전 한번은 공부를 하다가 깜짝 놀란 적이 있습니다. 바로 대부분의 영어를 잘 못하는 학생들은 '유형'을 다 따로 분리해서 풀고 있었다는 점입니다.




 엥? 예전부터는 유형별로 나눠서 연습을 하는 것을 중요하게 보았다더니, 왜 이번에는 영어는 유형을 나누지 않는 것을 정상으로 보나요? 라고 할 수 있습니다. 그런데 여기서 중요한 차이가 있습니다. 전 영어를 정말 잘했기에 유형을 나누지 않았었고, 수학은 정말 못했었기에 수학은 유형을 세세하게 나누고 공부했다는 점입니다.




 제 입장에서는 영어는 빈칸이 나오든~ 이상한 문장 하나 찝는 것이 나오든~ 어떤 유형이 나오더라도 신조는 동일했습니다. 그냥 읽고 풀자! 읽다가 이상한 거 있으면 그걸 빼자! 전반적인 내용을 숙지해서 핵심 내용을 잘 파악하자! 지엽적인 한 문장에 홀려서 이상한 것을 주제로 판단하지 말자!




 그런데 영어를 잘 못하는 친구들은, 빈칸 문제가 나왔을 때는 이것, 추론 문제가 나왔을 때는 저것, 어색한 문장 고르는 경우에는 저런 것 등등으로 세세하게 나누는 것을 보고 약간 충격을 받았습니다. 아니 그냥 다 읽고 풀면 되는 것 아냐? 라고요.




 여기서 한 가지 깨달음을 얻었습니다. 즉, 다양한 연장으로 각 유형에 익숙해지되, 결국에는 그 연장들의 종류를 줄여야 한다는 것입니다.







여러분 맥가이버 칼 아나요? 이런 조그만한 주머니 칼에 온갖 연장이 다 들어 있어서, 단지 연장 하나로도 많은 상황을 풀어나갈 수 있습니다

https://knifemall.co.kr/category/%EB%A7%A5%EA%B0%80%EC%9D%B4%EB%B2%84%EC%B9%BC-pocket-knife/736/





 과거의 저를 포함해서 여러분은 무조건 유형을 세세하게 나누고, 다양한 연장을 구비하는 것이 무조건 공부라고 생각합니다. 근데 틀렸습니다. 만약 연장의 가짓수가 너무나도 많다면, 실수를 할 확률이 높아집니다.




 어떤 영어 문제를 보았습니다. 일단 빈칸 추론 문제입니다. 그럼 여러분은 정말 많은 연장 중에서, 해당 유형에 맞는 연장을 찾아내야 합니다. 근데 너무 많은 연장이 섞여 있으면, 찾는 데에 시간이 많이 걸릴 뿐만 아니라 찾아낸 연장이 잘못된 연장일 수도 있습니다. 심지어 깜빡하고 집에 두고 왔을 수도 있습니다.




 앞서 가축을 잡는 장인에 대해서 이야기를 했죠. 이 사람은 이제 충분히 숙련도가 높아져서, 이제 연장이 별로 많이 필요가 없게 됩니다. 닭 잡는 칼 따로, 소 잡는 칼 따로, 돼지 잡는 칼 따로따로 구비를 해왔었는데, 이제는 연장을 딱 한 개만 들고 다닙니다. 이 연장 하나로 소도 잡고 돼지도 잡고 닭도 잡는다면, 그 사람은 대단한 사람인 것입니다. 연장을 딱 하나만 들고 다니니 깜빡할 필요도 없고, 맞는 연장을 찾느라고 주머니를 헤집을 필요도 없고, 또 몸무게가 가벼워집니다.




 여러분은 지나치게 많은 유형을 세세하게 나누면서 스스로 머리의 무게를 지나치게 늘리는 것입니다. 각 유형 별로 맞는 도구를 찾는 연습과, 그 도구로 해당 유형을 푸는 연습을 많이 하여 숙련도가 높아졌으면, 이제는 오히려 도구를 줄이고 통합하는 일을 해야 합니다. 그러니까 일종의 최적화를 해야 한다는 것이죠.




 수능 시험의 시간 제한은 결코 넉넉하게 주어지지 않습니다. 만약 수능 국어나 수학 문제 푸는데 한 3시간씩 주어졌다면, 제가 <수국비>를 쓸 필요도 없었을 것입니다. 그냥 이해가 될때까지 읽고, 일일이 선지의 내용을 다 확인하면서 풀면 되니까요. 그러나 제한된 시간 내에 정확하게 주제나 핵심 내용을 파악, 이해하고 그것을 통해 선지를 선택적으로 먼저 바라보는 전략적인 행동을 제한시간이 강요하는 것입니다.









 그래서 저는 스스로 못 하는 과목과, 잘 하는 과목의 차이에 비교하면서도 공부를 했습니다. 아~ 내가 영어를 잘 하는데, 영어는 굉장히 단순한 원칙을 가지고, 그냥 연장 딱 한 개만 들고 다니면서 그걸로 빈칸추론이든 제목추론이든 다 풀어제끼는구나~ 반면 못하는 수학은, 애초에 각 상황에 맞는 연장을 찾지도 못하고, 그 연장으로 제대로 연습을 못하는구나~




 제가 아주 좋아하는 예시가 바로 '약수 개수 구하기 알고리즘' 입니다. 문이과 상관 없이 다들 중학교때 배웠으면서도, 잘못된 풀이법, 즉 약수 개수 구하는 알고리즘을 활용하지 않고 작은 수의 경우 그냥 일일이 약수를 다 세는 방법으로 푸는 오류를 다들 저질러보았을 것입니다.





약수 개수 구하기 공식은 제가 생각하기에 중학교 수학 중에서도 대표적인 '알고리즘'이라는 개념을 익힐 수 있는, 모두가 경험해본 사례이면서 동시에 적절한 난이도를 가진 좋은 예시입니다

https://dldydtjr2.tistory.com/12




 만약 여러분이 약수 개수 구하는 문제를 충분히 많이 익혀서, 숙련도가 올라갔다면, 이후로는 이런 문제를 만날 때마다 굳이 어떻게 약수 개수를 구했는지를 떠올릴 필요가 없을 것입니다. 그러니까 머리가 아닌 몸에 체화가 되서, 이제는 약수 개수 라는 말만 튀어나와도 바로 이렇게 인수분해를 하고 있을 것입니다. 머리가 가벼워지고 최적화된 것입니다!









 마지막으로, 컴퓨터에 저장과 인출, 그러니까 인풋과 아웃풋에 대해서 설명해보겠습니다.




 컴퓨터의 성능은 단순히 저장 속도로만 결정되는 것이 아닙니다. 파일을 찾고 읽어내는 속도도 매우매우 중요합니다. 그러나 많은 학생들이 무조건 많이 저장하고, 머리를 무겁게 하는 것이 공부라고 생각하는 것 같습니다. 때문에 머리에 정리되지 않고, 어떤 상황이 주어졌을 때 그 많은 정보를 일일이 찾아내느라고 시간을 오래 소모하는 것 같습니다.




 여러분이 어떤 것을 공부하고 새로운 정보를 저장할 때, 효과적인 정렬 기준, 최적화를 고려하지 않는다면 일단 저장 자체는 굉장히 쉬울 것입니다.




이렇게 머리 속이 개판이 되어버리는 것입니다

https://www.seoul.co.kr/news/international/2021/12/08/20211208500179






 위 그림처럼, 뭔가 새로운 것을 습득하고 그냥 머리 속으로 던져버리면, 나중에 그 정보를 찾을 때 굉장히 어려움을 겪을 것입니다. 최악의 경우 제한시간까지 찾아내질 못하는 불상사도 생길 것입니다. 때문에 컴퓨터는 일련의 효과적이고 최적화된 저장 방법을 같이 써야 합니다.




 컴퓨터에 영화를 다운받는 속도는 무지하게 빠른데, 그걸 읽어내는 속도가 무지하게 느려서 영화를 틀었는데 버퍼링이 계속 걸리면 여러분도 짜증이 나겠죠. 아마 여러분을 가르치는 선생님이나 저도 엄청나게 짜증이 날 것입니다 위의 그림처럼 공부를 하는 학생이라면.




 그런데 여러분이 공부를 함에 있어서, 자료의 정리정돈, 정렬에도 신경을 쓴다면 나중에 문제를 풀 때도 굉장히 빠르고 정확하게 풀어낼 수 있을 것입니다. 마치 도서관에 엄청난 양의 책이 있지만, 그것이 고유한 인덱스들을 바탕으로 정리가 매우 잘 되어있다면, 큰 어려움 없이 해당 도서를 찾아내서 읽을 수 있는 것처럼요.




 많은 학생들은 무조건 머리에 저장을 많이 하는 것을 공부라고 생각하는 경향이 있습니다. 그러니까 공부한 것에 비해서 성적이 나오질 않는다고 매일 한탄하는 것입니다. 단순히 선생님이 가르쳐준 내용을 외우는 것 뿐만 아니라, 실제 상황과 비슷하게 문제를 빠르게 풀어내는 연습도 필요합니다. 저도 알아요 이게 참 고통스럽다는 것을. 그런데 고통 없이는 뇌의 시냅스가 제대로 형성되질 않습니다.







도서관에는 정말 수없이 많은 자료가 구비되어 있습니다. 이를 효과적으로 분류하고 정리하는 것 또한 중요한 업무입니다. 이렇게 최적화된 구조 덕분에 우리는 모든 책을 다 헤집어 가면서 일일이 찾아내질 않아도 되는 것입니다

https://www.iusm.co.kr/news/articleView.html?idxno=451759






 그러니까 쉽게 말하자면 수동적으로만 공부하지 말라는 것입니다. 능동적으로 여러분 머리 속에 있을 책을 빠르고 정확하게 꺼내는 연습을 해야한다는 것입니다. 대표적으로 모의고사를 빠르게 풀어내거나, 제한 시간을 정해두고 타이머를 통해 확인을 하면서 푸는 연습도 하는 것을 들 수가 있겠습니다.




 여러분이 대학에 들어와서 고등 교육을 받게 된다면, 타임어택보다는 깊은 사고력을 많은 시간을 동원해서 끌어내는 연습을 하게 될 것입니다. 그런데 아직 여러분은 중등 교육을 받고 있으며, 모든 시험은 타임어택이 기본적으로 깔려 있습니다. 그러기에 더더욱 여러분은 컴퓨터와 비슷한 사고방식을 요구받는 것입니다.




 제가 요새 계속 컴퓨터 과학을 공부하는데, 점점 공부를 하면 할수록 이런 내용들이 상기되고 중요하다고 느끼게 됩니다. 최적의 경로를 찾는다던지, 효과적으로 분류하는 방법을 구현한다던지, 많은 자료 중에서 어떤 식으로 접근하여 최대한 빨리 내가 원하는 숫자를 찾아야 하는지 등 효율성과 정확성에 관련된 내용을 많이 배우고 복습하게 됩니다.




 요새는 초등학생부터 SW 교육이 활발하게 한다고 하더라고요. 여러분에게 큰 기회라고 생각합니다. 저도 만약에 고등학교 이전까지 이러한 컴퓨팅 사고력을 배웠었다면 더 빨리 성적이 오르지 않았을까 하는 아쉬움이 있습니다.




 





<수국비 상>

https://docs.orbi.kr/docs/7325/


 


 <수국비 하>

https://docs.orbi.kr/docs/7327/









알고리즘 학습법 


https://orbi.kr/00019632421 - 1편 점검하기

https://orbi.kr/00054952399 - 2편 유형별 학습

https://orbi.kr/00055044113 - 3편 시간차 훈련

https://orbi.kr/00055113906 - 4편 요약과 마무리






사고력이란 무엇인가



https://orbi.kr/00056551816 - 1편 바둑과 수싸움

https://orbi.kr/00056735841 - 2편 예절

https://orbi.kr/00056781109 - 3편 자유로운 직업세계

https://orbi.kr/00056882015 - 4편 따라하기

https://orbi.kr/00057164650 - 5편 어린 놈들이 약아서

https://orbi.kr/00057384472 - 6편 자기 스스로를 알아차리기

https://orbi.kr/00057614203 - 7편 체력분배

https://orbi.kr/00057650663 - 8편 수학적 상상력

https://orbi.kr/00057786940 - 9편 편견깨기

https://orbi.kr/00058147642 - 10편 시냅스, 알고리즘의 강화

https://orbi.kr/00060975821 - 11편 자문자답

https://orbi.kr/00061702648 - 12편 '박영진 이혼전문변호사'를 통해 재밌게 알아보는 법률 이야기

https://orbi.kr/00062050418 - 13편 수능 국어 공부

https://orbi.kr/00062206444 - 14편 현우진이 말하는 독해력과 사고력

https://orbi.kr/00062298282 - 15편 교수 면담

https://orbi.kr/00062328444 - 16편 관세법과 일관성

https://orbi.kr/00062406700 - 17편 말하기 공부법

https://orbi.kr/00062419084 - 18편 공부 못하면서 허세 좀 부리지 마십시오

https://orbi.kr/00062495541 - 19편 법조인에게도 필요한 수능 국어 비문학 독해력!

https://orbi.kr/00062583015 - 20편 - 전쟁에도 유형이 있다

https://orbi.kr/00062643940 - 21편 국어, 수학, 과탐 공부 이렇게 해보십시오

https://orbi.kr/00062818762 - 22편 똑똑하고 재능이 있다는 것은 노력할 수 있다는 것일까요?

https://orbi.kr/00063239512 - 23편 어려운 문제도 잘게 쪼개면 풀 수 있다!

https://orbi.kr/00064157242 - 24편 리터러시(문해력, 독해력)이란 무엇인가

https://orbi.kr/00064692514 - 25편 단순히 많은 학습 시간은 배신을 할 수 있다!

https://orbi.kr/00064934387 - 26편 대한민국은 강대국이 될 자격이 없다

https://orbi.kr/00065089413 - 27편 본질 feat. 반추 동물의 생존

https://orbi.kr/00067574982 - 28편 추론이란 무엇인가

https://orbi.kr/00067699093 - 29편 천재에게 과외 받지 마십시오

https://orbi.kr/00067722206 - 30편 중요한 것으로 마음을 가득 채우세요

https://orbi.kr/00067987848 - 31편 국어와 영어를 잘하는 법 - 중요한 것에 밑줄치고 집중하라!

https://orbi.kr/00068049459 - 32편 수동적으로 넣기만 하지 말고, 능동적으로 꺼내는 연습도 해야합니다

https://orbi.kr/00068083401 - 33편 이 세상은 '언어'로 이루어져 있지 않을까?

https://orbi.kr/00068269691 - 34편 최고를 경험하라!

https://orbi.kr/00068742477 - 35편 컴퓨팅 사고력(computational thinking)!

36편 컴퓨팅 사고력2 (computational thinking)!


rare-세종대왕

0 XDK (+0)

  1. 유익한 글을 읽었다면 작성자에게 XDK를 선물하세요.


  • 첫번째 댓글의 주인공이 되어보세요.