메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

한빛랩스 - 지식에 가능성을 머지하다 / 강의 콘텐츠 무료로 수강하시고 피드백을 남겨주세요. ▶︎

코딩 뇌를 깨우는 파이썬

문제 해결 능력을 키우는 컴퓨팅 사고부터 알고리즘, 데이터 분석, 머신러닝까지

한빛미디어

번역서

판매중

  • 저자 : 존 V. 구태그
  • 번역 : 박해선
  • 출간 : 2023-08-30
  • 페이지 : 616 쪽
  • ISBN : 9791169211376
  • 물류코드 :11137
  • 초급 초중급 중급 중고급 고급
4.9점 (26명)
좋아요 : 48

잠자는 코딩 뇌를 깨워라

파이썬 기초부터 머신러닝까지 한 권에!

 

프로그래밍 경험이나 지식이 없는 분들을 위해 파이썬과 다양한 라이브러리(넘파이, 맷플롯립, 판다스, 사이킷런 등)를 사용한 문제 해결 비법을 소개합니다. 이 책을 통해 일상에서 마주하는 다양한 문제를 프로그래밍으로 해결하는 기술을 배워보세요. 데이터 모델링과 해석 같은 데이터 과학의 핵심을 배우고, 간단한 머신러닝 기법도 만나봅니다.

 

이 책은 MIT 강의를 기반으로 만들어진 컴퓨터 과학 입문서로 프로그래밍을 전혀 모르는 초보자도 부담 없이 펼쳐볼 수 있습니다. 컴퓨팅 사고와 간단한 알고리즘처럼 프로그래밍 입문에 꼭 필요한 주제로 잠들어 있던 코딩 뇌를 깨우세요. 각 장에 마련된 뇌풀기 문제를 통해 데이터 시각화나 시뮬레이션, 데이터 계산 기법, 머신러닝 같은 실용적인 주제를 살펴보며 프로그래밍 능력을 키워봅시다.

 

700_상세이미지_코딩 뇌를 깨우는 파이썬.jpg

존 V. 구태그 저자

존 V. 구태그

MIT 전기공학 및 컴퓨터과학부(EECS)에서 듀갈드 C. 잭슨 교수로 재직하고 있으며 ACM의 펠로이자 미국 예술 과학 아카데미의 회원입니다. 1999년부터 2004년까지 전기공학 및 컴퓨터과학부에서 학부장을 맡았으며, 현재는 MIT의 컴퓨터과학 및 인공지능 연구소(CSAIL)에서 의료 문제에 적용할 수 있는 고급 머신러닝 및 컴퓨터 비전 기술 연구를 이끌고 있습니다. 또한, 환자 치료 관리에 사용하는 인공지능 플랫폼을 개발하는 헬스앳스케일 테크놀로지스Health[at]Scale Technologies를 설립해 CTO로 재직하고 있습니다.

MIT에서 2006년부터 직접 문제를 구성하고 데이터에서 유용한 정보를 찾아내는 데 필요한 계산적 사고를 익히는 수업을 개설했으며, 해당 강의는 온라인으로도 공개되어 2백만 명 이상의 학생이 수강했습니다.

박해선 역자

박해선

기계공학을 전공했지만 졸업 후엔 줄곧 코드를 읽고 쓰는 일을 했습니다. 블로그(tensorflow.blog)에 글을 쓰고 머신러닝과 딥러닝에 관한 책을 집필, 번역하면서 소프트웨어와 과학의 경계를 흥미롭게 탐험하고 있습니다.

『챗GPT로 대화하는 기술』(한빛미디어, 2023), 『혼자 공부하는 데이터 분석 with 파이썬』(한빛미디어, 2023), 『혼자 공부하는 머신러닝+딥러닝』(한빛미디어, 2020), 『Do it! 딥러닝 입문』(이지스퍼블리싱, 2019)을 집필했습니다.

『실무로 통하는 ML 문제 해결 with 파이썬』(한빛미디어, 2024), 『머신러닝 교과서: 파이토치 편』(길벗, 2023), 『스티븐 울프럼의 챗GPT 강의』(한빛미디어, 2023), 『핸즈온 머신러닝(3판)』(한빛미디어, 2023), 『만들면서 배우는 생성 AI』(한빛미디어, 2023), 『코딩 뇌를 깨우는 파이썬』(한빛미디어, 2023), 『트랜스포머를 활용한 자연어 처리』(한빛미디어, 2022), 『케라스 창시자에게 배우는 딥러닝 2판』(길벗, 2022), 『개발자를 위한 머신러닝&딥러닝』(한빛미디어, 2022), 『XGBoost와 사이킷런을 활용한 그레이디언트 부스팅』(한빛미디어, 2022), 『구글 브레인 팀에게 배우는 딥러닝 with TensorFlow.js』(길벗, 2022), 『파이썬 라이브러리를 활용한 머신러닝(번역개정2판)』(한빛미디어, 2022), 『머신러닝 파워드 애플리케이션』(한빛미디어, 2021), 『머신 러닝 교과서 with 파이썬, 사이킷런, 텐서플로(개정3판)』(길벗,2021)를 포함하여 여러 권의 책을 우리말로 옮겼습니다.

 

<1부> 프로그래밍 시작하기

 

1장 시작하기


2장 파이썬 소개

_2.1 파이썬과 파이썬 IDE 설치하기

_2.2 파이썬의 기본 요소

__2.2.1 객체, 표현, 수치 타입

__2.2.2 변수와 할당

_2.3 분기 프로그램

_2.4 문자열과 입력

__2.4.1 입력

__2.4.2 문자 인코딩에 관한 여담

_2.5 while 루프

_2.6 for 루프와 range

_2.7 스타일의 중요성

 

3장 간단한 수치 프로그램

_3.1 완전 열거

_3.2 근사 해법과 이분 검색

_3.3 부동소수점 사용에 대하여

_3.4 뉴턴-랍슨 방법

 

<2부> 효율적으로 프로그래밍하기

 

4장 함수, 유효범위, 추상화

_4.1 함수와 유효범위

__4.1.1 함수 정의

__4.1.2 키워드 인수와 기본값

__4.1.3 가변 길이 인수

__4.1.4 유효범위

_4.2 사양

_4.3 함수를 사용해 코드를 모듈화하기

_4.4 객체로서의 함수

_4.5 메서드

 

5장 구조적인 타입과 가변성

_5.1 튜플

__5.1.1 복수 할당

_5.2 range와 iterator 타입

_5.3 리스트와 가변성

__5.3.1 복제

__5.3.2 리스트 내포

_5.4 리스트의 고차 연산

_5.5 문자열, 튜플, 레인지, 리스트

_5.6 집합

_5.7 딕셔너리

_5.8 딕셔너리 내포

 

6장 재귀와 전역 변수

_6.1 피보나치수열

_6.2 팰린드롬

_6.3 전역 변수

 

<3부> 탄탄한 프로그램 만들기


7장 모듈과 파일

_7.1 모듈

_7.2 사전에 정의된 패키지 사용하기

_7.3 파일

 

8장 테스트와 디버깅

_8.1 테스트

__8.1.1 블랙박스 테스트

__8.1.2 글라스박스 테스트

__8.1.3 테스트 수행하기

_8.2 디버깅

__8.2.1 디버깅 배우기

__8.2.2 실험 설계하기

__8.2.3 어려운 상황에 직면했을 때

__8.2.4 버그를 찾았을 때

 

9장 예외와 assert

_9.1 예외 처리하기

_9.2 제어 흐름 메커니즘으로 예외 사용하기

_9.3 assert

 

10장 클래스와 객체 지향 프로그래밍

_10.1 추상 데이터 타입과 클래스

__10.1.1 매직 메서드와 해싱 가능 타입

__10.1.2 추상 데이터 타입을 사용해 프로그램 설계하기

__10.1.3 학생 관리를 위한 클래스

_10.2 상속

__10.2.1 다단계 상속

__10.2.2 대체 원칙

_10.3 캡슐화와 정보 은닉

__10.3.1 제너레이터

_10.4 고급 예제

 

<4부> 프로그래밍으로 문제 풀기


11장 알고리즘 복잡도의 간략한 소개

_11.1 계산 복잡도에 관한 고찰

_11.2 점근 표기법

_11.3 중요한 몇 가지 복잡도 종류

__11.3.1 상수 복잡도

__11.3.2 로그 복잡도

__11.3.3 선형 복잡도

__11.3.4 로그 선형 복잡도

__11.3.5 다항 복잡도

__11.3.6 지수 복잡도

__11.3.7 복잡도 비교

 

12장 몇 가지 간단한 알고리즘과 데이터 구조

_12.1 검색 알고리즘

__12.1.1 선형 검색과 간접 참조로 원소에 접근하기

__12.1.2 이진 검색과 가정 활용

_12.2 정렬 알고리즘

__12.2.1 합병 정렬

__12.2.2 파이썬의 정렬 기능

_12.3 해시 테이블

 

13장 그래프 출력과 클래스

_13.1 맷플롯립으로 그래프 그리기

_13.2 모기지 그래프 그리기

_13.3 전염병을 위한 인터랙티브 그래프

 

<5부> 프로그래밍으로 현실 세계 이해하기


14장 배낭 문제와 그래프 최적화 문제

_14.1 배낭 문제

__14.1.1 탐욕 알고리즘

__14.1.2 0/1 배낭 문제의 최적 솔루션

_14.2 그래프 최적화 문제

__14.2.1 고전적인 그래프 문제

__14.2.2 최단 경로: 깊이 우선 탐색과 너비 우선 탐색

 

15장 동적 계획법

_15.1 피보나치수열 다시 살펴보기

_15.2 동적 계획법과 0/1 배낭 문제

_15.3 동적 계획법과 분할 정복

 

16장 랜덤 워크와 데이터 시각화

_16.1 랜덤 워크

_16.2 술에 취한 농부의 산책

_16.3 편향된 랜덤 워크

_16.4 위험한 들판

 

<6부> 데이터 이해하기


17장 확률적 프로그램, 확률 그리고 분포

_17.1 확률적 프로그램

_17.2 간단한 확률 계산하기

_17.3 추론 통계

_17.4 분포

__17.4.1 확률 분포

__17.4.2 정규 분포

__17.4.3 연속 균등 분포와 이산 균등 분포

__17.4.4 이항 분포와 다항 분포

__17.4.5 지수 분포와 기하 분포

__17.4.6 벤포드 분포

_17.5 해싱과 충돌

_17.6 잘하는 팀이 얼마나 자주 이기나요?

 

18장 몬테카를로 시뮬레이션

_18.1 파스칼의 문제

_18.2 크랩스 게임 

_18.3 테이블 룩업을 사용해 성능 높이기

_18.4 π 찾기

_18.5 시뮬레이션 모델에 관한 맺음말

 

19장 샘플링과 신뢰도

_19.1 보스턴 마라톤 데이터 샘플링

_19.2 중심 극한 정리

_19.3 평균의 표준 오차

 

20장 실험 데이터 이해하기

_20.1 스프링 운동

__20.1.1 선형 회귀를 사용해 최적의 직선 찾기

_20.2 발사체 운동

__20.2.1 결정 계수

__20.2.2 계산 모델 사용하기

_20.3 지수적으로 분포된 데이터 다루기

_20.4 이론이 없을 때

 

21장 무작위 시험과 가설 검정

_21.1 유의성 검증하기

_21.2 P 값을 주의하세요

_21.3 단측 1표본 검정

_21.4 유의한가요? 유의하지 않은가요?

_21.5 표본 크기는?

_21.6 다중 가설

_21.7 조건부 확률과 베이즈 통계

__21.7.1 조건부 확률

__21.7.2 베이즈 정리

 

22장 거짓말, 새빨간 거짓말 그리고 통계학

_22.1 가비지 인 가비지 아웃(GIGO)

_22.2 테스트의 불완전성

_22.3 오해하기 쉬운 그래프

_22.4 Cum Hoc Ergo Propter Hoc

_22.5 전체를 알려주지 않는 통계 측정

_22.6 샘플링 편향

_22.7 맥락의 중요성

_22.8 사과와 오렌지 비교하기

_22.9 체리 피킹

_22.10 주의해야 할 외삽

_22.11 텍사스 명사수의 오류

_22.12 혼동하기 쉬운 백분율

_22.13 회귀 오류

_22.14 통계적으로 유의한 차이가 실제로 유의하지 않을 수 있음

_22.15 주의 사항

 

<7부> 머신러닝


23장 판다스로 데이터 탐험하기

_23.1 데이터프레임과 CSV 파일

_23.2 시리즈와 데이터프레임 만들기

_23.3 열과 행 선택하기

__23.3.1 loc와 iloc를 사용해 선택하기

__23.3.2 그룹 선택하기

__23.3.3 내용으로 선택하기

_23.4 데이터프레임 조작하기

_23.5 확장 예제

__23.5.1 온도 데이터

__23.5.2 화석 연료 소비량

 

24장 머신러닝 간략히 살펴보기

_24.1 특성 벡터

_24.2 거리 지표

 

25장 군집

_25.1 Cluster 클래스

_25.2 k 평균 군집

_25.3 가상의 예제

_25.4 실전 예제

 

26장 분류

_26.1 분류기 평가하기

_26.2 마라톤 선수의 성별 예측하기

_26.3 K 최근접 이웃

_26.4 회귀 기반 분류기

_26.5 타이타닉 생존자 예측하기

_26.6 마무리

한 권으로 모든 문제를 해결하는 컴퓨터 과학 책은 존재하지 않습니다. 하지만 딱 한 권만 골라야 한다면 이 책이 좋은 선택지가 될 겁니다.

해럴드 에이블슨, 『자바스크립트로 배우는 SICP』, 『컴퓨터 프로그램의 구조와 해석』 저자

 

존 구태그는 스승으로서 뛰어나며, 동시에 작가로서도 뛰어납니다. 이 책은 파이썬을 소개하지만 '파이썬 책'이 아니고, 프로그래밍을 알려주지만 '프로그래밍 책'도 아닙니다. 계산 문제와 데이터 과학 문제를 파이썬으로 해결하는 엄격하면서 읽기 쉬운 입문서입니다.

에드 라조브스카, 워싱턴대학교 컴퓨터 과학과 교수

코딩이란 건 누구나 마음만 먹으면 비교적 쉽게 배울 수 있다. 일종의 언어를 배우는 것과 비슷한데, 컴퓨터가 어떤 연산이나 처리를 하기 위해 우리가 컴퓨터가 이해하는 언어로 쓰는 것으로 이해하면 쉽다. 하지만 우리가 영어 단어를 많이 아는 것과, 외국에서 영어를 유창하게 쓰는 것에 차이가 있듯이 코딩도 단순히 공부만 열심히 해서 그것을 잘 한다고 할 수는 없다. 책 <코딩 뇌를 깨우는 파이썬>은 단순히 파이썬의 문법을 배우는 것이 아니라, 문제 해결에 파이썬을 어떻게 활용해야 하는지 알려주고 생각할 수 있게끔 함으로써 코딩을 적시적소에 활용할 수 있도록 돕는다.

 

책의 소개를 보면 MIT학부 과정을 가르치면서 준비한 강의 노트라는 내용이 있는데, 파이썬을 모르는 사람을 대상으로 하고 있고, 코딩 그 자체보다는 코딩으로 문제를 해결하거나 데이터를 이해하고 모델링하는 방법을 주로 다룬다.

 

책은 26개의 장으로 구성되어 있다. 책은 비교적 얇은 편이지만 폭 넓은 주제들을 다루고 있는데, 책의 저자도 이 책에선 깊이보다는 폭넓은 분야를 다루는 것에 중점을 두었다고 한다.

 

책의 전반부는 파이썬에 대한 소개와 파이썬 프로그래밍에 필요한 기본적인 지식들을 다룬다. 중반부는 코딩을 효율적으로 하는 방법에 대해 다루는데, 그냥 지식만 알려주고 끝나는 것이 아니라 어떤 문제를 해결하는 방식을 다루는 예제와 중간중간 연습문제처럼 뇌풀기 문제가 나와 배운 내용을 가지고 문제를 해결하는 방법을 터득하도록 한다.

 

전반부에서 터득한 내용을 기반으로 중후반부에서는 현실세계의 문제를 푸는 방법들을 배운다. 그러면서 알고리즘 복잡도와 그래프 출력, 배낭 문제, 피보나치 수열, 확률, 몬테카를로 시뮬레이션 등 마치 강의를 듣는 것처럼 매 장마다 새로운 주제들을 마주할 수 있다.

 

<코딩 뇌를 깨우는 파이썬>의 장점은 폭 넓은 분야를 다룬다는 점이다. 코딩을 모르던 사람이라도 이 책을 접하는데 어려움이 없는데, 폭 넓은 분야를 다룬다는게 그만큼 배경지식을 요구하기도 하기 때문에 단점이 되기도 한다. 여느 코딩 서적처럼 예제를 엄청 풀어서 설명해주고 천천히 나아가는 것이 아니라, 비교적 얇은 책 한권에 파이썬으로 다룰 수 있는 계산 전반을 다루기 때문에 하나하나 곱씹어가면서 읽어야 한다.

 

책의 내용이 친절하진 않지만 결국 코딩은 코드로 동작된다. 예제를 따라하면서 충분히 동작원리에 대해, 그리고 활용법에 대해 이해를 할 수 있다.

 

다행인 것은 유튜브에 <코딩 뇌를 깨우는 파이썬>에 대한 강의가 존재한다는 점이다. 저자가 아니라 역자가 강의를 올려두었는데, 해설을 보면서 따라가다보면 이해하는게 훨씬 수월해진다.

 

유튜브 채널 주소는 아래와 같다.

 

https://www.youtube.com/watch?v=Wkgk2hGrTSA&list=PLJN246lAkhQgfGrerljqqmBhqfhrOniI-

 

코딩의 활용 범위는 무궁무진하다. 하지만 결국 그것을 다루는 것은 인간이기 때문에, 원하는 결과를 도출하거나 답을 얻어내려면 무엇을 어떻게 할 수 있는지 알아야만 한다. 그걸 보통 프로그래밍에서는 논리적 사고나 문제를 해결하는 능력이라고 하는데, 이는 이 책에서 목표로 하고 있는 바이기도 하다.

 

요즘이라고 말하기도 민망할 정도로 언젠가부터 코딩에 대한 관심이 뜨거워졌다. 다만 누구나 한 번쯤은 코딩을 배우다가도 영어처럼 활용하지 못하고 서서히 잊어버렸던 것처럼 코딩은 단순히 배우는 것에서 그치는게 아니라 활용해야만 의미와 가치가 있다고 볼 수 있다. 그런 점에서 <코딩 뇌를 깨우는 파이썬>은 제목 그대로 파이썬으로 코딩 뇌를 깨우는데 도움을 주고, 어떤 것까지 할 수 있는지 알려주는 계기가 될 수 있다.



지은이 존 V. 스태그는 MIT의 컴퓨터과학 및 인공지능 연구소에서 의료 문제에 적용할 수 있는 고급 머신러닝 및 컴퓨터 비전 기술 연구를 하고 있다.

최근 기술에 관한 서적은 지은이를 살펴보게 된다.

제대로 알고 쓴 것인지 이 기술을 활용하는 사람인지 파악하기 위해서.

옮긴이는 박해선. 이제 뭐 익숙한 이름이 되었다.

머신러닝, 데이터 분석 관련 책은 거의 이 분 손을 거친다고 보면 될 듯.

 

 

표지가 예쁘네.

표지가 예쁘면 일단 한 번 더 쳐다보게 되는 법.

MIT 컴퓨터 과학 개론 강의 교재라니 신뢰도 업!

20230926_153918.jpg

 

채도가 빠진 듯한 색감의 디자인.

책 두께 보소.

무려 616페이지.

 

개론 교재로 사용되는 만큼 차근차근 천천히 진행된다.

또한 쓸데없는(?) 이야기도 많다.

지루해하지 않게 신경 쓴 것이려나?

 

친절한 느낌의 말투.

기본적인 의문이 들법한 내용들도 설명해준다.

괜히 두꺼운 게 아니다.

 

20230926_154050.jpg

 

 

뉴턴 역학에 양자 역학이 다 무어냐.

그래서 더 재미있게 이 책을 따라갈 수 있었던 것 같다.

이 책만 차근차근 따라가고, 혼자 복습만 한다면 재미있게 파이썬을 습득할 수 있을 것 같다.

중간 중간 등장하는 뇌풀기 문제는 스스로 고민하게 만들어 좀 더 공부할 수 있게 만든다.

타이타닉 생존자 예측하기와 같은 재미있는 문제로 호기심을 자극한다.

 

 

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."





파이썬은 일반적인 프로그래밍에 사용될 뿐만 아니라, 웹 사이트 개발, 그래픽, 이미지/영상 인식, 데이터 분석, 머신러닝, AI에 이르기까지 다양한 IT 분야에서 사용 가능한 언어입니다. 기존 객체지향 언어에 비해 배우기도 쉽지만 소프트웨어 개발에 공통 필수인 수많은 기능들의 라이브러리가 많아서 원하는 애플리케이션을 쉽고 빠르게 만들 수 있는 장점이 있습니다. C언어나 Java에 비교하여 초보자가 이해하기 어려운 포인터나 가비지 컬렉션, 메모리 관리 등이 필요 없기 때문에 코딩을 처음 배우는 분들에게도 추천할 만한 언어입니다.

image0.jpeg

 

 

초보 프로그래머를 거치면서 깊이 있게 프로그래밍 공부를 한 사람은 초보 개발자가 어떤 부분에서 막히는지를 잘 이해하고 그것을 기억할 수 있습니다. 이 책의 본 저자는 많은 도서를 집필한 유명한 분인데 아마도 본인의 그런 시절의 경험을 지금도 기억하고 있는듯한 것이 책을 읽을수록 느낀 것은 파이썬을 잘 알고 싶은 재능 있는, 그러나 배운 적 없는 초보 개발자들을 위한 책이라는 배려가 곳곳에 묻어있다는 점입니다.

1부에서는 기본적인 파이썬 소개와 함께 간단한 수치 프로그램이 등장합니다. 초보 개발자라고 무난히 따라 할 수 있는 수준이며 이해가 어려운 경우 함께 소개된 동영상 강의가 도움이 될 것입니다.

2부의 제목은 효율적으로 프로그래밍하기인데 함수의 선언과 유효범위, 구조적 타입, 재귀/전역 변수를 소개합니다. 3부 탄탄한 프로그램 만들기에서는 파이썬에서 매우 중요한 모듈화를 다루고 테스트 및 디버깅 방법이 등장합니다. 10장 클래스와 객체지향 프로그래밍에서는 파이썬의 클래스를 통한 객체지향 기법과 상속, 캡슐화, 은닉 등 객체지향에서 필요한 모든 것을 다루고 있습니다.

4부는 마치 알고리즘 문제 혹은 기업의 코딩 테스트와 같은 내용을 다루고 있어서 단시간 내 코딩 테스트를 파이썬으로 준비해야 하는 취준생이나 자바와 같은 다른 언어만 다루었던 개발자가 파이썬을 좀 더 실무적으로 다룰 수 있도록 도와줍니다.

5부는 4부의 연장선에 있으며 다양한 현실 시나리오를 통해 앞에서 배운 파이썬 문법과 함수, 쓰임새를 확인하고 복습할 수 있는 탄탄한 내용을 제공합니다. 후반부에서 다루는 데이터 분석 관련 챕터와 판다스를 활용한 머신러닝 내용은 파이썬이 왜 인기가 있으며 단순 언어가 아닌 도구로서의 활용 방법을 배울 수 있는 고난도의 내용이 포함됩니다.

특히 이 책을 추천하고 싶은 분들은 파이썬의 기본적인 문법은 여러 번 배웠으나 실무에서 써보지 못한 "실전"이 없는 파이썬 개발자들입니다. 그런 분들에게 바이블 성격의 파이썬 문법책을 보라고 하는 것은 괴로운 기억을 다시 생각하라는 것이고, 차라리 실전 예제들을 통해 잊었던 문법들을 상기하며 파이썬을 이렇게 활용하는구나 떠올리는 것이 훨씬 좋은 방법일 수 있기 때문입니다.

특히 수학의 내용이 포함된 후반부의 알고리즘 시나리오에 대해 파이썬으로 접근하는 방식은 파이썬 자체를 배우려는 개발자뿐만 아니라 코딩 테스트, 알고리즘, 자료구조에 깊은 이해를 파이썬을 통해 해결할 수 있는 내용을 제공하므로 좀 더 깊이 있는 파이썬 학습을 원하는 개발자들에게 추천합니다.

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."



 

[소개]

 

이 책의 원제는 "Introduction to Computation and Programming Using Python"이다. 

 

그 원서의 제목과 같이, 이 책은 컴퓨터 과학 및 프로그래밍 초보자를 위한 입문서이다.

 

파이썬을 사용하여 컴퓨터 과학의 기본 개념과 프로그래밍 기술을 알려준다. 

 

 

[저자] 

 

이 책은 MIT의 컴퓨터 과학 교수인 John V. Guttag가 썼다. 

 

세계 최고의 대학 교수 중 한 명이 저술한 도서이니만큼, 체계적이고 진지하게 내용이 구성되어 있다. 

 

 

[장점]

 

검증된 도서 - 이 책은 이미 검증된 유명 컴퓨터 과학 입문서 중 하나이다. 이 책의 내용의 기반이 된 공개 MIT 강좌(MOOC)가 워낙 유명해서 인터넷에 널리 알려지게 되었다. 

 

종합적인 내용 - 다양한 주제를 다루고 있어 Python 프로그래밍의 다양한 측면을 이해할 수 있다.

 

컴퓨터 과학 기초 - 이 책은 파이썬을 사용하여 컴퓨터 과학의 기본 개념을 알려준다. 컴퓨터 과학을 배우고자 하는 사람들에게 유용하다.

 

알고리즘과 데이터 구조 소개 - 책은 알고리즘과 데이터 구조에 대한 개념을 강조하며, 이를 파이썬을 통해 구현하는 방법을 설명하다.

 

데이터 과학 - 기존에도 내용이 좋았지만, 특히 이번 번역판의 기본이 된 원서 3판에서는 numpy와 pandas 등 데이터 과학의 기본 라이브러리에 대한 소개를 충실히 담고 있다 따라서 이 책 한 권만으로도 훌륭한 데이터 과학 입문이 가능하다. 

 

 

[단점]

 

많은 분량 - 600페이지 분량은 초보자에게는 다소 많을 수 있고, 학습에 시간이 많이 소요될 수 있다.

 

분량과 내용의 밀도 - 상당한 분량과 다양한 범위의 내용을 담고 있고, 각 장의 구성도 부분부분 밀도있게 구성되었다. 따라서 학습 시간과 노력이 많이 필요할 것으로 보인다. 

 

왕초보는 무리 - 이 책은 컴퓨터 과학 분야에 대한 이해와  파이썬을 사용한 프로그래밍을 동시에 학습하고자 하는 독자에게 적합하다. 하지만 코딩에 완전히 처음 입문하거나 IT적인 배경이 약한 초보자에게는 다소 어려울 수 있으며, 상당한 학습 시간과 노력을 투자해야 하다. 

 

 

[결론]

 

전체적으로 파이썬을 실무적으로 잘 하고 싶은 사람이 보는 책이라기보다는, 파이썬을 이용해서 컴퓨터 과학을 제대로 배우고, 파이썬으로 할 수 있는 다양한 측면의 일을 제대로 둘러보고 싶은 사람들에게 유용하다. 

 

기본적으로 저자가 교수님이어서 그런지 내용 구성과 용어 사용이 매우 진지하다.

 

이 책은 파이썬/데이터과학 분야에서 그 이름 세 자만으로도 구입을 결정하게 되는 박해선 역자님이 번역하셨다. 책 내용과 번역에 대한 품질은 무척 믿을만하다. 

 

심지어 역자분의 동영상 강의까지 제공되기 때문에, 오히려 원서에서보다 초보자들이 접근하기 좋아졌다. 

 

진지하게, 근성을 갖고 도전한다면 엄청나게 많은 것을 얻어갈 수 있을만한 책이다. 

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

코딩 뇌를 깨우는 파이썬은 파이썬의 기초부터 머신러닝까지 다루는 컴퓨터 과학 입문서입니다. 이 책은 MIT의 강의를 바탕으로 만들어졌으며, 문제 해결 능력을 키우는 방법을 알려줍니다. 이 책을 읽으면서 파이썬을 통해 다양한 문제에 접근하고 해결하는 방법을 배울 수 있습니다.
1. 책의 구성과 특징
2. 파이썬 기초와 컴퓨팅 사고
3. 데이터 분석과 시각화
4. 머신러닝의 기초와 응용
5. 책의 장점과 단점
6. 도움 되는 다른 내용

 

 

 

[책의 구성과 특징]

이 책은 4부로 나뉘어져 있습니다.

  • 첫 번째 부분에서는 파이썬의 기본 문법과 자료형, 함수, 반복문, 조건문, 재귀 등을 소개합니다.
  • 두 번째 부분에서는 컴퓨팅 사고와 알고리즘에 대해 설명하며, 탐색, 정렬, 해시테이블, 스택, 큐, 트리 등의 자료구조와 알고리즘을 다룹니다.
  • 세 번째 부분에서는 데이터 분석과 시각화에 관해 배우며, 넘파이, 맷플롯립, 판다스 등의 라이브러리를 사용하여 데이터를 모델링하고 해석합니다.
  • 네 번째 부분에서는 머신러닝의 기초와 응용에 대해 알아보며, 사이킷런을 이용하여 분류, 회귀, 군집화 등의 머신러닝 기법을 실습합니다.
  • 각 장에는 뇌풀기 문제가 있어서 학습한 내용을 복습하고 실제 문제에 적용해 볼 수 있습니다.

 

[파이썬 기초와 컴퓨팅 사고]

파이썬 IDE 설치하기 (아나콘다 시작 윈도 / 스파이더 윈도)


이 책은 프로그래밍 경험이나 지식이 없는 분들을 위해 파이썬의 기본 개념과 문법을 친절하게 설명합니다.

파이썬은 간결하고 직관적인 문법으로 초보자가 배우기 쉬운 프로그래밍 언어입니다.

이 책에서는 파이썬을 사용하여 다양한 문제를 해결하는 방법을 배울 수 있습니다.

 

예를 들어, 재귀 함수를 사용하여 팩토리얼이나 피보나치수열을 계산하거나, 반복문과 조건문을 사용하여 복리 계산기나 암호 해독기를 만들 수 있습니다.

 

이 책은 단순히 파이썬 문법을 암기하는 것이 아니라, 컴퓨팅 사고를 훈련하는 것에 중점을 두고 있습니다.

컴퓨팅 사고란 컴퓨터가 이해할 수 있는 방식으로 문제를 정의하고 분해하고 추상화하고 일반화하는 과정입니다.

이 책에서는 컴퓨팅 사고를 통해 문제 해결 능력을 키울 수 있습니다.

 

0196.리뷰.한빛미디어_07.코딩-뇌를깨우는-파이썬.2.3.PNG

 

0196.리뷰.한빛미디어_07.코딩-뇌를깨우는-파이썬.2.4.PNG

 

0196.리뷰.한빛미디어_07.코딩-뇌를깨우는-파이썬.2.5.PNG

 

 

 

[데이터 분석과 시각화]

이분 검색을 사용해 밑이 2인 로그 추정하기

 

 

스택방식 사용설명 예(팬케이크)


이 책은 데이터 과학의 핵심인 데이터 모델링과 해석을 배울 수 있습니다.

 

데이터 과학이란 데이터를 수집하고 정제하고 분석하고 시각화하여 의미 있는 정보를 도출하는 과학입니다.

이 책에서는 파이썬의 다양한 라이브러리를 사용하여 데이터 과학을 실습할 수 있습니다.

 

예를 들어, 넘파이를 사용하여 다차원 배열을 생성하고 조작하거나, 맷플롯립을 사용하여 히스토그램이나 산점도 등의 그래프를 그릴 수 있습니다.

 

또한, 판다스를 사용하여 CSV 파일이나 엑셀 파일 등의 데이터를 읽고 쓰거나, 데이터 프레임을 생성하고 조작하거나, 통계적 분석을 수행할 수 있습니다.

이 책에서는 데이터 분석과 시각화를 통해 데이터에 숨겨진 패턴이나 인사이트를 발견할 수 있습니다.

 

[머신러닝의 기초와 응용]

 

시퀀스 타입에서 사용할 수 있는 공통 연산
시퀀스 타입 비교
문자열 메서드
dict에서 자주 사용되는 연산


이 책은 머신러닝의 기초와 응용에 대해 알아볼 수 있습니다.

 

머신러닝이란 컴퓨터가 데이터로부터 학습하고 예측하고 결정하는 인공지능의 한 분야입니다.

이 책에서는 사이킷런이라는 파이썬 라이브러리를 이용하여 머신러닝을 실습할 수 있습니다.

 

예를 들어, k-최근접 이웃 알고리즘을 사용하여 붓꽃의 종류를 분류하거나, 선형 회귀 모델을 사용하여 집값을 예측하거나, k-평균 알고리즘을 사용하여 고객을 군집화할 수 있습니다.

 

또한, 의사 결정 트리나 서포트 벡터 머신 등의 다른 머신러닝 알고리즘에 대해서도 배울 수 있습니다.

이 책에서는 머신러닝을 통해 데이터로부터 가치 있는 지식을 추출할 수 있습니다.

wwc에 저장된 판다스 데이터프레임 객체
도시별 온도차이 코드
도시별 온도차이 결과

 

 

[책의 장단점 및 평가]


- 단점

이 책은 컴퓨터 과학 입문서로서 기본적인 내용만 다루기 때문에, 보다 심화된 내용을 원하는 분들에게는 부족할 수 있습니다.

이 책은 파이썬 3 버전을 기준으로 작성되었기 때문에, 이 책은 파이썬 3 버전을 기준으로 작성되었기 때문에, 파이썬 2 버전을 사용하는 분들은 일부 문법이나 기능이 다를 수 있습니다.

이 책은 파이썬의 표준 라이브러리 외에도 넘파이, 맷플롯립, 판다스, 사이킷런 등의 외부 라이브러리를 사용하기 때문에, 이들을 설치하고 사용하는 방법에 대한 설명이 부족할 수 있습니다.

이 책은 데이터 분석과 머신러닝의 기본적인 개념과 원리에 대해서는 간략하게 소개하고, 주로 실습 위주로 진행하기 때문에, 보다 깊이 있는 이론적 배경을 원하는 분들은 다른 참고 자료를 필요로 할 수 있습니다.

 

- 장점

이 책은 파이썬의 기초부터 머신러닝까지 다루는 컴퓨터 과학 입문서로, 프로그래밍 경험이나 지식이 없는 분들도 쉽게 따라 할 수 있습니다.

이 책은 단순히 파이썬 문법을 암기하는 것이 아니라, 컴퓨팅 사고와 문제 해결 능력을 훈련하는 것에 중점을 두고 있습니다.

이 책은 각 장에 마련된 뇌풀기 문제를 통해 실용적인 주제를 살펴보며 프로그래밍 능력을 키울 수 있습니다.

이 책은 파이썬의 다양한 라이브러리를 사용하여 데이터 분석과 시각화, 머신러닝 등의 현대적인 주제도 다룹니다.

 

 

 

코딩 뇌를 깨우는 파이썬 이 책을 읽고 느낀 점은 파이썬의 기초부터 머신러닝까지 다루는 컴퓨터 과학 입문서로, 프로그래밍에 관심이 있는 분들께 적극 추천드립니다. 이 책은 파이썬을 통해 컴퓨팅 사고와 문제 해결 능력을 훈련하고, 데이터 분석과 시각화, 머신러닝 등의 현대적인 주제를 실습할 수 있습니다. 이 책은 단순히 파이썬 문법을 암기하는 것이 아니라, 파이썬으로 코딩하는 즐거움과 만족감을 느낄 수 있습니다. 이 책을 읽으면서 파이썬으로 코딩 뇌를 깨우세요!


이상으로 해당 도서에 대한 리뷰를 마치겠습니다.

※ 해당 서평은 한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

내가 MOOC를 열심히 듣기 시작한 것은 2014년부터였다. 그때 대표적으로 활용했던 사이트가 coursera랑 edX였었는데, Stanford 대학교 강의가 자주 열리는 coursera와는 다르게 edX에는 MIT 강의가 무료로 열리곤 했었다. (예전에는 강의 수강 후 수료만 하면 인증서를 주곤했었는데, 최근에는 다 유료화되면서 바뀌었다.))

그때 뭔가 새로운 것을 배워야겠다는 생각에 처음 선택한 주제가 데이터 분석쪽이었고, 그러면서 읽었던 책이 "파이썬 라이브러리를 활용한 데이터 분석"이란 책이었고, 강의는 Introduction to Computational Thinking and Data Science였다. 그중 강의에 대해서 잠깐 소개하자면, 이 강의는 6.00.2x 라는 강의 코드를 가지는, 즉 컴퓨터 관련 과목을 수강하는 사람이 제일 처음 수강하는 과목 중 하나인데, 선수 과목인 Introduction to Computer Science and Programming using Python (6.00.1x)에서 알고리즘 및 데이터 과학쪽인 주제를 더 다루는 과목이다. 실제로 과목을 들어보면 교수가 진짜 알기 쉬운 예제로 이론적인 내용을 설명한다. 과목을 듣는 내내 뭔가 복잡하게 설명하는 것을 본적이 없고, 전혀 모르는 사람이 들어도 재미있게 과제하면서 들을 수 있던 과목이었다. 나도 그때 과제랑 같이 수업을 하면서 많이 배우고 현재 하는 일에 대한 발판을 다졌던 것 같다.

 

 

그때도 이 강의가 책으로 나오면 좋을 거 같다는 생각을 했었는데, 21년에 나온 버전이 번역되어 출간된 것을 이제야 읽어보았다.

20230924_225107.jpg

 

 

책에서 다루는 내용은 앞에서 소개했던 6.00.1x와 6.00.2x에 대한 내용을 모두 담고 있다. 다시 말해서 파이썬에 대한 기초 문법 소개를 하면서 후반부에는 알고리즘과 데이터분석, 더 나아가 머신러닝과 관련된 내용을 담고 있다. 책의 수준은 입문에 해당하는 내용이고, 뒷부분에서 머신러닝 내용을 담고 있긴 하지만, 이 내용 보다는 사실 이 머신러닝 내용을 이해하는데 필요한 선수 지식을 설명하는데 상당수의 분량을 할애하고 있다. 그리고 서문에도 언급되어 있는 내용이지만 책의 분량은 2학기의 학과 수업 내용을 커버하고 있기 때문에 책 분량 역시 상당하다. 그래서 뭔가 알고리즘이나 데이터 분석, 머신러닝에 대한 지식이 있는 사람보다는 처음 컴퓨터 과학을 접하고, 파이썬 3를 처음 공부하는 사람이 주요 독자가 되겠다. 그렇다고 뭔가 배웠던 내용을 복습하고 싶은 사람에게도 추천할만한 것이 책에서 담고 있는 내용이 쉬운 예제를 대상으로 설명을 하고는 있지만 설명이 쉽게 되어 있다는 것이지 주제가 너무 쉽다는 것은 아니다. 좀 다르게 표현하자면 뼈가 있다고 할까.. 그만큼 내용에 대한 설명이 자세하면서 쉽게 설명되어 있기에 복습하려는 사람에게도 참고할 부분이 많다. 더불어 책의 역자분께서 해당 강의에 대한 해설을 따로 찍어서 같이 공유를 해준 부분은 처음 접하는 사람에게는 좋은 길라잡이가 될 만하다. 

개인적으로 생각했을 때 이 책의 효과는 MIT에서 제공하는 강의와 함께 봤을 때 극대화된다고 생각한다. 그만큼 강의의 퀄리티나 강의에서 제공되는 과제의 내용 자체가 어떤 주제를 잘 이해할 수 있게끔 도와주는 보조수단으로써 좋았다. 물론 영어 강의라서 접근이 어려운 부분이 있겠지만, 그래도 좋은 한글 번역책이 나온만큼 꼭 강의도 같이 보면서 내용을 배울 수 있기를 추천한다.

 

챗GTP가 날린 강력한 핵펀치로 인해, 다들 인공지능 시대가 다가왔음을 느끼고 있을 것이다. 금융, 제조, 의료, 교통, 군사 등 많은 영역에 AI 기술이 더욱더 폭넓게 쓰일 것이다. 따라서 이쪽 분야에 관심을 가지고 있다면, 인공지능을 다루기 위해, 프로그래밍 공부를 해둘 필요가 있다. 더욱이 지금 나와 있는 인공지능 책 대부분이 파이썬이라는 프로그래밍 언어를 사용해서 설명하고 있다 보니, 파이썬은 필수로 익혀야 한다.

 

그런 면에 있어서 MIT 교수 존 V. 구태그의 '코딩 뇌를 깨우는 파이썬'은 인공지능과 파이썬이란 두 마리 토끼를 한꺼번에 잡기에 좋은 책이다. 게다가 이 책은 단순히 프로그램 문법이나 인공지능 지식만 익히는 것이 아니라, 프로그래밍하는 데 있어 가장 중요한 문제 해결 능력을 키워주는데도 안성맞춤이다.

 

 

요즘은 초등학교 때부터 코딩 교육을 많이 하는데, 사실 프로그램 문법이나 코딩 자체는 중요한 부분이 아니다. 그것보다는 주어진 문제를 논리적 사고와 함께 효율적, 창조적으로 해결하는 능력을 키우는 것이 핵심이다. 이런 문제 해결 능력을 키우기 위해 '코딩 뇌를 깨우는 파이썬'에서는 문제 해결에 계산적으로 접근하는 방법을 선택하고 있다. 헤론의 제곱근 계산을 시작으로 근삿값 찾기, 이분 검색, 뉴턴-랍슨 방법, 피보나치 수열과 같이 수학적 사고를 필요로 한 예제들을 주로 이용한다. 이걸 비교도 해보고, 차이점 또는 개선점도 알아보며 응용력, 해결 능력을 키우는 것이다.

 

인공지능을 이해하기 위해선 많은 수학 지식이 필요하다. 앞에서 말한 근삿값 처리 방법도 알 필요가 있고, 각종 알고리즘, 확률과 통계, 그래프 처리에 대한 지식도 많이 알고 있어야 한다. '코딩 뇌를 깨우는 파이썬'에서는 기초 수준에서 이런 것들을 대부분 다루고 있다.

 

 

3부까지는 주로 파이썬 문법적인 것을 주로 다루는데, 4부부터는 문법보다는 실제 프로그래밍 또는 인공지능, 머신러닝에 도움이 되는 내용들을 본격적으로 다룬다. 4부의 알고리즘은 파이썬뿐만 아니라, 모든 프로그래밍에서 속도와 효율, 최적화 관련해서 매우 중요한 부분이므로 철저히 이해하는 것이 좋다. 한번 잘 이해해두면, 다른 책을 볼 때 많은 시간을 절약할 수 있다.

 

그래프 이론, 동적계획법을 통해 최적화하는 방법도 배우고, 랜덤워크로는 시뮬레이션 모델링을 익힌다.

 

 

프로그래밍에 있어 데이터 처리는 필수다. 빅데이터나 인공지능 기술에서는 더욱더 그렇다. 그래서 '코딩 뇌를 깨우는 파이썬'에서는 이것을 비중 있게 다룬다. 확률, 분산, 분포, 표준편차, 추론, 오차, 정규분포, 베이즈 같은 다양한 통계 수학이 나온다. 그래프 처리에 관한 것도 여기서 많이 다룬다. 재미있는 건, 통계의 오류, 통계의 거짓말 같은 것도 다루고 있다는 것이다. 객관적이고 중심을 잃지 않는 시각을 가지고 프로그래밍하라는 조언을 담고 있다.

 

 

머신러닝 파트에서는 판다스에 대한 설명이 먼저 나온다. 여기서는 파이썬 입문서인 만큼 기본적인 기능 정도만 살펴보고 있다. 머신러닝 역시도 개념을 잡는 정도로만 다룬다. 그러나 '코딩 뇌를 깨우는 파이썬'에서 배운 데이터 처리나 각종 수학 지식들은 꼭 필요한 기본 지식이므로 보다 깊이 있는 인공지능 서적을 보는데 큰 도움이 될 것이다.

 

이 책은 서두에 저자가 밝혔듯이 MIT 학부 과정 강의노트에서 시작된 교재 성격이 강하다. 그렇지만 도표가 많고, 함축된 표현의 XX개론 그런 것과는 다르게 설명 위주의 흐름으로 되어 있다. 작동 개념이나 컴퓨터 관련 역사 그런 것들이 교재 느낌이 들게는 하지만, 그렇다고 그것이 불필요한 것은 아니다. 입문자 입장에서는 오히려 이해를 돕기 위해 필요한 부분이라 생각한다.

 

 

본문 아래에 나오는 주석도 컴퓨터 관련 다양한 지식을 쌓는데 매우 유용하다. 게다가 옮긴이가 추가로 보강 설명하고 있는 부분이 많아서, 내용을 더 쉽게 이해할 수 있어 좋았다.

 

 

곳곳에서 등장하는 '뇌풀기 문제'는 보통 각 장이 끝나면, 나오는 연습문제가 본문에 흩어져 나온 거라 생각하면 된다. 책 진도 속도 신경 쓰지 않고, 하나씩 풀어 보는 것이 좋다. 본문을 제대로 이해하고, 오래 기억하는데 큰 보탬이 된다.

 

 

'코딩 뇌를 깨우는 파이썬'에 나오는 각종 예제 코드들은 주제 자체가 실무적인 측면이 강하다. 모기지 계산, 전염병 확산 시뮬레이션처럼 국제적 이슈 같은 것들도 있고, 탄성 계산, 발사체 운동, 온도 데이터 같은 과학적인 것, 월드시리즈, 보스턴 마라톤, 화석 연료 소비량 같은 사회, 문화 등 주제가 다채롭다. 이런 예제를 연습함으로써, 비슷한 주제를 프로그래밍 할 수 있는 응용력을 기른다 생각한다. 뇌풀기 문제에도 이런 것들이 많이 등장한다.

 

단지 문법 설명을 위한 전혀 의미 없는 예제보다는 이렇게 응용력을 기를 수 있는 예제들이 프로그램 입문자에게는 제대로 된 기초 체력 트레이닝이 될 것이다.

 

 

그리고 이 책은 온라인 공개강좌 MOOC로도 제공되고 있고, 유튜브에 박해선 번역자의 강의도 올려져 있다. 이해 안 되는 부분을 강의를 통해 보강할 수 있다.  이 역시 파이썬을 입문하는 사람들에게는 도움 되는 좋은 요소다.

 

 

본 서평에 수학적인 부분을 많이 강조했는데, 이는 오랜 시간 개발자로 일하며 느낀 내 생각이 많이 포함된 것이다. 수학적 이해도가 낮고, 수학적 접근을 못하면, 개발에 많은 어려움이 발생한다. 성능 면에서 좋은 프로그램을 짜기도 힘들다. 주어진 것 밖에 못하는 하급 코더 취급받기 십상이다. 인공지능도 단순 활용은 할 수 있을지 모르지만, 그 이상은 기대하기 힘들다.

 

따라서 처음부터 수학적 문제 해결 습관을 배우는 것이 참 중요하다 생각한다. '코딩 뇌를 깨우는 파이썬'은 파이썬과 함께 머신러닝도 다루고 있으며, 프로그래머로서 필요한 사고방식과 수학적 응용력을 키우는데 포커스가 잘 맞춰진 책이다. 프로그래밍 언어 종류를 떠나 코딩 첫걸음을 제대로 떼는데 좋은 교재가 되어 줄 것이다.


 

정말 초보자를 위한, 코딩 입문서는 없을까?

 

데이터과학을 공부하면서 파이썬 관련 책과 강의를 많이 듣고 블로그에 개발관련 내용도 많이 남기고 있어요. 알고리즘관련한 내용, 데이터 분석에 관한 내용, 머신러닝에 관한 내용을 함께 볼 수 있는 책이 없을까 하는 아쉬움이 언제나 따라오더라고요. 아무래도 앞서 언급한 분야에 대한 책들은 컴퓨터공학을 위한 전문서적인 경우가 많았기에 입문자를 대상으로 하기보다, 기본적인 개발역량을 갖춘 개발자를 위한 레벨업 교재라는 느낌을 많이 받았기 때문이에요.

 

코딩 뇌를 깨우는 파이썬

 

코딩 뇌를 깨우는 파이썬을 살펴보면서 그동안 제가 찾고 있는 책이라는 느낌을 많이 받았어요. 대부분의 코딩관련 서적들은 개발언어에 대한 내용, 문법과 응용에 대한 내용이 주를 이루거든요. 그런데 코딩에 입문해서 컴퓨팅 사고를 이해하지 못하는 사람들에게 문법부터 배우는 것은 고통스러운 과정이라는 생각이 들어요.

 

 

 

알고리즘, 데이터 분석, 머신러닝을 한권에 담았어요.

 

 

 

 

코딩 뇌를 깨우는 파이썬은 MIT 컴퓨터과학개론 강의교재로, 프로그래밍 경험이나 지식이 없는 분들에게 파이썬을 활용한 데이터과학분야에 대한 전반적인 내용을 소개하는 진정한 의미의 입문서라고 할 수 있어요. 파이썬 라이브러리 맷플롯립, 판다스, 사이킷런을 이용해서 파이썬 데이터분석과 데이터 시각화 그리고 머신러닝에 이르기까지 프로그램을 구성하고 유용한 알고리즘을 활용하는 방법들을 한권으로 배우실 수 있어요.

 

코딩 뇌를 깨우는 파이썬이라는 이름에 맞게, 교재에 수록된 문제를 해결하는 과정에서 자연스럽게 컴퓨팅 사고방식을 배우고 체화할 수 있었는데요. 파이썬 독학이 어려워서 고민중이셨다면, 코딩 뇌를 깨우는 파이썬 독학책으로 다시 공부를 시작해보시면 좋을 것 같아요.


이번에 리뷰할 서적은 한빛출판사에서 출판된 "코딩 뇌를 깨우는 파이썬" 입니다.

" 문제해결 능력을 키우는 컴퓨팅사고 부터 알고리즘, 데이터분석, 러닝머신까지" 라고 설명하고 있는 이 도서는 문법을 배우는 입문서에서 진화하여 

프로그래밍으로 문제를 해결할 수 있는 능력과 사고력을 키우도록 도와줄 수 있도록 구성되어 있습니다.

 

도서는 616페이지를 할애하여, 파이썬의 기본적인 소개뿐만 아니라, 파이썬으로 뇌로 생각하는것을 프로그램화 할 수 있도록 뇌풀기 문제를 통하여 학습하고 있습니다.

 

목차와 간략히 설명한 내용은 다음과 같습니다.

 

목차

1부 프로그래밍 시작하기

 

1장 시작하기

2장 파이썬 소개

3장 간단한 수치 프로그램

 

- 1부에서는 프로그래밍의 기초를 배우고, 프로그래밍의 개념과 발전사, 프로그래밍에 필요한 언어의 구성요소를 알아봅니다.

그다음으로 이책에서 프로그래밍에 사용할 파이썬의 설치방법과 기본문법을 설명한뒤, 원하는 기능을 구현하는 방법을 소개 하고 있습니다.

 

2부 효율적으로 프로그래밍하기

 

4장 함수, 유효범위, 추상화

5장 구조적인 타입과 가변성

6장 재귀와 전역 변수

 

- 2부에서는 1부에서 다룬 내용만으로 프로그램을 만들 수 있지만, 이보다 더 효율적인 프로그래밍이 가능하고 이러한 효율적인 프로그래밍을 하도록 도와주는 개념들과

데이터 구조에 대해서 소개하고 있습니다.

 

3부 탄탄한 프로그램 만들기

 

7장 모듈과 파일

8장 테스트와 디버깅

9장 예외와 assert

10장 클래스와 객체 지향 프로그래밍

 

- 3부에서는 프로그램을 관리하는 방법을 알아보고, 프로그램을 여러 모듈로 나누어 관리하는 방법부터 오류가 생기는지 확인해 수정하는 방법, 프로그램에 발생하는 에외에 대처하는 법 등을

알아보고 객체지향 프로그래밍 기법을 소개하고 있습니다.

 

4부 프로그래밍으로 문제 풀기

 

11장 알고리즘 복잡도의 간략한 소개

12장 몇 가지 간단한 알고리즘과 데이터 구조

13장 그래프 출력과 클래스

 

- 4부에서는 프로그래밍으로 문제를 해결하는 데 필요한 알고리즘에 관해 알아보고, 먼저 프로그램의 성능을 판단하는 기준인 복잡도를 알아본 뒤 여러 알고리즘의 복잡도를 살펴봅니다.

마지막으로 프로그래밍을 통해 데이터를 이해하는 데 도움을 주는 그래프를 그리는 방법에 대해 소개하고 있습니다.

 

5부 프로그래밍으로 현실 세계 이해하기

 

14장 배낭 문제와 그래프 최적화 문제

15장 동적 계획법

16장 랜덤 워크와 데이터 시각화

 

- 5부에서는 최적화 문제와 동적계획법, 데이터 시각화처럼 프로그래밍을 통해 현실세계를 이해하는 방법에 대해 소개하고 있습니다.

 

6부 데이터 이해하기

 

17장 확률적 프로그램, 확률 그리고 분포

18장 몬테카를로 시뮬레이션

19장 샘플링과 신뢰도

20장 실험 데이터 이해하기

21장 무작위 시험과 가설 검정

22장 거짓말, 새빨간 거짓말 그리고 통계학

 

- 6부에서는 데이터 분석과 확률적 프로그래밍, 시뮬레이션 모델, 확률적 사고와 통계적 사고 등 데이터를 

이해하는데 필요한 통계학 개념에 대해 소개하고 있습니다.

 

7부 머신러닝

 

23장 판다스로 데이터 탐험하기

24장 머신러닝 간략히 살펴보기

25장 군집

26장 분류

 

- 7부에서는 머신러닝에 대해 알아보고, 머신러닝의 기본적인 개념과 기법별로 가장 많이 사용하는 

알고리즘을 직접 프로그래밍하며 머신러닝을 파악하는 방법에 대해 소개하고 있습니다.

 

전반적으로 MIT 컴퓨터과학 개론 강의 교재인 만큼 파이썬으로 할 수 있는 프로그래밍과 더 나아가 요즘 많이 이슈가 되고 있는

머신러닝에 대해서도 학습할 수 있도록 구성되 있어서 알차게 알 수 있는 좋은 서적이라 평하고 싶습니다.

난이도가 조금은 높은편이여서, 조금씩 따라가며 읽어 나가기에 어려움이 있었지만 많은것을 배우고, 한단계 업그레이드 된 느낌이 많이 들었습니다.

파이썬도 배우고 알고리즘과 데이터분석, 머신러닝까지 한번에 알고 싶은 독자들에게 이 책을 추천합니다.

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

이 책은 서두에 저자가 친절하게 목차에 대해서도 안내해주고 있다. 1장~13장까지는 컴퓨터 과학 입문 과장에 들어갈 만한 프로그램 기초 / 파이썬 프로그래밍 언어 / 계산적으로 문제 해결 기술 / 계산 복잡도 등이다.

 

14장에서 26장까지는 컴퓨팅을 사용해 현실 세계를 이해하는데 도움이 되는 방법을 알려준다고 합니다. 컴퓨터 과학 커리큘럼 2학년에 해당하는 과정이라고 하는데.. 곧 2년차를 맞는 제게 딱 맞는 과정이겠지^^?

 

23장에 나오는 판다스의 경우, 현재 실무에서도 쥬피터 노트북을 통해 활용 중이라 조금은 친근하게 그리고 어렵지만 어렵지 않게 접근할 수 있었다 :)

 

그리고 모두가 공통적으로 이야기하는 부분이지만 프로그램밍을 제대로 배우기 위해서는 책을 읽는 것에 그쳐서는 안되고 반드시 스스로 코딩을 해보면 문제 해결 능력을 키워야 한다고 하니 명심하시길 바란다^^

 

인데스 색인까지 포함하면 600페이지가 넘는 책을 낱낱이 소개할 수는 없는 노릇이고, 내가 지금 이 책을 보면서 느끼고 있는 부분에 대해 이야기해 보고자 한다.

 

먼저 이 책은 내가 여태 읽어본 파이썬 및 프로그래밍 관련 책 중에서 가장 친절한 태도로 독자에게 다가온다.

 

무슨 말이냐 하면, 설명도 친절하게 되어 있지만 그에 맞는 예제가 뒤따르며, 그에 그치지 않고 뇌풀기 문제를 통해 그냥 아는척 하고 넘어가지 않고, 이해하고 넘어갈 수 있도록 도와준다.

 

풀어진 예제를 보면서 아~ 하고 넘어가버리면 절대 내 것이 되지 않는다는 것을 나는 너무나도 잘 알고 있다. 왜냐면 내가 매일 아는 척하고 넘어갔다가 똑같은 내용을 다시 찾아보기를 반복하기 때문이다.

 

한 번에 이해가 되지 않기 때문에 문제가 해결되면 넘어가고 다음에 마주했을 때 응용/활용할 수 있게 되면 오케이인데.. 그게 말처럼 쉽지 않다. 파이썬만 보고 있으면 그나마 나을텐데.. SQL문과 쥬피터 pyspark, VUE.js 의 경우 문법도 활용 방법도 조금씩 차이가 있어 나같은 초급자는 매번 오류를 맞이하고 버그를 잡아내기를 반복해야만 하는 실정이다.

 

그런 면에서 이 책은 상당히 친절하다. 설명도 친절한데, 후속 A/S 까지 확실하게 책임져주는 느낌이다. 그러니 목차를 잘 활용하여 내가 필요한 부분을 찾고, 거기에 주어진 예제와 뇌풀기 문제를 최대한 내 것으로 만들어내면 다른 문제와 맞닥드렸을 때도 당황하지 않고 문제를 해결해낼 수 있을 것이다. (제발.. 내 바람이다 ㅎㅎㅎ)

 

어째.. 서평이 아니라 나의 한탄(?) 섞인 토로문이 되어 버린것 같지만 ㅎㅎ 그만큼 이 책에서 나의 부족한 부분을 많이 채울 수 있을 것 같다는 기대가 되기 때문이 아닐까 싶다.

 

개인적으로 살짝 아쉬운 부분은 IDE 가 아나콘다 라는 점.. VsCode 나 Pycharm 이었으면 조금 더 친숙하게 다가갈 수 있었을텐데 하는 점이다. 하지만 책을 드려다보고 있으면 이건 전혀 문제될 부분이 아니니 걱정 붙들고 빡독해보시기 바란다.

시중에 파이썬 기초 입문 책은 많이 나와있습니다. 혹자는 또 파이썬 입문 책이야? 이럴지도 모릅니다.

하지만 이책은 다릅니다. 책의 저자가 MIT 전기공학과 컴퓨터과학부 교수인데요. ACM의 펠로이자 미국 예술 과학 아카데미의 회원이시고 현재는 고급 머신러닝 및 컴퓨터 비전 기술 연구를 이끌고 계십니다.

책의 내용은 실제 MIT 학부생들을 대상으로 가르치면서 준비한 강의 노트에서 출발했다고 합니다.

이 책의 대상은 프로그래밍 경험이 거의 없거나 전혀 없으며 문제 해결에 계산적으로 접근하는 방법을 배고 싶거나 데이터를 탐색하고 모델을 만드는 방법을 배우고 싶은 프로그래밍 경험이 있는 독자를 대상으로 합니다.

이 책의 목적은 깊이보다는 너비에 중점을 두었습니다. 많은 주제를 소개함으로써 계산을 활용해 어떤 목표를 달성할려고 할때 무엇이 가능하지 알게 하려는데 그 목적이 있습니다.

책의 제목에서 알 수 있듯이 책은 주력 언어는 파이썬 입니다. 대부분 파이썬 기능을 다루지만, 언어 자체보다 프로그래밍 언어로 무엇을 할 수 있는 지에 중점을 둡니다.

책의 일부분을 보자면 완전 열거, 추측-확인 알고리즘, 이분 검색 등 효과적인 알고리즘을 소개합니다. 컴퓨팅을 사용해 흥미를 문제를 해결하는 관점에서 파이썬이 훌륭한 도구가 될 것입니다.

책 이름이 잘 못 나온 것 같아서 ... 다음과 같이 다시 질문에 봤습니다.

"코딩 뇌를 깨우는 파이썬 책을 MIT에서 강의한 내용을 기반으로 썼다는데 MIT에서 Introduction to Computation and Programming Using Python 책을 이용한 강의를 수강한 학생들의 반응은 어땠어?"

MIT에서 Introduction to Computation and Programming Using Python 책을 이용한 강의를 수강한 학생들의 반응은 대체로 긍정적이었습니다. 이 책은 파이썬의 기본 문법과 다양한 라이브러리를 사용하여 문제 해결 능력을 키우는 방법을 알려줍니다. 또한 데이터 과학과 머신러닝의 핵심 개념과 기법도 소개하고 있습니다. 이 책은 코딩 뇌를 깨우기 위해 컴퓨팅 사고와 알고리즘, 데이터 구조, 그래프 출력, 동적 계획법, 그래프 최적화 문제 등 프로그래밍 입문에 필요한 주제들을 다루고 있습니다. 각 장에는 뇌풀기 문제가 있어 실습을 통해 배운 내용을 복습하고 응용할 수 있습니다.

이 책을 수강한 학생들은 이 책이 프로그래밍을 전혀 모르는 사람이라도 쉽게 따라할 수 있도록 설명하고 있으며, 파이썬의 스타일과 관례에도 주의를 기울였다고 평가했습니다. 또한 이 책은 MIT의 다른 컴퓨터 과학 강의와도 잘 연결되어 있어, 학생들이 전반적인 Computer Science 지식을 쌓는데 도움이 되었다고 합니다. 이 책은 파이썬을 배우고 싶은 모든 분들에게 추천합니다.

 

01.jpg

 

02.jpg

 

 

 

 

파이썬과 프로그래밍에 관심이 있는 초보자들을 위한 책입니다.

 

 

이 책은 MIT의 컴퓨터 과학 강의를 바탕으로 만들어졌으며, 파이썬의 기본 문법과 다양한 라이브러리를 사용하여 문제 해결 능력을 키우는 방법을 알려줍니다.

 

 

또한 데이터 과학과 머신러닝의 핵심 개념과 기법도 소개하고 있습니다.

 

 

이 책은 코딩 뇌를 깨우기 위해 컴퓨팅 사고와 알고리즘, 데이터 구조, 그래프 출력, 동적 계획법, 그래프 최적화 문제 등 프로그래밍 입문에 필요한 주제들을 다루고 있습니다.

 

 

각 장에는 뇌풀기 문제가 있어 실습을 통해 배운 내용을 복습하고 응용할 수 있습니다.

 

 

이 책은 프로그래밍을 전혀 모르는 사람이라도 쉽게 따라할 수 있도록 설명하고 있으며, 파이썬의 스타일과 관례에도 주의를 기울였습니다.

 

 

이 책을 읽으면서 파이썬을 통해 문제를 해결하는 기술을 배우고, 데이터 과학과 머신러닝의 세계에 발을 들여놓을 수 있을 것입니다.

 

 

파이썬을 배우고 싶은 모든 분들에게 추천합니다.

 

 

 

 

참고)

 

책 처음, "이 책에 대하여"에 MIT에서 제공한 강의를 기반으로 썼다고 되어 있어서 빙-챗GPT에 다음과 같이 질문해 봤습니다.

 

 

 

"코딩 뇌를 깨우는 파이썬 책을 MIT에서 강의한 내용을 기반으로 썼다는데 MIT 관련 강의를 수강한 학생들의 반응은 어땠어?"

 

 

코딩 뇌를 깨우는 파이썬 책은 MIT의 컴퓨터 과학 강의를 바탕으로 만들어졌다고 합니다. MIT에서는 컴퓨터 과학과 프로그래밍 입문 강좌로 Structure and Interpretation of Computer Programs라는 책을 사용하고 있습니다. 이 책은 파이썬의 기본 문법과 다양한 라이브러리를 사용하여 문제 해결 능력을 키우는 방법을 알려줍니다. 또한 데이터 과학과 머신러닝의 핵심 개념과 기법도 소개하고 있습니다. 이 책은 코딩 뇌를 깨우기 위해 컴퓨팅 사고와 알고리즘, 데이터 구조, 그래프 출력, 동적 계획법, 그래프 최적화 문제 등 프로그래밍 입문에 필요한 주제들을 다루고 있습니다. 각 장에는 뇌풀기 문제가 있어 실습을 통해 배운 내용을 복습하고 응용할 수 있습니다.

 

 

MIT에서 이 책을 수강한 학생들의 반응은 대체로 긍정적이었습니다. 이 책은 프로그래밍을 전혀 모르는 사람이라도 쉽게 따라할 수 있도록 설명하고 있으며, 파이썬의 스타일과 관례에도 주의를 기울였습니다. 이 책을 읽으면서 파이썬을 통해 문제를 해결하는 기술을 배우고, 데이터 과학과 머신러닝의 세계에 발을 들여놓을 수 있을 것이라고 학생들은 평가했습니다. 또한 이 책은 MIT의 다른 컴퓨터 과학 강의와도 잘 연결되어 있어, 학생들이 전반적인 CS 지식을 쌓는데 도움이 되었다고 합니다.

 

 

 

--

 

책 이름이 잘 못 나온 것 같아서 ... 다음과 같이 다시 질문에 봤습니다.

 

 

"코딩 뇌를 깨우는 파이썬 책을 MIT에서 강의한 내용을 기반으로 썼다는데 MIT에서 Introduction to Computation and Programming Using Python 책을 이용한 강의를 수강한 학생들의 반응은 어땠어?"

 

 

MIT에서 Introduction to Computation and Programming Using Python 책을 이용한 강의를 수강한 학생들의 반응은 대체로 긍정적이었습니다. 이 책은 파이썬의 기본 문법과 다양한 라이브러리를 사용하여 문제 해결 능력을 키우는 방법을 알려줍니다. 또한 데이터 과학과 머신러닝의 핵심 개념과 기법도 소개하고 있습니다. 이 책은 코딩 뇌를 깨우기 위해 컴퓨팅 사고와 알고리즘, 데이터 구조, 그래프 출력, 동적 계획법, 그래프 최적화 문제 등 프로그래밍 입문에 필요한 주제들을 다루고 있습니다. 각 장에는 뇌풀기 문제가 있어 실습을 통해 배운 내용을 복습하고 응용할 수 있습니다.

 

 

이 책을 수강한 학생들은 이 책이 프로그래밍을 전혀 모르는 사람이라도 쉽게 따라할 수 있도록 설명하고 있으며, 파이썬의 스타일과 관례에도 주의를 기울였다고 평가했습니다. 또한 이 책은 MIT의 다른 컴퓨터 과학 강의와도 잘 연결되어 있어, 학생들이 전반적인 Computer Science 지식을 쌓는데 도움이 되었다고 합니다. 이 책은 파이썬을 배우고 싶은 모든 분들에게 추천합니다.

 



--

 

그러게 ... 책을 보면서 ... 내가 생각하기에도 저자가 정말 말이 많더라구 ㅎㅎㅎ

 

파이썬에 대해 정말 할 말이 많았던 모양입니다. 레드~썬! 거의 최면 당하는 느낌이랄까 ...

 

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

파이썬 관련 책이 나오면 전체적으로 자주 살펴보는 편인데요.

<코딩 뇌를 깨우는 파이썬>은 난이도가 있어요. 하지만 데이터과학을 다뤄야 하는 요즘 대학생, 직장인들에게 추천하고 싶어요.

 

도서는 두껍고, 글자로 작고, 종이도 얇아요, 그만큼 분량이 있는 만큼 내용이 매우 충실합니다. 

여느 다른 파이썬 책들과 분명히 차별화과 됩니다. 

 

처음 3부까지는 파이썬 문법을 전혀 모르는 독자들도 충분히 이해하면서 프로그래밍을 해볼 수 있어요.

4부는 지금까지 배운것을 바탕으로 문제에 도전헤 볼 있어요. 지수복잡도, 검색, 정렬 알고리즘도 정리해 볼 수 있어요. 

5부 부터는 현실 세계에서 접할 수 있는 문제상황에 프로그래밍을 어떻게 적용할지 접하게 해줍니다. 

그리고 6,7 부에서는 데이터를 다루고 머신러닝으로 연결해서 학습할 수 있도록 도와줍니다. 

6,7부를 소화하려면 확률, 통계에 대한 기초 지식이 필요해요.

 

파이썬의 문법을 알고 있고, 알고리즘을 고민하는 단계에 있는 사람들은 매우 흥미로워 할 것 같아요,

파이썬으로 데이터를 다뤄야 하는 사람들에게 이 책은 매우 유용할듯합니다. 

 

이 책의 서문에서도 언급한 '프로그래밍 경험의 거의 없거나 전혀 없어도 문제 해결에 계산적으로 배우고자 하는 독자를 대상으로 한다'라고 기술되어 있듯 

파이썬에 대한 소개와 기본설명, 개발환경 구축, AI의 머신러닝을 접하기 위한 수치통계의 파이썬 코드구현과 분석에 필요한  파이썬라이브러리 판다스의 사용방법과 응용방법을 챕터별로 조금조금씩 레벨을 업 하듯 기술되어 있다.

작성된 수십 개의 예제 하나하나가 단순히  설명을 위한 예제라기보다는 언제든 실무에서  일부 가져다 활용할 수 있는 예제들로 구현된 것이 기억에 남는다. 

파이썬을 활용해 기초에서부터 알고리즘, 데이터 분석, 머신러닝에 이르기까지 책 한 권으로 흩어 볼 수 있는 몇 안 되는 책일 듯하다.  

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

코딩에 대한 니즈가 많은 사회입니다.

그래서 대학에 가면 전공하고 상관없이 코딩을 공부하는 이들이 많은데요.

오늘은 이렇게 시대적인 흐름에 따라 코딩을 준비하는 사람들에게 가장 중요한 파이썬 언어에 대한 책을 소개해 드리겠습니다.

바로 한빛미디어에서 출판한 코딩 뇌를 깨우는 파이썬입니다.

저자는 존 V. 구태그인데요.

이 분은 MIT 전기공학과 컴퓨터과학부에서 교수로 재직하고 있으면서 ACM의 펠로이면서 미국 예술 과학 아카데미의 회원이신 분입니다. 현재는 고급 머신러닝 및 컴퓨터 비전 기술 연구를 이끌고 계신 분입니다.

책의 내용은 저자가 MIT 학부 과정을 가르치면서 준비한 강의 노트에서 출발합니다.

조교, 그리고 강의를 들은 학생들의 도움으로 책이 완성되었다고 하는데요.

그만큼 책의 내용이 MIT 학부생들 공부한 내용이고, 과제로 제출해야 하는 과정을 통해 여러 번의 시행착오를 통해 출판하게 된 내용입니다. MIT라는 학교에 대한 평가는 대부분의 사람들은 좋은 학교라고 말합니다.

그만큼 책의 내용이 흥미롭다는 말이기도 하는데요.

 

책의 역자인 박해선님 역시 남다른 분입니다.

텐서 플로우 블로그를 운영하며 머신러닝과 딥러닝에 관한 책을 여러 권 집필할 정도로 실력을 갖춘 분입니다.

이 책을 번역하시면서 궁금한 것이 있으면 언제든 저자의 블로그를 통해 문의를 환영한다고 할 정도입니다.

책은 다음의 독자를 대상으로 합니다.

  1. 프로그래밍 경험이 거의 없거나 전혀 없으며 문제 해결에 계산적으로 접근하는 방법을 배우고 싶은 독자
  2. 데이터를 탐색하고 모델을 만드는 방법을 배우고 싶은 프로그래밍 경험이 있는 독자

책은 깊이보다 너비에 중점을 두었다고 말합니다.

즉 많은 주제를 간단히 소개함으로 많은 것을 배울 수 있게 만들어진 책이란 말인데요.

파이썬을 처음 접하는 분들에게 MIT식 가이드가 될 것 같네요.

파이썬이란 언어가 갖고 있는 특징이 있습니다.

책에서는 이런 프로그래밍의 기초적인 부분과 언어에 대한 부분을 설명합니다.

그리고 계산적으로 문제를 해결하는 방법을 설명합니다.

복잡한 계산을 어떻게 접근해서 풀어가는지 공부해 보시면 좋을 것 같은데요.

책은 1-13장까지는 기본적인 파이썬 과정이고요.

14-26장은 일반적으로 2학년 과정에 해당된다고 하니 참고하세요.

저자는 이렇게 말합니다.

프로그래밍은 본질적으로 어렵습니다.

"기아학을 배우는 데 왕도가 없다"는 말처럼 프로그래밍에도 왕도가 없습니다.

정말로 뭔가 배우고 싶다면 책을 읽기만 해서는 충분하지 않습니다.

적어도 예제를 직접 코딩해 봐야 합니다.

 

도서의 내용을 기반으로 번역하신 박해선님이 동영상 강의를 만들었습니다.

참 대단하신 것 같아요.

사뭇 책을 좀더 쉽게 이해할 수 있도록 이렇게 큰 노력을 해주는 분은 많지 않은데,

감동이네요.

 

계산적 사고에서 출발해서 아나콘다와 스파이더를 사용해서 IDE를 설치하는 방법을 설명하고요.

이후에는 기본적인 파이썬 코딩 방법에서 시작해서 튜플, 딕셔너리, 레인지 등을 설명해 줍니다.

3부에서는 탄탄한 프로그램 만들기

4부에서는 프로그래밍으로 문제 풀기

5부에서는 프로그래밍으로 현실 세계 이해하기

6부에서는 데이터 이해하기

7부에서는 머신러닝

이렇게 책이 구성이 되어 있습니다.

 

 

 

 

0. 프롤로그

 

오랜만에 돌아왔습니다. 한빛미디어와 함께하는거.....이제 다 알고 계시겠죠? ㅎㅎ 한 달에 한 권 데이터 과학 도서 읽기 프로젝트입니다. 9월의 차례가 돌아 왔는데요, 제가 이번에 신청한 도서는 <코딩 뇌를 깨우는> 이라는 제목과 귀여운 표지를 갖고 있는 책입니다. 표지만 봐서는 이제 코딩책인지 동화책인지 모를 정도로 깜찍해요. 그런데 이 책을 겉만 보고 가볍게 접근하면 큰 코 다칩니다 ㅠㅠ 이 책의 저자는 무려 MIT 전기공학 및 컴퓨터과학부에서 교수로 재직하고 계신 존 V. 구태그님이거든요. 그냥 쉽게 쉽게 따라갈 수 있을만한 쿡북이라고 생각했다가는 책의 한 장 한 장이 쉽게 넘어가지 않을 거라고 생각합니다. 그럼 천천히 책을 살펴볼까요?

 

 

1. 참고자료

 

일단 이 책의 원래 용도는 '대학 강의 교재' 입니다. 책을 잘 살펴보면 아시겠지만 온라인에서 제공되는 무료 MITx 강좌의 교재입니다. 이 책을 갖고 들을 수 있는 강의는 다음 두개입니다.

 

- 6.0001 Introduction to Computer Science and Programming in Python

https://ocw.mit.edu/courses/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/

 

- 6.0002 Introduction To Computational Thinking And Data Science

https://ocw.mit.edu/courses/6-0002-introduction-to-computational-thinking-and-data-science-fall-2016/

 

책은 크게 두 부분으로 이루어져 있으며 온라인 강의와 동일한 내용을 다루고 있다고 보시면 됩니다. 사실 책 없이도 온라인 강의를 들을 수 있습니다(유튜브의 자동번역 기능을 이용하면 굳!) 또한 책의 내용과 강의를 비교하면 아무래도 텍스트를 통해 좀 더 자세하게 설명해주는 느낌이 있고요. 그러나 한 학기 짜리 수업영상을 모두 보는 것은 우리에게 쉽지 않은 일이잖아요?독자가 의지가 있는 편이라면 책이 더 편리한 도구가 될 수 있다...고 생각하시면 되겠습니다만 그래도 MIT 교수님들의 능력은 상상 초월입니다. 저 같은 경우는 책만 보는 것보다 강의가 있을 때 시너지가 나는 타입이라 영상을 같이 보고 있어요 ㅎㅎ 각자의 상황에 맞추어 공부하시면 좋을 것 같습니다.

 

만약 MIT의 수업이 본인에게 다소 무겁다고 생각되신다면 이 책의 번역가이신 박해선님의 다소 light한 유튜브 강의도 있습니다. 역시 참고하세요.

https://youtube.com/playlist?list=PLVsNizTWUw7EQuMp-11btC4_yPM5UxvkI&si=OUminm7mz6NGFuFc

 

 

2. 책의 내용

 

일단 이 책의 초점은 코딩 구문 학습에 맞추어져 있지 않습니다. 우리가 당면한 문제를 분석하고 해결책을 만드는 방법을 배우는 데 중점을 둡니다. 따라서 Python을 배우기 시작하려는 사람들에게는 살짝 버거운 느낌이 들 수 있겠지만(기초 구문에 대한 설명은 부족합니다), 훌륭한 데이터 과학자가 되고싶거나, 혹은 문제를 해결하는 방법을 배우고 싶은 사람들에게는 매우 효과적일 것이라 생각합니다. 즉, 이 책을 읽는다고 해서 Python 코딩을 마스터할 수는 없을 것이지만, 컴퓨터 과학의 근본적 원리 혹은 개념을 배우기 시작하는데는 이만한 것이 없을거예요.

 

하지만 그만큼 엄밀한 내용들로 가득 차 있으므로, 독자가 이 책을 읽는 데 상당한 에너지와 시간을 소비할 가능성이 높다는 말이기도 합니다. 컴퓨터가 계산하는 방식을 이해하고 과학자 혹은 공학도처럼 프로그램을 작성하는 데 필요한 지식을 망라하여 다루기 때문이지요. 감사하게도 알고리즘을 통한 계산, 코드 효율성의 특성에 대해 알아야 할 거의 모든 것이 책에 포함되어 있습니다. 이를 100% 받아들일 수 있냐는 전적으로 독자의 의지와 능력에 달렸겠지요?그래서 제가 프롤로그에서 강의와 병행하는 것이 훨씬 도움이 될 것이라고 말씀드린겁니다 -_-;

 

특히 이것은 데이터 과학이나 머신러닝 분야에서 일하고 싶어하는 분들에게 훌륭한 입문서가 될 것 같습니다. 책의 후반부에 알고리즘, 확률 및 통계적 추론에 대한 내용이 실려 있기 때문입니다. 특히 이번에 나온 3rd 개정판에는 파이썬에서 가장 유용하게 사용되는 라이브러리인 pandas를 다룬 부분도 추가되었거든요. 저 역시 통계를 공부하는 사람이라 이 부분이 더 유용하게 느껴졌습니다. 그러나 머신러닝에 관련된 sklearn이나 tensorflow와 같은 다른 중요한 기계 학습 라이브러리에 대한 내용은 부족합니다. 그래서 입문서라고 말씀드린겁니다..ㅎㅎ

 

혹시 오해하시는 분들이 있을까봐 첨언하면 pandas를 이용한 데이터 처리법의 내용은 있지만 데이터베이스 관리 시스템 등 데이터 엔지니어 분들에게 필요한 스킬들은 전무합니다. 슬슬 우리나라도 데이터 사이언티스트와 데이터 엔지니어의 역할을 구분하고 있는 모양새니 이 부분을 잘 캐치하셔야 겠습니다. 어쨌거나 우리의 구탱 교수님은 무려 600쪽에 걸쳐 쉴새 없이 많은 내용을 다룹니다. 아마 책의 마지막 장을 덮을 때 쯤이면, Python을 사용하여 체계적으로 문제를 해결하고, 데이터 분석 및 계산 모델링을 수행하여 실제 문제를 풀어내는 데 능숙해질 것이라 생각합니다.

 

 

3. 아쉬운 부분

 

말씀드렸다 시피 이 책은 교수님이 컴퓨터 과학 학부생 수준의 교재로 쓴 책이므로 매우 학문적인 접근법을 사용한다는 점을 기억하셔야 할 것 같습니다. 아시잖아요? 전공서적의 그 어투, 설명..... 뭔가 살짝 졸릴 것 같은 그런거요 ㅎㅎ 물론 많은 전공서적 들이 그런 것처럼 내용적인 구조는 탄탄합니다. 게다가 자주 업데이트가 되지 않는 전공서적의 단점을 상쇄합니다. 무려 21년에 개정이 된 책이니까요. 완벽하게 모든 내용을 다 공부하진 못했지만 저에게는 아주 큰 도움이 될 것 같은 책입니다.

 

그러나 여러 사이트에서 이 책에 대해 찾아보다가 알게된 내용이 몇 개 있어요. 어떻게 말하자면 책의 단점이죠. 이는 몇몇 사이트에서 이 책에 대해 실제 개발자로 일하는 분들이 느낀 부분을 발췌한 것인데요, 참고하시길 바랍니다.

 

이 책의 내용들은 학문적 영역에서는 허용될 수 있지만 상업 세계에서는 초보 프로그래머에게도 허용되지 않는 접근 방식이 많이 있습니다. 특히 잘못된 코드와 기술이 좋은 사례보다 우선시되는 방식이 있습니다. 예를 들어 앨리어싱 문제는 여러 페이지에 걸쳐 설명되어 있지만 이를 방지할 수 있는 방법을 보여주는 명확한 코드 조각은 없습니다. 또한 단순한 것을 불필요하게 복잡하게 만드는 경우가 많습니다. 강의의 맥락에서 그러한 접근 방식은 마음을 넓히는 측면에서 용서할 만한 수준이지만, 특히 컴퓨터 프로그래밍에 첫 발을 내딛는 사람들을 대상으로 한 책에서는 독자가 전체 주제가 자신에게 너무 어렵다고 느끼게 만들 위험이 있습니다. 적절한 설명이 부족하고 이해하기 어려운 코드 줄과 몇몇 오류가 있습니다.

 

여러 세대의 학생들이 이 책을 기본서로 삼아 공부해 왔기 때문에 내 비판이 다소 성급하다고 생각할 지 모릅니다. 그러나 견고하고 유지 관리가 가능한 코드를 생성해야 하는 상업적인 요구 사항보다는 학문적 이상과 교육에 따라 처음 10년 동안 프로그래밍을 한 사람들이 만든 소프트웨어 지배 세계로 이동함에 따라 위기가 다가오고 있습니다. 그러므로 이 책에 대한 나의 의견은 상업계에 발을 디딘 적이 없는 학자들이 쓴 다른 많은 컴퓨터 과학 서적에도 동일하게 적용됩니다. 제4판의 개선 사항에 관해 저자와 대화를 나누게 되어 매우 기쁩니다. 물론 절대 나쁜 책은 아니고 좋은 부분이 많이 있지만 전체적으로 초반 부분은 아쉬운 느낌이 듭니다.

 

4. 총평

 

그러나 저를 비롯한 세계의 많은 독자들은 의심할 여지 없이 이 책이 컴퓨터 과학과 컴퓨터 과학에 관한 걸작이라는데 한 목소리를 내고 있어요. 특히 이번 학기에 저는 위에 올려드린 MIT의 강의 2개를 모두 듣고자 하는 목표를 세웠는데요(물론 겨울방학 포함ㅋㅋ) 이를 통해 저의 코딩실려이 일취월장 할 것이라고 기대하고 있습니다.

 

코딩을 공부하다보면 내가 다른 사람의 코딩을 보고 단순히 따라 치며 공부한다고 생각이 들 때가 많았습니다. 그러니까 나의 논리대로 코드를 짜는 것이 아니라 남의 코드를 복붙하고 있다는 느낌이 드는거죠. 특히 CHAT GPT의 등장 이후로 이런 경향은 더 심해졌다고 생각합니다. 저도 참 반성해야 할 부분인데, 시간에 쫓기다 보니 자꾸 편한 선택을 하게 되더라고요.

 

저는 이 책의 효과가 그런 기술의 발전에 역행하면서 개발자로 성장하는 밑거름을 제공하는데 있다고 생각합니다. 프로그래밍을 수행하는 데 필요한 개념적 계산 능력을 키우고, 비어있는 나의 머릿속을 채워가는 거죠.

 

마지막으로 인도의 한 개발자가 이 도서에 남긴 찬사로 마무리 짓겠습니다. 우리 카레국 형님을 믿고 다시 이 책을 열심히 공부하러 가 보려고 합니다 ㅎㅎ 그럼 10월 도서로 찾아올 때까지 안녕히 계세용!

 

이 책은 제가 파이썬 프로그래머로 성장하는 데 도움이 되었습니다. 나는 프로그래밍의 아주 기본적인 것(고등학교 C++)을 알고 있었습니다. 이 책은 Python 언어 소개와 함께 프로그래밍과 연산의 핵심 개념을 쉽게 설명합니다. 나는 새로운 Python 프로그래머를 꿈꾸는 사람들에게 John Guttag 교수와 Eric Grimsson 교수가 진행하는 edx 과정과 함께 이 책을 강력히 추천합니다. 과제와 프로젝트는 정말 흥미로웠고 언어와 컴퓨터 과학의 핵심 개념을 이해하는 데 많은 도움이 되었습니다. 이 강좌는 너무 흥미로워서 온라인 강좌에 대한 검증된 인증서를 구입했습니다. 손가락 연습과 같이 개념당 하나 또는 두 개의 연습 문제가 있으며 온라인 강좌는 훨씬 더 많은 콘텐츠와 프로젝트를 제공합니다.

[나는리뷰어다] 한빛미디어, 코딩 뇌를 깨우는 파이썬


글 / 사진 : 서원준 (news@toktoknews.com


 

 


본 소개 글은 한빛미디어 나는 리뷰어다를 통해서 도서를 제공받아 진행하였으며, 구매가이드(도서소개) 성격이 강합니다. 


필자가 9월에도 또다시 파이썬 책을 들고 나왔다. 어떤 분은 “매 달마다 하는 파이썬, 이젠 지겹다” 라고 하시는 분이 분명 계실 줄 안다. 그런데 파이썬이 정말 배우고 싶어졌고 이렇게 배운 것을 실제 현업에서 써먹어 다양하게 사용헤 보고 싶은 사람은 다름아닌 필자 자신이라는 사실이다. 즉, 그 정도로 프로그래밍 공부에 한이 맺혔고 이제는 파이썬 공부를 시작하고 싶다는 뜻으로 이해해 주셨으면 좋겠다. 


 

 

 

 

 

 

 

 

 

 

 

 

 

 


필자가 이 책을 선택할 때에는 딱 한 가지만 생각했다. 다름아닌 페이지 수였다. 컴퓨터 책은 페이지수가 무조건 많고 보아야 하기에 다른 대안이 필요 없었다. 그래서 선택하게 되었는데 이 책이 미국 MIT대 (필자는 MIT대학이 유명한 대학임을 어렸을 때부터 알았으나 잊어버렸다. 그런데 최근 다른 분야 책 서평을 진행하면서 MIT대학에 대해서 다시 한 번 알게 되었다.)의 컴퓨터 과학 개론 강의 교재라는 사실을 알게 된 것이다. 


많은 분들이 “코딩 = 파이썬” 이란 사고방식을 가지고 있다. 그런데 파이썬은 국내에서는 코딩의 대명사처럼 여겨지지만 실제 들어가보면 C언어, 베이직, 코볼 등과 마찬가지로 프로그래밍 언어의 일종이다. 프로그래밍이라면 “어렵다” 는 인식이 박혀 있어서 “코딩” 이란 표현을 사용하는 것이다. 


 

 

 

 


“코딩 뇌를 깨우는 파이썬“ 은 프로그래밍의 기초부터 출발하여 알고리즘, 데이터분석, 그리고 파이썬으로 가능한 머신러닝에 이르기까지 문제해결능력을 키워주는 책이다. 사실 데이터븐석과 머신러닝은 B2B 방송을 보먄서 귀가 따갑도록 들었단 용어라 머신러닝이라는 이름은 알지만 어떻게 구동되는지는 전혀 몰랐는데 이 책에서는 머신러닝까지 간단히 알려주고 있다. 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


도서 소개를 마치면서


마지막으로 “코딩 뇌를 깨우는 파이썬“ 은 프로그래밍 경험이나 지식이 없는 분들을 위해 파이썬과 다양한 라이브러리(넘파이, 맷플롯립, 판다스, 사이킷런 등)를 사용한 문제 해결 비법을 소개하는 책이다. 이 책을 통해 얻을 수 있는 것으로는 일상에서 마주하는 다양한 문제를 프로그래밍으로 해결하는 기술을 배우고 익힐 수 있다. 필자도 책을 읽어봤는데 워낙 쉽게 설명하는 바람에 잘 따라갈 수 있었다는 것이고 막힐 때는 처음부터 숙달될 때까지 읽으면 해결된다. 

 

 

1.jpg

 

 

파이썬 교재 정도로 생각 했다. 

기본 이론과 실습 정도를 다루고 있다고..그렇게 이책을 읽기 시작했다.

 

1~3부(1~11장) 까지는 가볍게 Reading 하고 있다. 그런데 읽을수록 기존 다른 교재와 조금 다르다.

실습 문제가 없어서 그런가..뇌풀기 문제가 있긴 한데.. 그냥 머릿속으로 어떻게 난 풀것인가를 생각하며 그렇게.. 쉽게 쉽게 페이지를 넘겼다. 그냥 프로그램의 기본 과정이다. 그러나 일반적인 프로그램을 설명하고 있지 않다. 말이 이상한가?? 무엇인가 다르다는 것을 느끼지만 구체적이지 않았다.

통상 구문을 알려 주고 예제 코드로 적용되는 내용을 설명하고 그리고 실습하고.. 음.. 그러니깐 툴의 사용 설명서를 보는 느낌이였다면..이 책은 왜(Why),어떻게(HOW) 느낌이 들어 있다.....

 

특히 4부로 가면서 용어가 주는 불편함이 있었다.11장의 알고리즘 복잡도... 복잡도, 점금표기법, 상수복잡도, 로그복잡도, 선형복잡도.. 해시테이블.. 12장의 알고리즘과 데이터 구조.검색알고리즘(선형, 이진, 재귀를 사용한 이진.) 정렬 알고리즘(선택, 합병) 해시 테이블(해시함수, 딕셔너리) 13장 그래프 출력과 클래스....글쎼 처음 접하는 사람이 이 부분에 대한 이해가 될지? 개념적이면서 구체적이지 않다... 특히 14장,15장, 16장은 머릿속으로 이해는 되지만 구현에 대한 망설임이 있을만큼 음....어려워지는데..