티스토리 뷰

프로그래밍 비타민

책의 제목에 작은 글씨로 컴퓨터의 사고력을 키우는 22가지 이야기라고 되어 있다. 이 책의 성격을 잘 규정한 말이 아닌가 여겨진다. 프르그램이란 컴퓨터에 의해 실행되는 명령어의 집합을 말한다. 즉 컴퓨터가 작동할 수 있도록 만드는 모든 명령어들을 종합하여 말하는 것이다. 그러기에 컴퓨터 언어들을 조각하여 명령어를 만들고, 그것이 하나의 프로그램이 된다. 이렇게 프로그램을 만드는 일을 프로그래밍이라 한다. 이 책은 프로그래밍을 할 수 있게 만들어 주는 책이다. 그것을 잘 할 수 있도록 여러 가지 방법을 제시해 나가고, 지식을 쌓게 한다. 책은 10대를 위한 프로그래밍 노트라 칭하고 있다. 그처럼 프로그래밍을 기초부터 시작하여 숙달되게 만들어 주는 지식들로 가득하다. 이미 아날로그의 지식에 승선한 지 모랜 나에겐 솔직하게 잘 습득이 되지 않는 지식이지만, 조금이라도 가까이 다가가기 위해 읽으면서 궁구해 보아야 할 듯하다. 데이터에 관해서 알게 하고 있다. 이것을 프로그래밍에서는 상수라 한다. 이것은 이미 정해져 있으면서 변하지 않는 값이다. 이것에 비해 작업하는 사람이 어떤 값을 넣느냐에 따라 달라지는 수를 변수라 한다. 프르그래밍에서 이 데이터는 중요한 바탕이 된다. 고정되는 것과 변화하는 것이 수식에 의해 정리되어 있는 것이 소프트웨어라 생각하면 될 듯하다. 우리는 이 소프트웨어를 이해하기 위해 이 책의 필요성을 느낀다. 책은 많은 프로그래밍과 관련된 지식을 우리들에게 전해 준다. 그것은 단어를 중심으로 우리가 이해할 수 있게 배열하고 있다. 진법, 유니코드, 조건, 논리, 함수 배열 등이 중요한 어휘들이 되고, 그들에 관해 낱낱이 설명해 나가고 있다. 구체적으로 예를 들어 설명을 해주기에 따라가면 어느 정도 성과를 얻을 수도 있을 것 같다. 아직 눈으로만 읽고 실제적인 연습을 하지 않아 말에 힘은 없지만, 그래도 흐름은 알 수가 있으니까 도움이 된다. 스택이란 말, 큐, 트리, 그래프, 정렬 탐색 등도 요긴하게 작용하는 요소들인 모양이다. 자세하게 설명되어 있다. 이제 이것을 가지고 궁구할 일만 남았다. 지식이라는 것이 참 묘하다는 생각을 많이 가지게 되는 책이다. 아는 것과 할 수 있는 것이 다르다는 것을 이 책을 통해서 깨닫는다. 머리로는 아는 듯한데 그것이 가슴에 내려오면 없어진다. 모든 기술적인 것들이 언어 뒤에 능력이 있는 모양이다. 언어로 조각을 하는 보단 책을 옆에 두고 숫자를 끼워 맞추는 것이 더 바람직할 듯하다. 이 책을 평에 두라. 그리고 계속해서 손을 사용해라. 머리보다는 손을 통해 익혀나가야 하는 책, 손끝에서 아름답게 피어나는 책이다. 프로그램을 공부할 사람들은 책이 매우 도움이 되는 듯하다. 나는 이론적으로 감사하게 읽었다. 아직도 궁구해야 하지면 책, 그 자체만으로도 지식이 되는 의미가 있다. 비타민처럼 힘을 주는, 지식을 만들어 주는 감사한 책이다.

소프트웨어 교육의 키포인트, 컴퓨팅 사고력과 프로그래밍 원리
이 책은 소프트웨어 교육을 위한 프로그래밍 핵심 원리를 기초부터 알고리즘까지 알려준다.
각 장의 주제와 관련된 재미있는 문제를 풀며 먼저 생각해보고, 설명을 접함으로써 더 쉽고, 더 빠르게 프로그래밍 원리를 익힐 수 있다. 프로그래밍 학습에 있어 가장 기본이 되는 원리를 이 책으로 배운다면 프로그래밍 기초를 탄탄하게 다질 수 있을 것이다.

혼자서도 할 수 있게 생각해보기, 원리 설명, 스크래치를 활용한 간단한 프로그래밍 활동, 도전해보기와 팁 등이 구성되어 있으며 http://cafe.naver.com/scratchprogramming 카페를 통해서 독자의 궁금증을 풀어주고 있다.

0장 처음 만나는 스크래치
____0.1 회원 가입하고 스튜디오 팔로잉하기
____0.2 스크래치 화면 살펴보기

1장 프로그램과 프로그래밍
____1.1 프로그램이란
____1.2 프로그래밍 언어와 프로그래밍
____1.3 첫 프로젝트 움직이는 고양이

2장 프로그램에서의 데이터
____2.1 프로그램에서의 데이터
____2.2 변수 생성하고 값 저장하기
____2.3 프로젝트 원의 둘레와 넓이
____2.4 프로젝트 두 변수 값 교환하기

3장 진법
____3.1 진법이란
____3.2 진법 변환

4장 문자 표현
____4.1 2진수로 문자 표현하기
____4.2 ASCII
____4.3 유니코드

5장 숫자 표현
____5.1 정수 표현하기
____5.2 부동소수점 수 표현하기

6장 반복 구조
____6.1 반복 구조란
____6.2 프로젝트 반복 구조로 움직이는 고양이
____6.3 프로젝트 1부터 5까지의 합

7장 조건 구조
____7.1 조건 구조란
____7.2 프로젝트 합격과 불합격 판별하기
____7.3 프로젝트 동전 던지기

8장 논리
____8.1 논리 연산
____8.2 프로젝트 놀이공원 입장료
____8.3 프로젝트 윤년 판별하기

9장 함수
____9.1 함수란
____9.2 프로젝트 함수를 이용한 정사각형 그리기

10장 재귀함수
____10.1 재귀함수란
____10.2 재귀함수를 이용한 계승 구하기
____10.3 프로젝트 재귀함수를 이용한 정사각형 그리기

11장 배열
____11.1 선형 리스트와 배열
____11.2 프로젝트 퀴즈

12장 연결 리스트
____12.1 포인터
____12.2 연결 리스트
____12.3 단순 연결 리스트
____12.4 이중 연결 리스트

13장 스택
____13.1 스택이란
____13.2 스택을 이용한 연산
____13.3 프로젝트 스택

14장 큐
____14.1 큐란
____14.2 원형 큐
____14.3 프로젝트 큐

15장 트리
____15.1 트리란
____15.2 이진 트리
____15.3 이진 트리의 순회

16장 그래프
____16.1 그래프란
____16.2 그래프의 탐색

17장 정렬
____17.1 버블 정렬
____17.2 선택 정렬
____17.3 삽입 정렬
____17.4 퀵 정렬

18장 탐색
____18.1 선형 탐색
____18.2 프로젝트 선형 탐색
____18.3 이진 탐색
____18.4 프로젝트 이진 탐색

19장 이진 탐색 트리
____19.1 이진 탐색 트리란
____19.2 이진 탐색 트리에서의 탐색
____19.3 이진 탐색 트리에서의 삽입
____19.4 이진 탐색 트리에서의 삭제

20장 다익스트라 알고리즘
____20.1 최단 경로
____20.2 다익스트라 알고리즘

21장 오류 검출하기
____21.1 패리티 비트
____21.2 세로 중복 검사
____21.3 체크섬

22장 압축하기
____22.1 런 렝스 코딩
____22.2 허프만 코딩

____실전 문제 풀이