book.jayu.org
컴퓨팅 사고와 문제해결

컴퓨팅 사고와 문제해결

조성래, 이민정, 강은지, 이형수

(주)생능출판사·2016-08-26

  • 340쪽
  • 총류
  • KDC 004.07

로그인하면 내 서재에 추가할 수 있어요.

책 소개

머리말 컴퓨터 기술은 최근 반세기 동안에 비약적인 발전을 이루었다. 컴퓨터는 데스크톱 컴퓨터뿐만이 아니라 가정, 직장, 여행지 등 다양한 공간과 더불어 우리 주변에서 휴대폰, TV, 내비게이션, 자동차 등 다양한 형태로 사용되고 있다. 현대 사회에서 컴퓨터는 마치 공기와 같이 우리에게 저변에 깔려있는 문명의 이기이자 우리가 잘 사용해야 하는 필수 역량이라고 할 수 있다. 과거를 회고해보면 각 시대에는 필수 역량이 존재했던 것 같다. 원시 수렵사회에서는 사냥을 잘하는 것이 중요했을 것이다. 농경사회에서는 물 관리와 농사를 잘하는 게 중요했을 것이다. 또한, 산업사회에서는 공장에서 물건을 잘 제조해야 했을 것이다. 예를 들어 많은 공장들이 만들어지고, 공장에서는 생산성을 증대하기 위한 노력들이 기울여졌다. 공장 노동자조차도 정확한 옷감의 재단이나 재료의 무게 측정, 시간 등의 물리량에 관한 간단한 계산 등 ‘정량적 사고’가 필요하게 되었다. 이를 위해 학교에서는 수학, 과학 교과목을 필수로 가르치게 되었는데 이는 증기기관이 만들어낸 산업혁명이 교육을 바꾼 사례로 볼 수 있다. 그럼 지금 현재 우리가 살고 있는 디지털 사회에서 필요한 역량은 무엇일까? 산업사회가 되면서 수학과 과학이라는 과목이 독립 학문으로 등장할 정도로 중요해졌듯이 최근 전세계적으로 컴퓨팅 사고를 통하여 문제를 해결하는 능력이 중요하게 대두되었다. 디지털 사회를 포함한 앞으로의 미래 사회에서는 마치 말하기, 읽기, 쓰기와 같이 컴퓨팅 사고는 컴퓨터 과학자뿐만이 아니라 누구나 갖춰야 하는 기본적인 역량이다. 그렇다면 컴퓨팅 사고는 무엇인가? 컴퓨팅 사고는 컴퓨터가 아닌 인간의 사고방법이다. 컴퓨팅 사고는 인간이 문제를 해결하는 방법의 하나로 단순히 인간이 컴퓨터처럼 사고하는 것을 뜻하는 것이 아니다. 컴퓨터는 따분하고 지루한 계산을 인간보다 매우 빠르게 연산하는 반면 인간은 영리하며 상상력이 풍부하다. 우리는 컴퓨터에 인간의 영리함을 불어넣어 디지털 시대 이전에는 상상도 못한 문제를 해결하려고 하고 있으며 이를 구현하는 데 있어 우리를 가로막는 것은 상상력의 한계뿐이다. ‘어떻게 하면 더 빠르게 목적지에 갈 수 있을까?’, ‘어떻게 하면 물건을 더 싸게 구입할 수 있을까?’, ‘어떻게 하면 일을 더 빨리 할 수 있을까?’ 등은 삶의 질을 결정할 수 있는 일상생활과 관련된 중요한 문제이다. 이러한 문제를 컴퓨터과학에서는 다양한 문제 해결방법 혹은 알고리즘(Algorithm)을 이용하여 해결해왔다. 복잡한 컴퓨터과학의 문제뿐만 아니라 일상의 다양한 문제에 컴퓨터과학의 문제 해결 방식을 도입하자는 것이 컴퓨팅 사고고 이러한 사고를 통해 문제를 해결하자는 것이다. 이미 일상에서는 컴퓨팅적 문제 해결 방식을 도입하고 있다. 아이가 학교 갈 채비를 할 때 그 날 필요한 물건들을 가방 속에 미리 챙겨 넣을 것이다. 이처럼 곧 꺼내서 써야 할 자료나 정보를 미리 준비해 놓는 것을 컴퓨터 과학에서는 프리페칭(prefetching)과 캐싱(caching)이라고 한다. 아이가 장갑을 잃어버렸다. 아마도 아이에게 걸어온 길을 되짚어 보라고 할 것이다. 이와 같이 문제 해결을 위해 과정을 거꾸로 되짚는 것을 백트래킹(backtracking) 기술이라고 한다. 어느 시점에 스키 대여를 그만하고 스키를 구입하는 것이 이득일까? 이러한 비용에 대한 계산을 컴퓨터과학에서는 온라인 알고리즘이라고 한다. 마트의 계산대에서 어느 줄에 서는 것이 유리할까? 정해진 수의 계산대를 많은 사람들이 가장 효율적으로 통과하는 방법을 고민하는 것, 이와 유사하게 방대한 데이터를 효율적으로 받고 보내는 방법을 고민한 결과 나온 기술이 멀티 서버 시스템의 성능 모델링의 기술이다. 전기가 나갔는데 어떻게 전화기를 사용할 수 있을까? 이는 복제를 통한 장애 극복 기술이다. 컴퓨팅 사고는 모두를 위한 것이다. 컴퓨팅 사고가 인간 활동에 필수 요소가 되어 더 이상 특수한 철학으로 존재하지 않을 때 그것은 자연스러운 삶의 일부가 될 것이다. 이제 학문이 아닌 하나의 기본 역량이 되어 버린 컴퓨팅 사고를 좀 더 쉽게 이해할 수 없을까 하는 생각에서 이 책을 집필하게 되었다. 이 책은 컴퓨터과학도 및 일반 공학도뿐만 아니라 일반인과 학생들을 대상으로 컴퓨팅 사고의 개념을 이해하고 스크래치 컴퓨터 언어를 통하여 다양한 일상의 문제를 해결하는 능력을 배양하고자 집필되었다. 이 책은 크게 4부로 구성되어 있다. 1부는 주어진 문제를 체계적으로 해결하기 위해 컴퓨팅 사고를 기반으로 문제 분석, 솔루션 도출, 구현 등 문제 해결의 단계별 과정을 프로그래밍의 관점으로 설명한다. 2부에서 솔루션의 설계와 코딩을 익히기 위해 교육용 프로그래밍 도구인 스크래치 2.0의 활용법을 설명한다. 스크래치는 명령어 블록을 서로 끼워 맞추는 방식으로 프로그램의 절차를 명시하므로 문법적인 오류를 최소화하고 코딩 과정을 직관적으로 이해할 수 있어 문제 해결을 위한 솔루션, 즉 알고리즘의 구현에 집중할 수 있다. 3부에서 알고리즘을 기술하고 자동화하기 위해 기본적으로 필요한 프로그래밍의 요소인 데이터와 연산, 순차적 동작, 조건문과 반복문, 함수 등을 하나의 사례를 통해 구현해 간다. 문제 해결을 위해 컴퓨팅 사고를 전개하고 반영할 수 있는 기본적인 기법이므로 잘 이해해 두도록 하자. 4부는 일상적으로 생각해볼 수 있고 쉽게 접할 수 있는 미션을 선정하여 이를 문제의 분석, 설계, 솔루션(알고리즘) 도출, 코딩, 테스트 등 문제 해결 단계에 따라 직접 구현해 봄으로써 프로그래밍 과정을 자연스럽게 습득할 수 있게 준비하였다. 각 프로젝트는 미션을 해결하는 과정을 체계적으로 이해할 수 있도록 현재 진행 상태가 문제 해결 단계 중 어느 지점에 있는지 다음과 같이 표식을 하여 바로 확인할 수 있도록 구성하였으니 잘 활용하길 바란다. 따뜻한 햇살 속에 어느새 푸른 새순이 고개를 내밀고 있는 모습을 볼 때 끝나지 않을 것만 같았던 기나긴 겨울이 가고 새봄이 찾아오고 있다. 필자에게 이 책도 긴 겨울 방학 끝에 만나는 새순과도 같은 존재이다. 끝나지 않을 것 같던 긴 집필 시간을 지나 이제 세상 빛과 만나는 새순 같은 책이다. 아직 세상에 내놓긴 부족한 자식처럼 느껴지지만, 한걸음 내딛는 시작이라 생각하며 한 걸음 한 걸음 걸으며 성장해 갈 것이라 믿는다. 그리고 언젠가 이 새순이 독자들에게 한여름 뙤약볕에 시원한 그늘을 만들어주는 아름드리 한 그루 나무로 성장하여 다양한 융·복합적인 난제들을 컴퓨팅 사고를 통하여 해결하길 기대하며 미약한 글을 마치려고 한다. 마지막으로 집필에 도움을 준 중앙대학교 김영민, 이지형, 박래혁, 임현기, 나웅수 교수님께 감사의 마음을 전한다. 끝으로 많은 관심과 사랑을 보여준 모든 분들과 생능출판사 관계자 분들의 노고에도 감사를 전한다. 2016년 봄에 조성래, 이민정, 강은지, 이형수

리뷰 남기기

로그인하면 리뷰를 남길 수 있어요.

리뷰 0개

아직 리뷰가 없어요.