출판사 서평 프로그래머를 위한 수학 책
이 책은 프로그래머가 매일매일의 프로그래밍 작업을 더 잘 이해할 수 있도록 하는 데 도움이 되는 책입니다. 프로그래밍의 기본은 컴퓨터 과학이며 컴퓨터 과학의 기본은 수학입니다. 그러므로 수학을 배운다는 것은 프로그래밍의 기본을 탄탄히 하는 것으로, 수학을 배우면 제대로 된 프로그램을 만드는 데 많은 도움을 줍니다. 이 책을 통해 프로그래밍에 도움이 되는 ^수학적 사고방식^을 배우고, 수학이 가진 아름다움과 즐거움을 느껴보기 바랍니다.
수학을 배워 봅시다
^수학^이라고 하면, 귀찮은 수식이 많이 나오고 머리가 아파지는 사람이 많을지도 모릅니다. 관심은 있지만, 하나하나의 수식을 쫓는 것이 싫어서 수학을 그만 싫어하게 된 사람도 있을 것입니다. 하지만 ^프로그램을 만드는 데 수학 따윈 필요 없어^라고 생각 프로그래머도 있을까요?
이 책은 정의와 증명으로 채워진 수학 전문 서적이 아닙니다. 프로그래밍을 하는 데 유용한 ^수학적 사고방식^을 이해하기 위한 책입니다. 외우는 것보다 이해하고 상상하는 것이 더욱 중요합니다. 따라서 어려운 수식은 별로 나오지 않고, 퀴즈와 퍼즐로 즐기면서 배웁니다. 또한, 많은 삽화를 통해 추상적인 이미지도 쉽게 이해할 수 있습니다.
수학적 사고방식의 예
^수학적 사고방식^을 배운다는 것이 너무 추상적이므로 몇 가지 예를 이용하여 이야기해보겠습니다.
[조건 분기와 논리]
프로그래밍을 할 때 우리는 조건에 따라 처리를 ^분기^하게 됩니다. C나 Java라면 if 문을 사용할 것입니다. 조건을 만족한다면 해당하는 처리를 수행하고, 만족하지 않는다면 다른 처리를 수행하도록 제어합니다. 이때 우리는 수학의 한 분야인 ^논리^를 사용하여 프로그램을 제어하는 것이 됩니다. 그러므로 프로그래밍에서는 ^이고^, ^또는^, ^~가 아님^, ^~이라면 …^처럼 논리를 구성하는 요소를 정확히 사용해야 합니다.
[반복과 수학적 귀납법]
우리는 대량의 정보를 처리하고자 프로그램을 이용하여 ^반복^을 수행합니다. 예를 들어 for 문을 사용하면 많은 데이터를 반복하여 처리할 수 있습니다. 이러한 반복을 뒷받침하는 것이 바로 ^수학적 귀납법^입니다.
[경우 나누기와 수를 세는 법칙]
많은 조건이나 데이터를 경우에 따라 나눌 때, 프로그래머는 결코 놓치는 것이 없도록 신경을 써야만 합니다. 그럴 때는 덧셈 법칙과 곱셈 법칙, 순열, 조합 등의 수를 세는 법칙이 도움됩니다. 이는 프로그래머가 항상 배우고 익숙해져야 하는 수학 도구라 할 수 있습니다.
이 외에도 이 책에서는 재귀, 지수, 로그, 나머지 등 기본적이고 중요한 사고방식도 함께 배울 수 있습니다.
이 책의 대상 독자
- 프로그래머: 당연하다고 여겼던 수학 법칙을 되돌아봄으로써 프로그래밍에 관련된 통찰을 얻을 수 있습니다.
- 학생: 프로그래머가 아니어도 논리적 사고를 통해 문제를 해결하는 창의력을 키울 수 있습니다.
요즘 세계적으로 학생을 대상으로 한 프로그래밍 교육 열기가 뜨겁습니다. 여기에는 ^아이들이 개발자가 되지 않는다 해도, 컴퓨터 언어를 배우는 것은 문제 해결과 논리적 사고를 키우는 데 도움이 되기 때문에 중요하다.^라는 생각이 깔려 있습니다. 실제로 컴퓨터 과학은 현대 과학과 수학의 결정체입니다. 컴퓨터 언어를 배운다는 것은 단순히 지식과 기술을 배우는 것을 넘어, 그 안에 깃든 작동 원리와 논리적으로 생각하는 방법을 배우는 것입니다. 이 책을 통해 프로그래머뿐만 아니라 학생들도 수학적으로 문제를 해결하는 능력을 익힐 토대를 마련했으면 합니다.
목차 Chapter 01 0 이야기: ^없다^는 것이 ^있다^라는 것의 의미
1. 이 장에서 배울 내용
2. 초등학교 1학년의 추억
3. 2진법
4. 위치값 기수법
5. 지수법칙
6. 0의 역할
7. 인간의 한계와 구조의 발견
8. 이 장에서 배운 내용
Chapter 02 논리: true와 false 둘로 나누기
1. 이 장에서 배울 내용
2. 왜 논리가 중요한가?
3. 승차 요금 문제: 빠짐없이 겹치지 않게 나누기
4. 복잡한 명제 만들기
5. 드 모르간의 법칙
6. 카르노 맵
7. 정의되지 않음을 포함한 논리
8. 이 장에서 배운 내용
Chapter 03 나머지: 주기성과 그룹 나누기
1. 이 장에서 배울 내용
2. 요일 퀴즈 (1)
3. 요일 퀴즈 (2)
4. 거듭제곱 퀴즈
5. 오셀로 게임을 이용한 통신
6. 친구 찾기 퀴즈
7. 타일 깔기 퀴즈
8. 한붓 그리기 퀴즈
9. 이 장에서 배운 내용
Chapter 04 수학적 귀납법: 수많은 도미노를 쓰러뜨리려면
1. 이 장에서 배울 내용
2. 소년 가우스, 덧셈을 구하다
3. 수학적 귀납법: 수많은 도미노를 쓰러뜨리려면
4. 홀수의 합 구하기: 수학적 귀납법의 예
5. 오셀로 퀴즈: 잘못된 수학적 귀납법
6. 프로그램과 수학적 귀납법
7. 이 장에서 배운 내용
Chapter 05 순열과 조합: 세지 않기 위한 법칙
1. 이 장에서 배울 내용
2. 센다는 것: 정수와의 대응
3. 나무 세기: 0을 잊지 말자
4. 덧셈 법칙
5. 곱셈 법칙
6. 치환
7. 순열
8. 조합
9. 퀴즈로 연습하기
10. 이 장에서 배운 내용
Chapter 06 재귀: 자신으로 자신을 정의
1. 이 장에서 배울 내용
2. 하노이의 탑
3. 두 번째 계승
4. 피보나치 수열
5. 파스칼의 삼각형
6. 재귀적인 도형
7. 이 장에서 배운 내용
Chapter 07 지수적 폭발: 곤란한 문제와의 싸움
1. 이 장에서 배울 내용
2. 지수적 폭발이란 무엇인가?
3. 2배 게임: 지수적 폭발이 일으키는 문제
4. 이진 검색: 지수적 폭발을 이용한 검색
5. 로그: 지수적 폭발을 다루는 도구
6. 암호: 지수적 폭발로 비밀을 지킴
7. 지수적 폭발에 대처하려면
8. 이 장에서 배운 내용
Chapter 08 계산할 수 없는 문제: 셀 수 없는 수, 프로그래밍할 수 없는 프로그램
1. 이 장에서 배울 내용
2. 귀류법
3. 셀 수 있음
4. 대각선 논법
5. 계산할 수 없는 문제
6. 정지 판정 문제
7. 이 장에서 배운 내용
Chapter 09 프로그래머 수학이란?: 정리를 대신하여
1. 이 책을 되돌아보며
2. 문제를 해결한다는 것
찾아보기 Chapter 01 0 이야기: ^없다^는 것이 ^있다^라는 것의 의미
1. 이 장에서 배울 내용
2. 초등학교 1학년의 추억
3. 2진법
4. 위치값 기수법
5. 지수법칙
6. 0의 역할
7. 인간의 한계와 구조의 발견
8. 이 장에서 배운 내용
Chapter 02 논리: true와 false 둘로 나누기
1. 이 장에서 배울 내용
2. 왜 논리가 중요한가?
3. 승차 요금 문제: 빠짐없이 겹치지 않게 나누기
4. 복잡한 명제 만들기
5. 드 모르간의 법칙
6. 카르노 맵
7. 정의되지 않음을 포함한 논리
8. 이 장에서 배운 내용
Chapter 03 나머지: 주기성과 그룹 나누기
1. 이 장... 펼쳐보기
유키 히로시 [저] 생년월일-출생지-출간도서0종판매수0권 작가소개1963년생. 프로그래밍과 암호, 수학 등에 관한 저서를 다수 집필했다. 좋아하는 것은 같은 책을 몇 년에 걸쳐 읽고 또 읽기. 좋아하는 음악은 바흐의 과 . 프로그램 제작과 글쓰기가 취미며 직업이기도 하다.
저서에는 [신판 C언어 프로그래밍 레슨 - 입문편, 문법편], [Perl언어 프로그래밍 레슨 - 입문편], [개정판 2판 Java언어 프로그래밍 레슨(상·하)], [프로그래머의 수학], [암호 기술 입문]등이 있다.