프로그래밍 문법만 배워서는 실무에 들어갔을 때 한계에 부딪힐 수 있습니다. 좋은 프로그램을 만들려면 결국 자료 구조와 알고리즘은 물론 컴퓨터의 동작 원리를 알아야 합니다. 이 책은 컴퓨터 사이언스의 핵심만 간추려 쉽게 설명합니다. 또한, 165개의 그림으로 개념을 시각화하고, 파이썬으로 주요 원리를 실습할 수 있게 안내합니다.
목차
1장 변수 __1.1 메모리 미리 보기 ____1.1.1 32비트와 64비트의 의미 ____1.1.2 메모리에 우편번호를 매긴다 __1.2 변수의 의미 __1.3 파이썬에서의 변수: 이름과 값 객체 __1.4 마무리
2장 정수 __2.1 컴퓨터에서 수를 표현하는 방법 ____2.1.1 10진수 ____2.1.2 2진수 ____2.1.3 16진수 __2.2 10진수를 2진수로 __2.3 2진수를 10진수로 __2.4 16진수를 2진수로 __2.5 코딩으로 확인하는 진수 변환 __2.6 양의 정수 __2.7 음의 정수 ____2.7.1 보수의 개념 ____2.7.2 2의 보수 ____2.7.3 음수의 표현 ____2.7.4 2의 보수로 표현하는 이유 __2.8 마무리
3장 실수 __3.1 실수 연산의 함정 __3.2 부동소수점 __3.3 단정도와 배정도 __3.4 1바이트 실수 자료형 설계하기 ____3.4.1 10진수 실수를 2진수 실수로 바꾸기 ____3.4.2 정규화 ____3.4.3 메모리 구조 ____3.4.4 1바이트 부동소수점의 표현 범위 ____3.4.5 1바이트 부동소수점의 정밀도 __3.5 정밀도에 대한 고찰 ____3.5.1 엡실론 ____3.5.2 엡실론과 정밀도 __3.6 마무리
4장 문자와 문자열 __4.1 아스키 코드 __4.2 유니코드 __4.3 유니코드 인코딩 방식 ____4.3.1 UTF-8 ____4.3.2 UTF-16 ____4.3.3 UTF-32 __4.4 파이썬 문자열의 특징 __4.5 마무리
5장 함수 __5.1 함수를 시작하기 전에 ____5.1.1 자료 구조 미리 엿보기 ____5.1.2 전역 변수와 지역 변수 __5.2 인자 전달 방식에 따른 분류 ____5.2.1 값에 의한 전달 ____5.2.2 참조에 의한 전달 ____5.2.3 객체 참조에 의한 전달(파이썬) – 변경 불가능 객체를 전달할 때 ____5.2.4 객체 참조에 의한 전달(파이썬) – 변경 가능 객체를 전달할 때 __5.3 람다 함수 __5.4 마무리
6장 객체 지향 프로그래밍 __6.1 프로그래밍 패러다임 __6.2 절차 지향 프로그래밍 __6.3 절차 지향으로 학급 성적 평가 프로그램 만들기 ____6.3.1 openpyxl 모듈 설치하기 ____6.3.2 openpyxl 모듈로 데이터 읽어 들이기 ____6.3.3 평균·분산·표준편차를 함수로 만들기 ____6.3.4 메인 프로그램 만들기 __6.4 객체 지향 프로그래밍 ____6.4.1 캡슐화 ____6.4.2 클래스를 사용해 객체 만들기 ____6.4.3 파이썬의 클래스 ____6.4.4 객체 지향으로 은행 입출금 프로그램 만들기 ____6.4.5 정보 은닉 __6.5 객체 지향으로 다시 만드는 학급 성적 평가 프로그램 ____6.5.1 Stat 클래스 만들기 ____6.5.2 DataHandler 클래스 만들기 ____6.5.3 메인 프로그램 만들기 __6.6 마무리
7장 클래스 __7.1 클래스 관계 ____7.1.1 IS-A: 상속 ____7.1.2 HAS-A: 합성 또는 통합 __7.2 메서드 오버라이딩과 다형성 _____7.2.1 메서드 오버라이딩 _____7.2.2 다형성 __7.3 클래스 설계 예제 __7.4 연산자 오버로딩 __7.5 마무리
8장 CPU __8.1 트랜지스터와 논리 게이트 ____8.1.1 전압, 전류, 저항 ____8.1.2 논리 게이트 __8.2 조합 논리 회로와 가산기 _____8.2.1 CPU의 구성 _____8.2.2 가산기 __8.3 순차 논리 회로와 레지스터 __8.4 클록 __8.5 시스템 버스 ____8.5.1 시스템 버스의 구성과 특징 __8.6 인스트럭션 세트 ____8.6.1 명령어 종류 ____8.6.2 덧셈과 뺄셈 명령어 ____8.6.3 곱셈과 나눗셈 명령어 ____8.6.4 메모리 접근 명령어 ____8.6.5 소스 코드에서 인스트럭션으로 __8.7 마무리
9장 메모리 __9.1 메모리 저장 방식 __9.2 메모리 계층 __9.3 지역성과 캐시 히트 __9.4 가상 주소 공간 ____9.4.1 코드 세그먼트 ____9.4.2 데이터 세그먼트 ____9.4.3 스택 세그먼트 ____9.4.4 힙 세그먼트 __9.5 스택 프레임 ____9.5.1 스택 프레임 할당 ____9.5.2 스택 프레임 해제 __9.6 가상 메모리와 페이징 ____9.6.1 가상 메모리 ____9.6.2 MMU ____9.6.3 페이징 ____9.6.4 페이지 프레임 ____9.6.5 페이지 테이블 ____9.6.6 요구 페이징 ____9.6.7 페이지 폴트 ____9.6.8 변환 색인 버퍼 __9.7 마무리
10장 프로세스와 스레드 __10.1 프로세스 ____10.1.1 프로세스 상태 ____10.1.2 스케줄링 ____10.1.3 컨텍스트 스위칭 __10.2 스레드 ____10.2.1 멀티프로세스와 멀티스레드 ____10.2,2 멀티스레딩 구현 ____10.2.3 경쟁 조건 ____10.2.4 상호 배제 __10.3 마무리
11장 프로그래밍 언어 __11.1 컴파일러 언어와 인터프리터 언어 ____11.1.1 C 언어: 컴파일러 언어 분석 ____11.1.2 파이썬: 인터프리터 언어 분석 __11.2 파이썬: 소스 코드부터 실행까지 ____11.2.1 컴파일러 ____11.2,2 추상 구문 트리 ____11.2.3 심벌 테이블 ____11.2.4 바이트 코드와 PVM __11.3 마무리
12장 자료 구조 ① __12.1 자료 구조 ____12.1.1 세 가지만 알면 자료 구조 끝 ____12.1.2 추상 자료형 __12.2 연결 리스트 ____12.2.1 노드 ____12.2.2 연결 리스트 구현 __12.3 스택 ____12.3.1 스택의 동작 ____12.3.2 스택 구현 __12.4 큐 ____12.4.1 큐의 동작 ____12.4.2 큐 구현 __12.5 마무리
13장 자료 구조 ② __13.1 재귀 함수 ____13.1.1 팩토리얼 ____13.1.2 피보나치 수 __13.2 트리 ____13.2.1 사이클 ____13.2.2 이진 트리 ____13.2.3 이진 트리의 종류 __13.3 이진 트리 구현 ____13.3.1 트리 노드 구현 ____13.3.2 노드 관련 메서드 구현 ____13.3.3 서브 트리 관련 메서드 구현 ____13.3.4 이진 트리 구성하기 ____13.3.5 트리의 순회 __13.4 마무리
14장 이진 탐색 트리 __14.1 이진 탐색 트리의 특징 __14.2 이진 탐색 트리의 구현 ____14.2.1 이진 탐색 트리의 추상 자료형 ____14.2.2 이진 트리 관련 메서드 ____14.2.3 insert( ) 메서드 ____14.2.4 search( ) 메서드 ____14.2.5 remove( ) 메서드 ____14.2.6 테스트 코드 __14.3 마무리
15장 알고리즘 __15.1 알고리즘 성능 분석 __15.2 거품 정렬 __15.3 퀵 정렬 __15.4 마무리
독자의견 남기기