컴퓨팅 사고력 기르기 (기초 편)

일반인도 이해할 수 있는 쉬운 컴퓨팅 사고력 기르기

컴퓨팅 사고력이란?

우리는 일상에서 쉽게 컴퓨팅적 사고를 접할 수 있다.

당신의 아이가 학교 갈 채비를 할 때
그 날 필요한 물건들을 가방 안에 챙겨 넣을 것이다.
이처럼 곧 꺼내서 써야 할 자료나 정보를 미리 준비해 놓는 것을
컴퓨터 과학에서는 프리페칭 (prefetching)과 캐싱(caching) 이라고 한다.

아이가 장갑을 잃어버렸다.
아마도 당신은 아이에게 걸어온 길을 되짚어 보라고 할 것이다.
이와 같이 문제해결을 위해 과정을 거꾸로 되짚는 것을
백트래킹 (backtracking) 기술이라고 한다.
어느 시점에 스키 대여를 그만하고 스키를 구입하는 것이 이득일까?
이러한 비용에 대한 계산을 온라인 알고리즘이라고 한다.

슈퍼 계산대 앞에 온 당신, 어느 줄에 서는 게 유리할까?
정해진 수의 계산대를 많은 사람들이 가장 효율적으로 통과하는 방법을 고민하는 것,
이와 유사하게 방대한 데이터를 효율적으로 받고 보내는 방법을
고민한 결과 나온 기술이 멀티 서버 시스템의 성능 모델링의 기술이다.

'컴퓨팅 사고' 라는 용어는 1980년 MIT의 시모어 페퍼트 (Seymour Papert) 교수에 의해 처음 사용되었으며, 2006년 카네기 멜런 대학교 (Carnegie Mellon University)의 지넷 윙(Jeannette Wing) 교수의 「Computational Thinking」 / 「컴퓨팅적 사고 (번역본)」라는 짧은 칼럼으로 인해 유명해지게 되었다.

출처 - 컴퓨팅사고력을 키워야 하는 이유

이러한 컴퓨팅 사고는 프로그래밍에만 적용되는 것이 아니고 산업과 실생활의 모든 분야에서의 문제 해결에 적용될 수 있을 만큼 실용적입니다. 예를 들어 잃어버린 열쇠를 찾는 경우를 가정해 보겠습니다.

무작정 찾아본다

vs

열쇠가 방에 없다면, 차 안을 찾아본다.
차 안에도 없다면, 코트 주머니 속을 찾아본다.
어느 곳에서도 찾지 못했다면 열쇠를 새로 만든다.

후자의 경우 컴퓨팅 사고 능력을 잘 활용했다고 볼 수 있으며, 컴퓨터 프로그래밍 언어의 “If, elif, else”와 유사한 구조가 나타나는 것을 알 수 있습니다.  이는 실생활 뿐만 아니라 복잡한 산업계의 여러 문제들에도 응용할 수 있으며 새로운 창의적 사고의 방법으로 매우 주목받고 있습니다.

출처 - 프로그래밍을 공부해야 하는 이유, 컴퓨팅 사고 (Computational Thinking)

컴퓨팅 사고력이란 컴퓨팅의 기본적인 개념과 원리를 기반으로 문제를 효율적으로 해결할 수 있는 사고 능력을 말한다. 컴퓨팅 사고력은 다음과 같은 구성 요소로 이루어진다.

  • 문제를 컴퓨터로 해결할 수 있는 형태로 구조화하기
  • 자료를 분석하고 논리적으로 조직하기
  • 모델링이나 시뮬레이션 등의 추상화를 통해 자료를 표현하기
  • 알고리즘적 사고를 통하여 해결 방법을 자동화하기
  • 효율적인 해결 방법을 수행하고 검증하기
  • 문제해결 과정을 다른 문제에 적용하고 일반화하기

출처 - 컴퓨팅 사고력이란?(개념, 구성요소) 신박에듀

컴퓨팅 사고력 구성요소

출처 - 컴퓨팅 사고력의 이해

쉽게 이해하는 컴퓨팅 사고력

EBS Kids 다해봄채널

순차

순차

  • 순서대로, 차례대로
  • 프로그램 : 컴퓨터를 실행시키기 위해 차례대로 작성된 명령어 모음
  • 왜 컴퓨터에게는 순서대로 차례대로 명령해야할까?
  • 꼭 먼저 해야만 하고 반드시 나중에 해야 하는 순서가 있다
  • 우리가 컴퓨터에게 명령할 때 순서대로, 차례대로 해야 하는 건 순서를 바꾸면 결과가 달라지기 때문
  • 컴퓨팅 사고력을 기르려면 어떤 순서대로, 어떤 차례대로 해야 더 좋을지 생각해보는 게 중요함

알고리즘

알고리즘

  • 문제를 해결하기 위한 방법, 규칙, 명령 등을 순서대로 나타낸 것
  • 순차 : 순서대로, 차례대로 (순차로 정리한 알고리즘)
  • 각 단계별로 해야 할 일을 명확하게 나타내고 있음
  • 구체적이고 명확하게 => 똑같은 결과

추상화

추상화

  • 핵심요소만 뽑아내는 것
  • 길고 복잡한 설명이 없이도 간단하고 쉽게 이해하고, 한눈에 알 수 있게 하는 것
  • 핵심 : 간단하고 쉽게 만든 것

문제분해

문제분해

  • 문제를 더 작고, 다루기 쉬운 부분으로 나눠서 각각의 작은 문제들을 해결하는 것
  • 복잡한 문제를 분해하다보면 해결할 문제를 찾을 수 있다
  • 문제분해가 컴퓨터 사고력에 필요한 이유는? 컴퓨터에게는 구체적 명령이 필요함
    (왜냐하면 컴퓨터는 혼자서 생각하거나 일을 할 수 없기 때문)
  • 문제 분해를 통해 해결 방법과 일을 처리하는 순서들을 찾아낼 수 있다

컴퓨터의 1과 0

컴퓨터의 1과 0

  • 컴퓨터는 데이터 신호를 1과 0으로 처리한다

패턴 인식

패턴인식

조건

조건

  • 컴퓨터에게는 조건을 줘야한다 (~하고 싶다면)
  • 건널목에서 신호등이 초록불이면 건너간다, 초록불이 아니면 건너가지 않는다
  • 조건문을 잘 사용하면 효율적인 명령이 가능하다

구체적 명령

구체적 명령

  • 컴퓨터에게 언제나 필요한 건 구체적 명령
  • 그냥 명령과 구체적 명령의 차이 (동작을 나눠서 구체적으로)

유튜브 알고리즘으로 보게 된 영상인데 생각보다 단순 명료하고 재밌어서 컴퓨팅 사고력으로 포스팅. 보다보니 든 생각은 개발자는 안된다고 하는 사람이 아니라 안되는 절차와 이유를 아는 사람들..? (역으로 생각하면 되는 절차와 이유를 주면 되지 않을까?)

profile
필요한 내용을 공부하고 저장합니다.

0개의 댓글