• 헬로! 컴퓨터 프로그래밍
  • 쉽고 재미있게 프로그래밍 배우기

  • 워렌 산데, 카터 산데 지음
  • 김승범, 박준표 옮김

  • 프로그래밍 & 프랙티스 시리즈 _ 003
  • ISBN: 9788992939430
  • 25,000원 | 2011년 04월 20일 발행 | 480쪽



카네기멜론 대학에서 시작된 정보과학적 사고능력(Computational Thinking) 학습은 컴퓨터 과학과 교육에 대한 새로운 목표를 제시하고 있다. 이 관점에서 바라보면 컴퓨팅(computing)을 배운다는 것은 단순히 컴퓨터 언어를 사용하는 방법을 배운다는 것을 넘어선다. 컴퓨터를 사고의 도구로 활용하고 실험의 도구로 사용해서 인간의 능력을 확장하는 것이 바로 컴퓨팅을 배우는 목적 중 하나다.

전자시스템 엔지니어인 워렌 산데와 그의 12살 난 아들 카터 산데가 함께 쓴 <헬로! 컴퓨터 프로그래밍>은 이러한 목적을 잘 이해한 컴퓨터 프로그래밍 입문서다. 이 책에서는 파이썬(Python)을 다루고 있지만, 파이썬을 통해 컴퓨터 프로그래밍을 조망하고 배우는 데 그 가치가 있다. 본문 중간중간에 컴퓨터 발전의 역사를 살펴볼 수 있는 개념을 설명하고, ‘준범’이라는 초보 학습자를 등장시켜 저자와 대화하듯이 책의 내용을 전개해 나가면서 프로그래밍 초심자가 어떤 궁금증과 사고의 흐름을 통해 성장하는지 살펴볼 수 있다.

이 책은 아버지(선생님)와 대화하듯 본문이 구성돼 있어 초보자가 프로그래밍의 주요 개념과 객체지향 언어 등을 쉽게 이해할 수 있을뿐더러 단계별 예제를 통해 프로그래밍의 핵심 원리를 쉽게 체득할 수 있다. 아울러 파이썬이라는 강력한 언어를 자연스럽게 습득하게 만들어주고 컴퓨터 과학의 주요 개념을 익히고 프로그래밍 언어의 구조와 원리를 파악하는 데도 크나큰 도움이 될 것이다.

쉽고 재미있게 프로그래밍 배우기

“컴퓨터 프로그래밍은 아이들이 ‘배우는 과정 자체를 배우는’ 강력한 도구입니다... 아이들은 프로그래밍을 배움으로써 그와 유사한 배움의 과정을 다른 곳에도 그대로 적용할 수 있습니다. “

-- 니콜라스 네그로폰테, OLPC(One Laptop Per Child) 프로젝트, 2008년 1월

소리를 지른다고 해서 컴퓨터가 반응하지는 않습니다. 대신 컴퓨터가 알아듣는 언어로 말을 걸어보면 어떨까요? 프로그램을 배운다면 이렇게 할 수 있습니다. 정말 멋진 일을 바로 해볼 수도 있고, 심지어 여러분만의 게임도 만들 수 있습니다. 프로그래밍은 재미있습니다!

『헬로! 컴퓨터 프로그래밍』은 프로그래밍을 소개하는 책입니다. 이 책에서는 재미있는 예제를 통해 메모리, 루프, 선택, 입출력, 데이터 및 그래픽과 같은 컴퓨터 개념들을 배우고, 컴퓨터 프로그래밍을 배우고 싶다면 남녀노소 누구라도 쉽게 따라올 수 있게 구성돼 있습니다.

『헬로! 컴퓨터 프로그래밍』에서는 OLPC(One Laptop Per Child) 프로젝트에서도 채택된 파이썬(Python)이라는 프로그래밍 언어를 사용하며, 프로그래밍 경험이 없더라도 쉽게 시작할 수 있습니다.

★ 이 책의 특징 ★

  • 모든 내용을 어려운 용어는 되도록 피하고 쉬운 말로 설명합니다.
  • 그림과 카툰, 그리고 재미있는 예제로 설명합니다.
  • 연습문제와 예제가 들어 있습니다.
  • 전문 교육자와 아이들, 부모로부터 검토를 받았습니다.

워렌 산데 (Warren Sande)

워렌 산데는 전자공학을 하는 공학자로 일상 업무에서 파이썬과 그 밖의 여러 프로그래밍 언어를 사용하고 있으며, 아들에게 파이썬으로 컴퓨터와 프로그래밍을 가르치고 있다. 또한 컴퓨터 초보자를 위한 강좌를 개설해 가르치고 있다.

카터 산데 (Carter Sande)

워렌 산데의 아들인 카터 산데는 초등학생으로 컴퓨터와 피아노 연주, 트램폴린 뛰기, 자전거 타기, 그리고 자신의 여동생을 좋아한다. 학교에서의 별명은 ‘Tech Support(기술 지원팀)’다. 어려서부터 컴퓨터를 갖고 노는 걸 즐겼다.

김승범

생명과학을 전공했으나 앨런 케이(Alan Kay)를 만나고 엔드유저를 위한 컴퓨팅 환경에 대해 고민하기 시작했다. 스퀵 스몰토크(Squeak Smalltalk) 한국 커뮤니티를 운영하면서 대안언어축제와 같은 컴퓨팅 커뮤니티 활동을 했고, 애자일 커뮤니티 활동을 통해 협력과 ‘매일 매일 개선하기’의 가치를 배우고 실천하고 있다. 고려대학교 컴퓨터 교육학과 석사를 마치고 동료와 함께 PINY(http://piny.cc)라는 소셜벤처를 설립해 디지털 리터러시와 커뮤니케이션에 대한 교육 사업과 연구를 병행했다. 현재는 '뉴 미디어 리터러시', '엔드유저 컴퓨팅' 등의 키워드에 대해 고민하고 연구하고 있다.

박준표

고려대학교에서 언론학 석사를 마치고, 연세대학교 청년문화원 연구원으로 웹서비스를 기획했다. 현재는 청(소)년, 다양성, 뉴미디어를 키워드로 PINY라는 소셜벤처를 실험하고 있다. 다양성이 존중받는 즐거운 세상을 만드는 것이 목표이며, 10대 시절부터 시민문화, 캠프, 포럼, 택틱컬 미디어, 웹서비스 등 다양한 기획과 연출, 실험을 해왔고 청소년 라디오 프로그램의 진행자로도 활동 중이다. 안국동 아티스트 레지던시의 참여작가로 활동하면서 미술 활동을 시작했으며, 건국대학교와 계원디자인예술대학에서 디지털아트, 아트프로그래밍을 코칭하고 있다.

 

옮긴이글

이 책을 손에 든 여러분 중에는 프로그래밍을 배우기 위해 이미 여러 가지 시도를 해본 분도 있을 것입니다. 책도 알아보고, 주변에 도움을 줄 사람은 없는지 찾아봤을 것입니다. 관련 교육기관을 알아본 분도 있겠네요. 그런데 알아보면 알아볼수록 배워야 할 것들이 산더미처럼 많다는 사실을 알게 됩니다. 전문 개발자가 될 것도 아닌데 이런 것들을 모두 배울 필요가 있을까? 라는 의문도 생깁니다.

그런데 정말 전문 개발자가 될 사람만이 컴퓨터 프로그래밍을 배워야 할까요? 일상생활 속에서 옆집 아주머니가, 동네 꼬마가, 노인정의 할아버지가, 그리고 ‘내가’ 프로그래밍을 해볼 일은 없을까요? 갑자기 너무 빡빡하고 어렵게 들린다고요? 말도 안 된다고요? 정말 그럴까요? 이 주제를 역자 서문에서 풀어 쓰는 것은 좀 어울리지 않을 거 같습니다. 그래도 한번 고민해보기 바랍니다.

한 가지만은 확실히 말씀드릴 수 있습니다. 만약 여러분이 평소에 컴퓨터를 많이 사용하는 분이라면 컴퓨터 프로그래밍을 배우고 컴퓨터 프로그램 내부의 기본 개념들을 이해하고 나면 분명히 여러분의 컴퓨터 생활이 더 즐겁고 윤택해질 것입니다. 그리고 그 첫걸음을 위해서 이 책을 선택한 것은 여러분에게 큰 행운이라고 생각합니다.

  • 01장 시작하기
    • 파이썬 설치하기
    • IDLE과 함께 파이썬의 세계로!
    • 명령을 내려주세요
    • 파이썬과 대화하기
    • 프로그램을 할 시간입니다!
    • 자, 이제 실행해볼까요?
    • 뭔가가 잘못됐다면?!?
    • 내 생애 두 번째 프로그램!
  •  
  • 02장 기억하라! 메모리와 변수
    • 입력, 처리, 출력
    • 이름
    • 이름은 어떻게 지을까?
    • 숫자와 문자열
    • 변수란?
    • 새로운 나
  •  
  • 03장 간단한 계산
    • 사칙연산
    • 연산자
    • 연산의 순서
    • 연산자 두 개 더
    • 정말 큰 수와 정말 작은 수
    • 04 자료형 (Type of Data)
    • 자료형 변환하기
    • 정보를 더 얻는 방법 : type()
    • 형 변환 오류
    • 형 변환 사용하기
  •  
  • 05장 입력
    • raw_input()
    • print 명령어와 콤마(,)
    • 숫자 입력하기
    • 웹에서 입력받기
  •  
  • 06장 그래픽 유저 인터페이스
    • GUI가 뭐지?
    • 첫 번째 GUI
    • GUI 입력
    • 어떤 맛을 고를까?
    • 숫자 추측 게임, 한 번 더!
    • 그 밖의 GUI 기능
  •  
  • 07장 판단과 결정
    • 테스팅
    • 들여쓰기
    • 두 개를 본 것 같은데?
    • 다른 종류의 테스트
    • 테스트가 실패하면 어떤 일이 일어날까?
    • 한 가지 이상의 조건으로 테스트하기
    • “and” 사용하기
    • “or” 사용하기
    • “not” 사용하기
  •  
  • 08장 반복하기
    • 계수 반복
    • 계수 반복 사용하기
    • 손쉬운 방법 - range()
    • 스타일의 문제 - 반복 변수 이름
    • 간격을 두고 세기
    • 숫자 없이 세기
    • 조건을 만족하는 동안...
    • 반복에서 탈출하기 - break와 continue
  •  
  • 09장 여러분만을 위한 ‘주석’
    • 주석 넣기
    • 한 줄 주석
    • 줄 끝의 주석
    • 여러 줄 주석
    • 주석문 스타일
    • 주석 처리
  •  
  • 10장 게임 타임
    • Skier
  •  
  • 11장 중첩되고 가변적인 반복
    • 중첩 반복문
    • 가변 반복문
    • 중첩된 가변 반복문
    • 더 중첩된 가변 반복문
    • 중첩 반복문 사용하기
    • 열량 계산하기
  •  
  • 12장 함께 모으기 - 리스트
    • 리스트란 무엇인가?
    • 리스트 만들기
    • 리스트에 추가하기
    • 점(.)이 뭐하는 거지?
    • 모든 걸 담을 수 있는 리스트
    • 리스트에서 항목 가져오기
    • 왜 인덱스가 1이 아닌 0부터 시작할까?
    • 리스트 자르기
    • 항목 수정하기
    • 리스트에 넣는 다른 방법
    • 리스트에서 삭제하기
    • 리스트에서 찾기
    • 리스트 순회하기
    • 리스트 정렬하기
    • 변경 가능한 것과 변경 불가능한 것
    • 리스트의 리스트: 데이터 테이블
  •  
  • 13장 함수
    • 함수 - 블록 쌓기
    • 함수 호출하기
    • 함수에 인자 넘기기
    • 인자가 여러 개인 함수
    • 값을 돌려주는 함수
    • 변수의 범위
    • 전역 변수 사용하기
    • 변수명 짓기에 대한 조언-
  •  
  • 14장 객체
    • 실생활의 객체
    • 파이썬의 객체
    • 객체 = 속성 메서드
    • 점(.)은 뭐하는 거지?
    • 객체 만들기
    • 예제 클래스 - HotDog
    • 데이터 숨기기
    • 다형성과 상속
    • 앞서서 생각하기
  •  
  • 15장 모듈
    • 모듈이란?
    • 왜 모듈을 사용할까?
    • 블록을 담는 통
    • 어떻게 모듈을 만들지?
    • 모듈은 어떻게 사용할까?
    • 이름공간
    • 표준 모듈
  •  
  • 16장 그래픽
    • 도움 얻기 - 파이게임(Pygame)
    • 파이게임 창
    • 창안에 그리기
    • 픽셀 다루기
    • 이미지
    • 움직여 보자!
    • 애니메이션
    • 부드러운 애니메이션
    • 공 튀기기
    • 공 화면에서 넘기기
  •  
  • 17장 스프라이트와 충돌검사
    • 스프라이트
    • 쿵! 충돌검사
    • 시간 계산
  •  
  • 18장 새로운 방식의 입력 - 이벤트
    • 이벤트
    • 키보드 이벤트
    • 마우스 이벤트
    • 타이머 이벤트
  •  
  • 19장 사운드
    • 파이게임(Pygame)에서 도움 얻기 - mixer
    • 사운드 만들기와 사운드 재생하기
    • 사운드 재생
    • 음량 조절
    • 음악 반복하기
    • PyPong에 사운드 넣기
    • 더 재밌는 사운드
    • PyPong에 음악 넣기
  •  
  • 20장 GUI 더 알아보기
    • 파이썬카드로 작업하기
    • 구성요소
    • GUI가 작동하게 만들기
    • 이벤트 처리기의 귀환
    • 버튼 움직이기
    • 좀 더 유용한 GUI
    • TempGUI
  •  
  • 21장 출력 형식과 문자열
    • 새로운 줄
    • 수평 공간 - 탭
    • 문자열에 변수 삽입하기
    • 숫자 형식
    • 문자열 조작하기
  •  
  • 22장 파일 입력과 출력
    • 파일이란?
    • 파일명
    • 파일 위치
    • 파일 열기
    • 파일 읽기
    • 텍스트 파일과 이진 파일
    • 파일 쓰기
    • 파일로 저장하기 - pickle
    • 게임을 위한 시간 - 행맨(Hangman)
  •  
  • 23장 기회를 잡아라 - 무작위
    • 무작위란?
    • 주사위 굴리기
    • 카드 패 만들기
    • Crazy Eights
  •  
  • 24장 컴퓨터 시뮬레이션
    • 현실세계 모델링하기
    • 달 착륙선
    • 시간 관리
    • 시간 객체
    • 파일에 시간 저장하기
    • 가상 애완동물
  •  
  • 25장 더 공부할 내용
    • 일반적인 프로그래밍
    • 파이썬
    • 게임 프로그래밍과 파이게임(Pygame)
    • 파이썬의 다른 모듈
    • 둘러보기
  •  
  • 부록A 변수명 규칙
  • 부록B 모범답안

예제코드 관련 GitHub 페이지

관련 글


엮인 글

엮인 글 주소: http://wikibook.co.kr/hello-world/trackback/