개념을 잡아주는 프로그래밍 정석 [기초 연산부터 고급 문제해결 능력까지 파이썬을 활용한 효율적인 프로그래밍 학습]
- 원서명Practical Programming: An Introduction to Computer Science Using Python (ISBN 9781934356272)
- 지은이제니퍼 캠벨, 폴 그리스, 제이슨 몬토조, 그렉 윌슨
- 옮긴이이대엽
- ISBN : 9788960771338
- 25,000원
- 2010년 05월 04일 펴냄 (절판)
- 페이퍼백 | 484쪽 | 188*235mm
- 시리즈 : 프로그래밍 언어
판매처
- 현재 이 도서는 구매할 수 없습니다.
책 소개
원 저자의 요청으로 짝수 문제 해답만 제공하고 있습니다.
http://www.cdf.toronto.edu/~pgries/pybook/pybook_exercises/
프로그래밍 개론을 익히고 큰 그림을 그리고 싶은데 프로그래밍 언어를 먼저 배워야 가능하다? 프로그래밍 언어를 배우자니 기초가 부족하여 어렵거나? 닭이 먼저냐 달걀이 먼저냐라는 문제를 뛰어넘어, 직관적이면서도 비교적 장벽이 없는 언어인 파이썬을 활용해 프로그램 언어를 배우는 수고를 최대한 건너뛰고 바로 프로그래밍 과정에서 일어나는 문제 해결에 집중하도록 돕는 책이다.
[ 소개 ]
이 책은 기본적인 프로그래밍 요소부터 알고리즘, 디버깅, 객체지향 프로그래밍, 테스트 주도 개발, GUI 제작, 데이터베이스 활용법까지 전산 전공자뿐 아니라 현장에서 근무하고 있는 프로그래머라면 꼭 짚고 넘어가야 할 내용을 이해하기 쉽게 설명한다. 또한 직관적이고 쉽게 이해할 수 있는 언어인 파이썬을 활용해 프로그래밍 개론을 설명함으로써 언어를 익히는 데 드는 노력을 최대한 줄이고 핵심적인 프로그래밍 관련 개념이나 문제 해결에 집중하게 해준다. 전산학을 전공하는 학생은 물론, 초보 프로그래머 혹은 소프트웨어 업계에 종사하지만 기본기가 부족하다고 생각하는 이들이 실력을 다질 수 있는 프로그래밍 개론 필독서다.
[ 이 책에서 다루는 내용 ]
■ 산술 연산에서 루프와 if문까지 이르는 기본적인 프로그래밍 요소
■ 함수와 모듈을 이용한 프로그램 구성
■ 체계적인 알고리즘 설계
■ 디버깅
■ 데이터베이스 생성과 질의
■ 더 쉬운 프로그램 사용을 위한 그래픽 인터페이스 제작
■ 객체지향 프로그래밍과 프로그래밍 패턴
[ 이 책에 쏟아진 찬사 ]
『개념을 잡아주는 프로그래밍 정석』은 이름값을 하는 책이다. 이 책에서 제시하는 내용은 추상적인 내용보다는 실용적인 사례를 중심으로 구성돼 있고, 각 장은 파이썬을 활용해 프로그래밍에서 중요한 부분을 장황하지 않게 설명한다. ‘어떻게 컴퓨터가 X를 하게 할까?’라는 의문을 품은 학생이라면 이 책에서 그 해답을 금방 찾을 수 있으리라 생각한다.
과학은 실험을 수행해서 배우는 학문이다. 이 책은 컴퓨터 과학과 학생이 짧고 상호작용이 풍부한 파이썬 스크립트를 통해 실험하는 과정에서 자료 구조, 정렬과 탐색 알고리즘, 객체지향 프로그래밍, 데이터베이스 접근, 그래픽 사용자 인터페이스, 좋은 프로그램 설계와 같은 필수 개념을 배울 수 있게 도와준다. 실질적인 도움을 주는 다양한 예제와 도표, 이미지를 활용해 명료하게 쓴 내용은 초보 프로그래머에게 큰 도움을 줄 것이다.
‘뭐야, 컴파일러도 없고, 예제 급여처리 애플리케이션도 없네? 무슨 프로그래밍 책이 이래?’ 책을 집어든 독자에게선 당장 이런 반응이 나올 수도 있겠지만, 정말 좋은 책이다. 이 책은 ‘넌 아직 아무것도 몰라’라는 전제로 시작해 관련 프로그래밍 기술의 개념과 기법을 거쳐 대담무쌍한 놀이로 접어든다. 그리고 학생들은 연습문제에서 이미지와 그래픽을 다루면서 분명 흥미를 느낄 것이다!
디버깅을 다룬 절은 정말 훌륭하다. 내가 알고 있는 현직 프로그래머 가운데 다수는 이 책의 모든 내용을 공부해 보라고 하면 당연히 기분 나빠하겠지만 때론 이 절(그리고 다른 여러 절)의 내용을 진정으로 연마할 필요가 있다.
이 책은 두 가지 방식에서 모두 성공적이다. 이 책은 과학에 초점을 맞춘 컴퓨터 과학 전공 교재이면서 파이썬 참고서를 목표로 삼는다. 심지어 학생들에게 계산적 통찰력을 함양하면서도 학생들이 새로 습득한 프로그래밍 기술을 곧장 연구나 프로젝트에 응용할 수 있게 도와주기도 한다.
목차
목차
- 1장 소개
- 1.1 프로그램과 프로그래밍
- 1.2 용어 정의
- 1.3 설치 방법
- 1.4 이 책의 구성
- 1.5 정리
- 2장 파이썬 소개
- 2.1 큰 그림
- 2.2 수식
- 2.3 타입이란
- 2.4 변수와 할당문
- 2.5 오류
- 2.6 함수
- 2.7 내장 함수
- 2.8 스타일 노트
- 2.9 정리
- 2.10 연습문제
- 3장 문자열
- 3.1 문자열
- 3.2 특수 문자
- 3.3 여러 줄 문자열
- 3.4 print
- 3.5 출력 형식 지정
- 3.6 사용자 입력
- 3.7 정리
- 3.8 연습문제
- 4장 모듈
- 4.1 모듈 가져오기
- 4.2 새로운 모듈 정의
- 4.3 객체와 메소드
- 4.4 픽셀과 색
- 4.5 테스트
- 4.6 스타일 노트
- 4.7 정리
- 4.8 연습문제
- 5장 리스트
- 5.1 리스트와 인덱스
- 5.2 리스트 변경
- 5.3 리스트 관련 내장 함수
- 5.4 리스트 항목 처리
- 5.5 슬라이싱
- 5.6 별칭
- 5.7 리스트 메소드
- 5.8 중첩 리스트
- 5.9 다른 시퀀스 타입
- 5.10 파일을 리스트로
- 5.11 주석
- 5.12 정리
- 5.13 연습문제
- 6장 선택
- 6.1 불린 로직
- 6.2 if문
- 6.3 조건식의 결과 저장
- 6.4 정리
- 6.5 연습문제
- 7장 반복
- 7.1 실행 횟수가 정해진 루프
- 7.2 while 루프
- 7.3 사용자 입력 루프
- 7.4 루프 제어
- 7.5 스타일 노트
- 7.6 정리
- 7.7 연습문제
- 8장 파일 처리
- 8.1 한 줄짜리 레코드
- 8.2 여러 필드로 구성된 레코드
- 8.3 위치 기준 데이터
- 8.4 여러 줄 레코드
- 8.5 내다보기
- 8.6 파일에 쓰기
- 8.7 정리
- 8.8 연습문제
- 9장 집합과 사전
- 9.1 집합
- 9.2 사전
- 9.3 사전 뒤집기
- 9.4 정리
- 9.5 연습문제
- 10장 알고리즘
- 10.1 탐색
- 10.2 시간 측정
- 10.3 정리
- 10.4 연습문제
- 11장 탐색과 정렬
- 11.1 선형 탐색
- 11. 2 이진 탐색
- 11.3 정렬
- 11.4 더 효율적인 정렬 알고리즘
- 11.5 병합 정렬: Nlog2N 알고리즘
- 11.6 정리
- 11.7 연습문제
- 12장 프로그램 제작
- 12.1 함수 고찰
- 12.2 예외
- 12.3 테스트
- 12.4 디버깅
- 12.5 패턴
- 12.6 정리
- 12.7 연습문제
- 13장 객체지향 프로그래밍
- 13.1 Color 클래스
- 13.2 특별 메소드
- 13.3 dir과 help
- 13.4 객체지향 이론
- 13.5 심화 예제
- 13.6 정리
- 13.7 연습문제
- 14장 그래픽 사용자 인터페이스
- 14.1 Tkinter 모듈
- 14.2 기본적인 GUI 제작
- 14.3 모델, 뷰, 컨트롤러
- 14.4 스타일
- 14.5 그 밖의 위젯
- 14.6 객체지향 GUI
- 14.7 정리
- 14.8 연습문제
- 15장 데이터베이스
- 15.1 큰 그림
- 15.2 첫걸음
- 15.3 데이터 조회
- 15.4 갱신과 삭제
- 15.5 트랜잭션
- 15.6 누락 데이터와 NULL
- 15.7 조인을 이용한 테이블 조합
- 15.8 키와 제약 조건
- 15.9 고급 기능
- 15.10 정리
- 15.11 연습문제
관련 블로그 글
문제해결력을 높이고 개념을 잡아주는 프로그래밍 정석
기초 연산부터 고급 문제해결 능력까지 파이썬을 활용한 효율적인 프로그래밍 학습
제니퍼 캠벨, 폴 그리스, 제이슨 몬토조, 그렉 윌슨 지음 | 이대엽 옮김 |
484쪽 | 2010년 5월 4일 출간예정 | 25,000원
YES24, 교보문고, 강컴, 인터파크, 알라딘
▶ Hello, World!
빌 게이츠가 지난 1월 트위터에 첫발을 내디디며 남겼던 한 마디입니다. 프로그래머들에게 Hello World란 프로그래밍과 컴퓨터, 네트워크 세상에 대한 인사와 다름 아닙니다. 그래서 수많은 프로그래밍 언어 책과 프로그래밍 개론서들에서는 화면에 Hello World를 찍는, 프린트하는 구문으로 시작합니다.
자바로 헬로월드를 한번 찍어볼까요? 뭐, 초급자가 배우는 내용이니 어렵지 않겠죠.
public static void main(String[] args) {
System.out.println("Hello, World");
}
}
자, 이번에는 C로 해볼까요?
# include <stdio.h>
void main()
{
printf("Hello, World");
}
일단 public이니 static이니 void니 이런 건 지금은 알 필요 없다지요. 일단 Hello World가 잘 찍혔는지만 확인하고 넘어가면 된다고 용기 백배 주시는 말씀을 하시지만, 영 마음 한 구석 찜찜한 마음은 덜지 못합니다. 심지어 어떤 책에선 박스로 둘러친 내용으로 "지금 세세한 내용을 이해하지 못한다고 해서 용기를 잃거나 기죽을 필요는 없다. 책을 다 읽고 나면 이해할 날이 올 것이다"라는 노트가 들어있는 경우도 있다고 합니다.
물론 무엇이든 단박에 내용을 이해하고 넘어가기란 쉽지 않습니다. 공부를 하다 보면 일정 시간이 지나고 나면 모르던 내용을 알게되기도 하고 더 깊이 이해할 수 있는 힘이 키워지게 되는 거니까요.
▶ 닭이 먼저냐 달걀이 먼저냐
프로그래밍 개론을 익히고 큰 그림을 그리고 싶은데 프로그래밍 언어를 먼저 배워야 가능하다? 그래서 프로그래밍 언어를 먼저 배우자니 기초가 부족하여 도대체 뭔 소린지 이해하기 어렵거나?
『개념을 잡아주는 프로그래밍 정석』은 개론이 먼저냐 언어 습득이 먼저냐라는 문제를 뛰어넘어, 직관적이면서도 비교적 장벽이 없는 파이썬을 활용해, 언어를 배우는 수고를 최대한 건너뛰고 바로 프로그래밍 과정에서 일어나는 문제 해결에 집중하도록 도와 주는 책입니다.
잠시 동영상을 하나 보실까요?
이 동영상은 2008년 가을학기 MIT공과대학에서 Intorduction to Computer Science and Programming이라는 제목으로 에릭 그림슨(Eric Grimson)교수님이 직강을 하시는 내용을 동영상으로 찍어 유튜브에 올려놓은 강의 중 제2강입니다. MIT에서 직접 운영하는 유튜브 동영상에서는 관련 강의를 24강까지 자유롭게 볼 수 있습니다. 크리에이티브 커먼즈 cc BY-NC-SA (저작권자 표시, 비영리, 동일조건변경허락) 조건으로 배포를 허용하고 있습니다.
동영상을 보시면 아시겠지만 MIT공과대학에서도 파이썬으로 프로그래밍 개론 강의를 진행합니다. 그밖의 대학에서도 프로그래밍을 가르칠 때 파이썬을 채택한 사례는 어렵지 않게 찾아볼 수 있습니다. 그런데 유독 우리나라에서는 파이썬이 빛을 보지 못하는 이유는 무엇일까요? SI 기업위주로 돌아가는 우리 나라의 IT환경이나 대학교 전산과학과나 컴퓨터공학과의 파이썬 교육이 미비한 탓도 있겠으나, 이에 대해서는 여러 분의 의견이 분분할 테므로 살짝 생략하고 넘어가겠습니다.
그렇다면 거꾸로 다시 한번 짚어보죠. 이 책도 그렇고, 각 외국대학에서 수많은 언어 중에 굳이 파이썬을 채택한 이유는 무엇일까요?
▶ 직관적이고 간결하며 가독성 높은 언어, 파이썬으로 배우는 프로그래밍 개론
이에 대해 역자 이대엽님이 잘 정리해주신 이유를 들어보죠.
본문의 예제 코드를 보면 알겠지만 파이썬 코드는 자체가 알고리즘에 가깝다. 언어 자체의 간결함과 높은 가독성은 파이썬을 배우고 쓰기 쉽게 해준다. 따라서 목적하는 개념 이해와 문제 해결에만 오롯이 집중할 수 있다. 더불어 풍부한 라이브러리와 짧은 개발 주기, 다른 프로그래밍 언어와의 손쉬운 통합은 오늘날 기업의 지상 과제인 적기출시(Time to Market)를 실현하는 데도 도움이 될 것이다.위에서 살펴본 자바나 C의 출력문 코드를 파이썬으로 하면 print "Hello, World!"하면 끝입니다.
하지만 무엇보다도 파이썬 언어가 주는 매력은 바로 프로그래밍의 재미다. 여기서 재미란, 프로그래밍 언어로 내가 하고 싶은 일에만 집중할 수 있을 때 성립하는 요소다. 특히 프로그래밍을 처음 접하거나 익숙지 않은 전산 전공자의 경우에는 이런 요소가 더 중요하리라 생각한다. 언어적 세부 사항에 압도돼 프로그래밍이 주는 즐거움을 느끼기 힘들었다는 사람이라면 더더욱 그렇다.
이런 점을 감안한다면 저자가 파이썬을 선택한 이유는 자명하다. 사실 이 책에서 저자가 전하고자 하는 바는 언어적 세부 사항에 있지 않기 때문이다. - 옮긴이 이대엽
대부분 C로 시작하는 프로그래밍 개론서를 읽다 보면 처음에는 별 문제 없이 넘어가지만, 배열, 문자열, 포인터가 나오기 시작하면 이제 개론이고 뭐고 언어의 장벽에 턱 막혀 넉다운되고 맙니다. 그야말로 주객이 전도되는 안타까운 상황이 아닐 수 없습니다.
언어를 배우는 수고를 최대한 줄이고 프로그래밍 전반의 기초부터 고급 문제해결 능력을 높이는 데 최대한 집중할 수 있는 책이 바로 이 『개념을 잡아주는 프로그래밍 정석』입니다. 기존에 출간된 프로그래밍 개론서라 하더라도 컴퓨터 구조, 알고리즘 등에서 멈추거나 기초적인 내용을 겉핥기식으로 다루고 맙니다. 그 또한 언어를 배워야 하는 장벽에 부딪혀 개념잡기에 실패하는 경우가 수두룩하죠.
▶ 개념을 잡아주는 프로그래밍 정석!
이 책에서는 기초 연산 등의 기본적인 프로그래밍 요소은 물론이고 알고리즘, 디버깅, 객체지향 프로그래밍, 테스팅(TDD), GUI 제작, 데이터베이스 활용법까지 전산학 전공 학생은 물론, 초보 프로그래머, 혹은 소프트웨어 업계에 종사하지만 기본기가 부족하다고 생각하는 이들이 확실히 실력을 다질 수 있는 프로그래밍 개론 필독서입니다. 물론 파이썬을 배우고 싶은 프로그래머들이 손쉽게 파이썬을 익힐 수 있는 책이기도 합니다.
디버깅을 다룬 절은 정말 훌륭하다. 내가 알고 있는 현직 프로그래머 가운데 다수는 이 책의 모든 내용을 공부해 보라고 하면 당연히 기분 나빠하겠지만 때론 이 절(그리고 다른 여러 절)의 내용을 진정으로 연마할 필요가 있다.
이 책은 두 가지 방식에서 모두 성공적이다. 이 책은 과학에 초점을 맞춘 컴퓨터 과학 전공 교재이면서 파이썬 참고서를 목표로 삼는다. 심지어 학생들에게 계산적 통찰력을 함양하면서도 학생들이 새로 습득한 프로그래밍 기술을 곧장 연구나 프로젝트에 응용할 수 있게 도와주기도 한다.
지난 몇 개월간 이 책을 번역하시고 편집 마무리 과정까지 최선을 다해 노력해주신 옮긴이 이대엽님께도 감사 말씀 전합니다. "예전에 프로그래밍을 처음 배울 때 이 책으로 시작했다면 어땠을까"라는 옮긴이 이대엽님의 말처럼 지금이라도 기초를 탄탄히 하고 고급 문제 해결 능력까지 놓치지 않는 훌륭한 프로그래머로 거듭날 수 있는 기회를 잡으시기 바랍니다. 파이썬에 대한 두려움이나 편견 따위 훨훨 날려버리시구요.
『개념을 잡아주는 프로그래밍 정석』은 계절의 여왕 5월을 여는 에이콘의 첫 책으로 5월 4일에 출간됩니다. 5월에는 정말 봄이 오겠죠? ㅠㅠ 이 책은 지금 YES24, 교보문고, 강컴, 인터파크, 알라딘에서 예약 판매 중입니다.
크리에이티브 커먼즈 라이센스 이 저작물은 크리에이티브 커먼즈 코리아 저작자표시 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
도서 오류 신고
정오표
정오표
[ 이 책의 연습문제 정답 ]
원 저자의 요청으로 짝수 문제 해답만 제공하고 있습니다.
http://www.cdf.toronto.edu/~pgries/pybook/pybook_exercises/
[ p36 박스 안 마지막 행 ]
분야애 해단한다. → 분야에 해당한다.
[ p36 basic/precedence_diff.cmd 예제 1행 ]
[# ]
삭제
[p43 '[2.6]
함수'에서 위에서 1행]
화씨 80도를 섭씨로 변환해봤다 → 화씨 212도를 섭씨로 변환해봤다
p43 '[2.6]
함수'에서 위에서 3행
화씨 80도가 섭씨로 → 가령 화씨 80도가 섭씨로
[p43 '[2.6]
함수'에서 위에서 4행]
즉 26 2/3를 계산하면 된다 → 즉 16 5/3를 계산하면 된다
[p132 '내 리스트가 어디갔지?'박스 안의 코드 중 3행]
['blue', 'green', 'orange', 'purple', 'red', 'yellow',]
→ ['red', 'orange', 'yellow', 'green', 'blue', 'purple']
[p163 본문 하단의 코드 중에서 위에서 2행/7행]
CH3 → CH4
[p169 본문 중간의 코드 중에서 위에서 7행]
CH3 → CH4
[p171 위에서 1행]
0보다 크고 pH < 7.0도 참으로 → 0보다 크고 ph < 7.0도 참으로
[p202 위에서 3행]
CH3 → CH4
[p203 상단 예제 1행]
화학식(또는 종료하려면 'quit')을 입력해 주세요: CH3 → 화학식(또는 종료하려면 'quit')을 입력해 주세요: CH4
[p224 하단코드 아래에서 2행]
('print line'을 삭제)
line = tsdl.skipheader(r).strip()
print line
↓
line = tsdl.skipheader(r).strip()
p226 본문 위에서 2행 헤브론 데이터로 readsmallest 함수를 호출하면 → 헤브론 데이터로 smallestvalue 함수를 호출하면
[p226 상단 예제에서 2행]
>>> readsmallest.processfile(open('hebron.txt', 'r'))
→ >>> readsmallest.smallestvalue(open('hebron.txt', 'r'))
[p226 상단 예제에서 5행]
File "readsmallest.py", line 15, in processfile
→ File "readsmallest.py", line 15, in smallestvalue
[p285 상단 예제에서 6행]
min2, min1 = 1, 0 → min2, min1 = 0, 1
[p285 하단 예제에서 8행]
min2, min1 = 1, 0 → min2, min1 = 0, 1
[p183 본문 4행]
대상 리스트가 value라는 → 대상 리스트가 values라는
[p267 countbirds3.py 수정]
[p.284 아래에서 4행]