사회적 변화와 요구에 가장 적합한 프로그래밍 언어가 파이썬(Python)이라고 생각한다. 파이썬 언어는 1991년 개발되었으니 비교적 오랜 역사를 가졌음에도 불구하고 우리나라 대학에서 첫 프로그래밍 언어로 교육하기 시작한 것은 10년이 채 되지 않았다. 미국에서는 상당히 오래 전에 대부분의 대학에서 파이썬 언어로 소프트웨어 교육을 시작하는 것이 자연스러운 현상이었지만 우리나라는 그렇지 못했다. 지금은 수많은 파이썬 관련 서적이 출판되었고 대학은 물론 중고등 학생들에게도 파이썬으로 첫 프로그래밍 교육을 시작하는 것이 일반적인 현상이다. 파이썬 언어는 배우기 쉽고 소프트웨어를 공동으로 개발하고 유지하기 용이하며 무엇보다도 다른 프로그래밍 언어와 함께 사용할 수도 있다(이러한 개념을 ‘Glue Language’라고 한다). 특히 파이썬 언어의 가장 큰 장점은 수많은 유용한 라이브러리들이 존재하여 이들을 가져다 잘 활용하면 매우 큰 힘을 발휘할 수 있다는 점이다.
대학(연세대)에서 지난 수년간 “소프트웨어 프로그래밍(파이썬)” 과목을 강의하면서 다양한 교과서를 살펴보았다. 어떤 서적은 한 학기에 파이썬 교육을 완성하기에 분량이 너무 많았고 시간이 부족해서 적절한 교과서를 찾기 쉽지 않았다. 연세대 강의는 전교의 다양한 학생들이 수강하고 있으며 거의 대부분의 수강생들이 프로그래밍 배경이 전혀 없는 상태이다. 실제 강의는 매주 강의 2시간 및 실습(LAB) 2시간으로 진행해 왔다. 이러한 요구와 여건에 맞추어 이 책을 저술하게 되었다. 이 책은 실제 강의 내용에 기반하여 LAB 내용(연습문제의 B. 따라하기 실습 및 C. 프로그래밍 실습)을 구성하였다. 수강생들은 LAB 내용(B. 따라하기 실습)을 그대로 따라함으로써 파이썬 언어를 익히고, 간단한 프로그래밍 문제(C. 프로그래밍 실습)를 LAB 시간 내에 완성하는 방식을 따랐다. 이 책을 사용하는 모든 사람이 이와 동일한 방법으로 비교적 단시간 내에 파이썬 언어의 모든 것을 배우고 활용 능력을 발휘해 나갈 수 있을 것이라 믿는다.
Contents
CHAPTER 01 컴퓨터와 파이썬 프로그래밍
1.1 컴퓨터 시스템의 발전
1.1.1 컴퓨터와 4차 산업혁명
1.1.2 정보 통신과 네트워크
1.1.3 인터넷과 초연결사회
1.2 소프트웨어와 프로그래밍 언어
1.2.1 소프트웨어의 계층적 구조
1.2.2 프로그래밍 언어의 발전
1.2.3 컴파일러와 인터프리터
1.3 왜 파이썬(Python)인가?
1.3.1 파이썬의 철학과 특징
1.3.2 프로그래밍 언어의 트렌드
1.4 문제 해결(Problem Solving)과 프로그래밍
연습문제
CHAPTER 02 파이썬의 구성과 간단한 파이썬 프로그램의 예
2.1 파이썬 프로그래밍 환경
2.1.1 파이썬 인터프리터와 에디터
2.1.2 외부 제공 Python IDE
2.2 파이썬 프로그램의 구성 요소
2.2.1 데이터와 프로그램의 실행
2.2.2 입출력 문
2.2.3 변수와 표현식
2.2.4 제어문과 주석문
2.2.5 함수
2.2.6 객체지향 프로그래밍
2.3 파이썬의 데이터형
2.3.1 정수, 실수 및 부울
2.3.2 스트링과 파일
2.3.3 리스트, 튜플, 딕셔너리 및 집합
2.4 간단한 파이썬 프로그램 사례
연습문제
CHAPTER 03 변수와 표현식
3.1 파이썬 데이터의 유형
3.1.1 기본 데이터형
3.1.2 구조적 데이터형
3.2 상수(Constant)와 리터럴(Literal)
3.2.1 상수와 리터럴
3.2.2 스트링 리터럴
3.2.3 포맷 지정 함수
3.3 변수와 동적 타이핑
3.3.1 변수와 변수 이름
3.3.2 키워드
3.3.3 동적 타이핑
3.4 표현식과 할당문
3.4.1 표현식
3.4.2 연산자 우선순위
3.4.3 할당문과 참조 개념
3.5 키보드 입력을 통한 변수값의 할당
연습문제
CHAPTER 04 선택문: if_else 문
4.1 프로그램 실행 순서의 제어
4.2 부울식
4.2.1 비교연산자
4.2.2 멤버쉽 연산자
4.2.3 논리연산자
4.2.4 연산자의 우선순위와 부울식
4.3 if_else 문
4.3.1 if_else 문의 기본 구조
4.3.2 if_else 문의 조건
4.3.3 파이썬 프로그램의 들여쓰기
4.4 중첩 if(Nested if) 문
4.5 터틀 그래픽(Turtle Graphics) (1)
4.5.1 터틀 그래픽이란?
4.5.2 절대 위치와 상대 위치
4.5.3 if_else 문을 이용한 터틀 그래픽의 사례
연습문제
CHAPTER 05 반복문: while 문과 for 문
5.1 while 문
5.1.1 while 문의 기본 구조
5.1.2 while 문의 조건
5.1.3 입력 오류 체크
5.2 무한 루프
5.3 for 문
5.3.1 for 문의 기본 구조
5.3.2 for 문과 range 함수
5.4 터틀 그래픽(Turtle Graphics) (2)
5.4.1 터틀 그래픽의 메소드
5.4.2 반복문을 이용한 터틀 그래픽
5.4.3 터틀 그래픽의 애니메이션 사례
연습문제
CHAPTER 06 리스트(List), 튜플(Tuple) 및 스트링(String)
6.1 리스트의 특성
6.1.1 리스트란?
6.1.2 파이썬의 리스트
6.2 리스트의 구조와 연산
6.2.1 리스트의 인덱싱과 슬라이싱
6.2.2 리스트의 연산
6.2.3 리스트 함수와 메소드
6.2.4 중첩 리스트(Nested List)
6.2.5 리스트의 복사
6.3 튜플의 특성
6.3.1 튜플이란?
6.3.2 튜플의 기본 연산
6.3.3 튜플의 함수와 메소드
6.4 스트링 처리
6.4.1 텍스트와 스트링
6.4.2 스트링 연산자 및 함수
6.4.3 스트링 메소드
6.5 순서형 데이터와 반복 구조
6.5.1 리스트와 for 루프
6.5.2 리스트와 while 루프
연습문제
CHAPTER 07 함수(Function)
7.1 함수의 역할
7.1.1 함수를 사용하는 이유
7.1.2 함수의 형식
7.1.3 함수의 형태
7.2 파이썬 함수
7.2.1 파이썬 함수의 유형
7.2.2 내장 함수(Built-in Function)
7.2.3 모듈 함수(Module Function)
7.2.4 사용자정의 함수(User-defined Function)
7.2.5 람다(Lambda) 함수
7.3 매개변수의 전달
7.3.1 매개변수(Parameter)와 인수(Argument)
7.3.2 위치 인수, 키워드 인수 및 디폴트 인수
7.4 변수의 효력 범위(Scope)
7.4.1 지역변수(Local Variable)와 전역변수(Global Variable)
7.4.2 전역변수(Global Variable)의 명시적 선언
연습문제
CHAPTER 08 프로그램의 모듈화
8.1 모듈화 설계
8.1.1 모듈이란?
8.1.2 모듈화 설계의 이점
8.1.3 파이썬의 모듈
8.2 모듈의 이름 공간(Namespace)과 임포트(import) 명령
8.2.1 이름 공간이란?
8.2.2 모듈의 임포트
8.2.3 메인 모듈에서만 실행 명령
8.3 패키지(Package)
8.3.1 패키지를 작성하는 이유
8.3.2 패키지 작성 방법
8.4 파이썬 표준 라이브러리 모듈
8.4.1 math 모듈
8.4.2 random 모듈
8.4.3 time 모듈과 datetime 모듈
8.4.4 sys 모듈과 os 모듈
연습문제
CHAPTER 09 딕셔너리(Dictionary), 집합(Set) 및 텍스트 파일
9.1 딕셔너리(Dictionary)의 특성
9.1.1 딕셔너리란?
9.1.2 파이썬의 딕셔너리
9.2 딕셔너리(Dictionary)의 구조
9.2.1 딕셔너리의 동적 생성
9.2.2 딕셔너리 연산자
9.3 집합(Set) 데이터
9.3.1 집합이란?
9.3.2 집합 연산자
9.4 텍스트 파일
9.4.1 텍스트 파일이란?
9.4.2 텍스트 파일의 입력
9.4.3 텍스트 파일의 출력
연습문제
CHAPTER 10 유용한 프로그래밍 기법
10.1 재귀 함수(Recursive Function)
10.1.1 재귀 함수의 의미
10.1.2 반복과 재귀
10.1.3 재귀 함수의 예
10.1.4 하노이 탑(Tower of Hanoi)
10.2 예외 처리(Exception Handling)
10.2.1 오류의 발생과 예외 처리
10.2.2 파이썬의 표준 예외
10.2.3 try-except 문
10.3 정규표현식(Regular Expression)
10.3.1 정규표현식이란?
10.3.2 정규표현식을 통한 패턴 매칭
10.3.3 적용 사례
연습문제
CHAPTER 11 객체지향 프로그래밍
11.1 클래스(Class)와 객체(Object)
11.1.1 객체란 무엇인가?
11.1.2 클래스와 객체의 개념
11.1.3 절차적 프로그래밍 언어와 객체지향 프로그래밍 언어
11.2 파이썬의 사용자정의 클래스
11.2.1 파이썬의 클래스 정의
11.2.2 파이썬의 객체 생성
11.2.3 클래스 변수와 인스턴스 변수
11.2.4 특수 메소드(Special method)
11.3 객체지향 프로그래밍 언어의 특징
11.3.1 캡슐화(Encapsulation)
11.3.2 상속(Inheritance)
11.3.3 다형성(Polymorphism)
연습문제
CHAPTER 12 파이썬 활용을 위한 라이브러리
12.1 파이썬 라이브러리
12.1.1 파이썬 표준 라이브러리
12.1.2 GUI 라이브러리 tkinter
12.1.3 파이썬 외부 라이브러리(Third-Party Library)
12.2 수리 연산 및 데이터 처리
12.2.1 수리 연산 - NumPy
12.2.2 데이터 시각화 - Matplotlib
12.2.3 빅데이터 분석 - Pandas
12.3 이미지 처리 - Pillow
12.4 기계학습과 딥러닝 - TensorFlow와 Keras
연습문제
Author
최윤철,임순범
서울대학교 전자공학과 졸업
University of Pittsburgh(석사)
University of California, Berkeley(석사 및 공학박사)
연세대학교 컴퓨터과학과 교수, 명예교수
주요 경력
- Lockheed사 및 Rockwell International사 연구원
- University of Massachusetts 교환교수
- 일본 게이오대학 교환교수
- 한국멀티미디어학회 회장, 명예회장
- 전자책(eBook) 표준 제정위원장
관심분야: 컴퓨터그래픽스, 멀티미디어, HCI, 스케치기반 인터페이스 및 모델링(SBIM)
서울대학교 전자공학과 졸업
University of Pittsburgh(석사)
University of California, Berkeley(석사 및 공학박사)
연세대학교 컴퓨터과학과 교수, 명예교수
주요 경력
- Lockheed사 및 Rockwell International사 연구원
- University of Massachusetts 교환교수
- 일본 게이오대학 교환교수
- 한국멀티미디어학회 회장, 명예회장
- 전자책(eBook) 표준 제정위원장
관심분야: 컴퓨터그래픽스, 멀티미디어, HCI, 스케치기반 인터페이스 및 모델링(SBIM)