컴퓨터 과학이 여는 세계
세상을 바꾼 컴퓨터, 소프트웨어의 원천 아이디어 그리고 미래
컴퓨터/소프트웨어의 근본을 알려주는 교양과학서
오늘날 인류에 광범위한 영향을 미치고 있는 컴퓨터/소프트웨어는 누가 어떻게 만들었을까? 원천 아이디어는 어디서 나왔으며, 컴퓨터가 우리의 지능과 본능과 현실을 어떻게 확장시키고, 미래는 어떻게 펼쳐질 것인가? 이젠 일상을 움직이는 중요한 인프라가 된 컴퓨터/소프트웨어를 이해해서 응용을 창조하거나, 안목을 가지려면 어떻게 할 것인가?
디지털 문명을 탄생시킨 동시대 청년 과학도 이야기
-. 20세기 수학계의 큰 꿈을 좌절시킨 괴델(Kurt G?del)의 불완정성 정리(incompleteness theorem). 당시 25세.
-. 앨런 튜링(Alan Turing)이 재증명한 불완전성 정리. 그 와중에 사용된 소품으로 컴퓨터의 원천적 디자인이 슬쩍 드러나 21세기 정보혁명의 총아가 된다. 당시 24세
-. 여기에 스위치 기술과 부울논리(boolean logic)가 만나(클로드 섀넌(Claude Shannon), 당시 21세), 스위치만으로 컴퓨터의 모든 것이 만들어진다.
선진국형 원천지식을 형성하는 토양
정보이론, 암호, 개인인증 등 컴퓨터과학이 보여주는 풍경 아래 흐르는, 원천 아이디어가 나온 이야기와 의미를 들려준다. 원천지식의 동기와 근본을 꿰뚫는 시각을 튼튼히 한다면 다양한 응용의 한계와 가능성을 쉽게 파악할 수 있고, 남들이 미처 보지 못하는 곳을 볼 수 있을 것이다.
소프트웨어 교과과정 도입 움직임에 대한 학계의 한 응답
전세계적으로 소프트웨어 교육이 필수가 되고 있으며, 우리나라도 예외는 아니다. 하나 교육의 목표는 우리를 둘러싼 디지털 세상을 바라보는 시야를 형성해 주는 것이지, 몇 가지 프로그래밍 명령어를 가르쳐 주는 데 머물러서는 안 될 것이다. 이 책은 소프트웨어 교육을 둘러싼 움직임에 대한 학계의 한 응답으로 만들어졌다.
추천글
도경구(한양대학교 전자컴퓨터학부 컴퓨터공학전공 교수): 난해한 개념을 재미있는 이야기로 풀어낸 교양서
컴퓨터과학의 난해한 개념들이 이광근 교수의 마술 같은 손놀림 덕분에 재미있는 이야기로 재탄생했다. 컴퓨터과학에 궁금증을 갖고 있던 일반 대중에게는 새로운 세상 탐미의 교양서가 될 것이며, 컴퓨터과학을 막 배우기 시작하는 젊은이들에게는 훌륭한 입문서가 될 것이며, 전문가들에게는 컴퓨터과학의 진면목을 되짚어 볼 수 있는 기술서가 될 것이다. 꿈나무들에게 필독서로 지체 없이 권장할 책이 드디어 등장했다는 생각에 가슴이 설렌다. 이제 우리 모두 우리말로 편하게 컴퓨터과학의 오묘한 세계에 빠져보자.
문병로 (서울대 컴퓨터공학부 교수): 컴퓨터과학 태동과 여정을 간결한 호흡으로 담은 장대한 이야기
멋진 책이 등장했다. 컴퓨터과학의 배아 상태에서부터 탄생, 성장, 미래에 이르는 과정을 담은 책이다. 컴퓨터과학이란 학문이 어떻게 태동했고, 어떤 지적 여정을 거쳐서 여기까지 왔으며, 그 추상화 레벨은 어떤 생각의 구조 위에 성장해 왔는가에 관한 이야기다. 이 장대한 이야기를 비교적 짧은 한 권의 책 속에 간결한 호흡으로 담았다. 비범한 콘텐츠 위에 저자가 풍기는 인간적인 매력과 흥분을 그대로 드러낸다.
김기응 (KAIST 전산학과 교수): 미래 고전이 될, 담대한 안목과 통찰을 담은 책
컴퓨터 전문가를 꿈꾸는 입문자뿐 아니라 전문가도 한 번쯤은 읽어봐야 할, 앞으로 고전이 될 책이다. 길게는 5년이면 서가에서 사라질 최신 컴퓨터 기술 입문서들의 홍수 속에서 바로 이런 책의 탄생을 갈망해왔다. 이 책은 다음 세기에도 읽히는 데 전혀 손색이 없을 정도로 담대한 안목과 통찰을 담고 있다. 이 책을 읽기 위해 한국어를 공부하는 외국인 독자들도 생길 것 같다.
박성우 (POSTECH 컴퓨터공학과 교수): 컴퓨터과학의 근본에 대한 명쾌한 답
이십 년 넘게 공부한 컴퓨터과학이지만 기원과 본질, 미래가 무엇인지는 막연하게만 생각해 왔다. 오랫동안 품어왔던 컴퓨터과학 근본에 대한 질문에 이 책은 명쾌하게 답해 주고 있다. 이 책은 컴퓨터과학에 대한 교양서로서도 훌륭하지만, 전공자도 컴퓨터과학에 새로 눈뜨게 할 깊은 이야기를 이해하기 쉽게 들려준다.
정주희 (경북대학교 과학교육연구소장): 이론과 실제의 양면에서 맛깔스럽게 차려낸 솜씨가 놀랍다
과학기술을 비전문가에게 소개하는 책은 일반에게 과학을 알리는 원래의 목적을 달성하기보다는 과학으로 포장된 비과학, 즉 ‘겉멋’을 퍼뜨리는 역할을 하는 데 그치기 쉽다. 과학기술을 정확하게 책에 넣으면 너무 따분해지고, 그렇다고 대중이 쉽게 읽을 수 있도록 각색을 하다 보면 알맹이는 빠지고 껍데기만 담은 책이 나오기 마련이다. 내가 좋아하는 자연과학 대중서의 저자 목록에는 George Gamow와 D.R Hofstadter의 둘밖에 없었는데 이번에 이광근 교수를 더하게 되어 무척 기쁘다. 컴퓨터과학의 이론과 실제의 양면에서 가장 중요한 부분을 추려 맛깔스럽게 차려낸 솜씨가 놀랍다.
허충길 (서울대학교 컴퓨터공학부 교수): 컴퓨터과학의 시초부터 최신까지 정말 제대로 정리한 책
컴퓨터과학을 제대로 이해하고 싶은 독자들에게 이 책을 강력히 추천한다. 컴퓨터과학의 시초부터 최신 연구 분야까지 왜 이렇게 발전해 왔는지 그리고 앞으로 어떻게 발전해 나갈지 깊은 통찰력을 줄 뿐만 아니라, 이에 대한 기술적인 설명도 뒤따른다. 이 책은 전세계 어디에서도 본 적이 없는, 컴퓨터과학을 정말 제대로 정리해 놓은 책이다.
정교민 (서울대학교 전기정보공학부 교수): 컴퓨터가 만든 지적 세계를 안내하는 신명나는 안내서
컴퓨터는 현대인의 삶에 혁명적 변화를 가져다 준 가장 중요한 발명품 중 하나다. 이 책은 컴퓨터의 탄생 이야기, 소프트웨어의 원리 등 그 구현을 위한 핵심 아이디어와 다양한 응용 분야를 맛깔스럽게 풀어서 설명하고 있다. 한 줄 한 줄 읽는 독자들에게 컴퓨터가 만들어낸 지적 세계로 안내하는 신명나는 여행안내서가 될 것이다.
오학주 (고려대학교 컴퓨터학과 교수): 독자에게 열정과 탐구심을 고취시키는 책
근본적인 내용에 집중하여 컴퓨터과학의 전경을 꿰뚫어 볼 수 있는 통찰력을 마련해주는 책이다. 컴퓨터과학의 폭넓은 가능성 또한 제시해 줌으로써 독자로 하여금 열정과 탐구심마저 고취시킨다. 컴퓨터과학에 대한 깊이 있는 이해를 원하는 입문자와 전공자 모두에게 강력히 추천하고 싶은 책이다.
저자 이광근
1993~1995년 벨 연구소(Bell Labs) 연구원을 거쳐, 1995~2003년에는 KAIST 전산학과 교수를 역임했으며, 현재까지 서울대학교 컴퓨터공학부 교수로 있다. 1998~2003년에는 과학기술부 창의원구단 단장, 2008~2015년에는 교육과학기술부 선도연구센터 센터장으로 활동했다. MIT, Ecole Normale Superieure Paris, 스탠퍼드 대학, 페이스북 등 유수의 교육 기관에서 방문교수로 있기도 했다.
제어 구조의 설계 원리를 중심으로 배우는
프로그래밍의 정석 : 파이썬
프로그래밍 전문가가 제대로 만든 책
이 책을 제대로 배운다면 다른 프로그래밍 언어도 쉽게 배울 수 있다.
프로그래밍 교육을 진행하면서 학생들과 프로그래밍 연구자들에게 직접 검증받고 호평받은 책이다. 프로그래밍을 처음 배우는 사람부터 파이썬 기초만 배웠거나 다른 프로그래밍 언어를 배운 사람까지 파이썬을 제대로 배울 수 있게 도와준다. 특히 프로그램 논리를 이해하는데 가장 핵심이 되는 제어 구조를 설계하는 원리를 체계적으로 다룬다.
목차
파이썬 인터프리터 준비
chapter 1 식
1.1 문자열
1.2 수식
1.3 타입 변환
1.4 오류
연습 문제
chapter 2 변수와 함수
2.1 변수
2.2 함수
연습 문제
chapter 3 제어 구조
3.1 논리식
3.2 선택문
3.3 반복문
3.4 문자열 해부
연습 문제
chapter 4 재귀와 반복 : 자연수 계산
4.1 자연수 수열의 합
4.2 거듭제곱
4.3 최대공약수
4.4 곱셈
연습 문제
chapter 5 재귀와 반복 : 정렬
5.1 시퀀스
5.2 리스트 정렬
연습 문제
chapter 6 재귀와 반복 : 검색
6.1 순차검색
6.2 이분검색
6.3 성능 비교
6.4 텍스트 파일 처리
6.5 문자열 검색
연습 문제
chapter 7 표채워풀기
7.1 피보나치 수열
7.2 조합
7.3 1까지 줄이는 최소 스텝
7.4 하노이의 탑
연습 문제
chapter 8 프로젝트 기반 학습 I : 퍼즐게임 스도쿠
8.1 중첩 루프
8.2 프로그래밍 프로젝트 : 스도쿠
연습 문제
chapter 9 프로젝트 기반 학습 II : 카드게임 블랙잭
9.1 집합
9.2 카드게임 API 라이브러리 모듈
9.3 프로그래밍 프로젝트 1단계 : 블랙잭
9.4 딕셔너리
9.5 프로그래밍 프로젝트 2단계 : 블랙잭 (기능 확장)
연습 문제
chapter 10 예외 처리
10.1 내장 예외
10.2 예외 처리 제어 구조
10.3 assert 문
10.4 사용자 정의 예외
연습 문제
추천사
최광훈 (전남대학교 교수) 처음 코딩을 배우는 사람들은 누구나 필연적으로 반복과 재귀의 장벽에 가로막히게 된다. 이 책은 이 장벽을 허물어 코딩의 신세계를 열어주는 차별화된 입문서이다.
안준선 (한국항공대학교 교수) “컴퓨팅적 사고를 습득해가는 친절한 안내서” 즉, 언어의 문법과 동작 설명으로 프로그래밍 원리의 터득을 강요하는 수많은 프로그래밍 책들 사이에서, 프로그래밍을 위한 사고의 틀을 배울 수 있는 귀한 책이다.
신승철 (코드마인드 대표) 이 책은 프로그래밍 입문서는 어떤 모습이어야 하는지 모델을 제시한다. 잘못된 프로그래밍 기초 교육은 특정 프로그래밍 언어 설명에 매몰되기 쉬운데 이 책은 파이썬 언어의 가장 기초적인 요소들만 가지고 프로그래밍의 핵심 개념에 제대로 집중하게 해준다.
정영범 (FuriosaAI Software Product Manager) 프로그래밍은 첫 만남이 중요하다. 프로그램을 창조하는 데 즐거움을 느낄 때까지의 시간이 짧을수록 프로그래밍을 잘하게 될 가능성이 커진다. 이 책은 프로그래밍을 처음 접하는 사람들이 쉽고 빠르게 프로그래밍에 빠질 수 있도록 친절하게 안내한다.
변석우 (경성대학교 교수) 이 책은 컴퓨터 프로그래밍의 초보자를 대상으로 하고 있다. 그럼에도 불구하고, 컴퓨터 과학의 핵심 기술인 재귀함수, 리스트 및 튜플의 메모리 구조, 여러 주요 정렬 및 검색 알고리즘, 동적 프로그래밍 등 기본 개념에 대한 충실한 설명과 함께 코딩 방법에 대해서 설명하고 있다.
조장우 (동아대학교 교수) 기존의 프로그래밍 입문 교재들은 프로그래밍 언어 사용법에 그치고, 정작 중요한 논리적 사고력과 문제풀이 능력을 향상하는 과정은 부족하다고 느끼고 있었는데, 이 책은 이런 고민을 해결해 주는 책이다.
이계식 (한경대학교 교수) 컴퓨터 프로그래밍의 핵심 요소들 사이의 연관성을 논리적 관점에서 이해하여 사고하는 법을 스스로 학습하도록 도와주는 책이다. 특히 귀납과 재귀와 반복의 연관성을 체계적으로 설명하는 프로그래밍 책으로는 유일하다.
박성우 (POSTECH 교수) 논리적 사고력 함양이라는 명확한 철학 위에서 설계되었고 대학에서 10년간 강의를 거쳐 내용이 검증된 교재라는 점에서 흔한 코딩 교재와는 차원이 다르다.
안기영 (한남대학교 교수) 원리 이해 없이 따라 해보기나 줄거리 없는 백과사전식 나열이 아닌, 컴퓨터 과학의 기초적 원리들을 구체적 예제를 통해 기초부터 탄탄한 실력을 기를 수 있도록 구성! 파이썬으로 진행하는 SW 전공 강좌의 교재로 강력히 추천합니다.
창병모 (숙명여자대학교 교수) 이 책은 최근에 많이 사용되고 있는 파이썬 언어를 기반으로 기본적이면서도 중요한 프로그래밍 문제를 중심으로 프로그래밍을 제대로 익힐 수 있는 교재이다. 이 책이 여러분을 재미있는 프로그래밍의 세계로 인도하는 길잡이가 될 것으로 기대한다.
알고리즘 기초
목차
chapter 1 알고리즘 : 효율, 분석, 차수
chapter 2 분할정복
chapter 3 동적계획
chapter 4 탐욕 알고리즘
chapter 5 되추적
chapter 6 분기한정법
chapter 7 계산복잡도의 소개 : 정렬문제
chapter 8 계산복잡도 : 검색문제
chapter 9 계산복잡도와 다루기 힘든 정도 : NP 이론의 소개
chapter 10 유전 알고리즘과 유전 프로그래밍
chapter 11 정수론 기반 알고리즘
chapter 12 병렬 알고리즘 개론
appendix A 수학
appendix B 재현식의 해 구하기 : 재귀 알고리즘 분석용
appendix C 서로소 집합의 데이터 구조
Richard Neapolitan
도경구
1993년부터 1995년까지 일본 會津 대학 교수로 재직했으며, 현재 한양대학교 전자컴퓨터학부 컴퓨터공학전공 교수로 재직중이다.
명품 C++ Programming
C++ 언어와 프로그래밍 기술을 쉽게 풀어서 설명하였고, 적절한 예제를 수록하였다. 많은 그림과 삽화로 개념을 쉽게 이해하도록 하였고, 각 절마다 Check Time 문제를 두어 배운 내용을 확인할 수 있도록 하였다. 또한 각 장마다 Open Challenge 문제를 두어 도전하는 과정을 두었으며, 연습문제는 난이도와 함께 이론과 실습 문제로 구분하여 단계별로 학습할 수 있도록 하였다.
C++는 1979년 Bjarne Stroustrup에 의해 “C with Classes”라는 이름으로 시작되었지만, 지금은 시스템 소프트웨어, 응용 소프트웨어, 게임, 임베디드 소프트웨어, 모바일 프로그램 등 소프트웨어의 전 분야에 활용되고 있다. C++는 Java나 C#에 비해 실행 속도가 빠르다고 알려져 있고, 메모리나 I/O 포트를 직접 접근하므로 하드웨어 제어에 강점을 가진다. 이처럼 C++는 광범위하면서도 파괴력 있는 언어이고, Java나 C# 등 현대적 객체 지향 언어를 낳게 한 모태 언어이므로, 소프트웨어 전문가로서 탄탄한 기반을 갖추기 위해서라면 C++ 언어에 대한 충실한 이해가 필요하다.
이 책의 특징
첫째, C++ 언어와 프로그래밍 기술을 쉽게 풀어서 설명하였고, 적절한 예제를 수록하였다.
둘째, 많은 그림과 삽화로 개념을 쉽게 이해하도록 하였다.
셋째, 각 절마다 Check Time 문제를 두어 배운 내용을 확인할 수 있도록 하였다.
넷째, 각 장마다 Open Challenge 문제를 두어 도전하는 과정을 두었다.
다섯째, 연습문제는 난이도와 함께 이론과 실습 문제로 구분하여 단계별로 학습할 수 있도록 하였다.
개정판에서 추가되거나 달라진 부분
1. 책 전반에 걸쳐 C++ 표준이 변화함에 따라 틀린 내용을 바로잡았다.
2. 연습문제를 추가하고 목적을 명시하여 독자들이 문제의 방향을 잡도록 하였다.
3. 3장에는 위임 생성자, 생성자와 멤버 변수 초기화 방법을 추가하였다.
4. 7장에는 연산자 작성을 추가하여 참조 리턴의 필요성을 깨닫도록 하였다.
5. 9장에는 함수 재정의와 오버라이딩이 잘 구분되도록 설명을 수정하고, override와 final 키워드에 관한 설명을 추가하였다.
6. 10장에는 4절에 map 컨테이너의 설명을 추가하고, 5절을 새로 추가하여 auto와 람다(lambda)에 대한 기초적인 내용을 담았다.
이 책의 내용
1장은 C++ 언어에 대해서 설명한다. C++ 언어의 역사와 특징을 알아보고 C++ 프로그램의 개발 과정을 설명한다. 2장은 C++ 프로그래밍의 기본에 대해서 설명한다. C++ 프로그램의 기본 요소와 화면 출력에 대해 알아보고 문자열을 다루는 방법과 키보드로부터 문자열을 입력받는 방법을 설명한다. 3장은 클래스와 객체에 대해 설명한다. 객체, 클래스, 생성자, 소멸자, 접근 지정, 인라인 함수, C++ 구조체에 대해 이해하고 바람직한 C++ 프로그램의 작성 과정을 알아본다.
4장은 객체 포인터와 객체 배열, 동적 메모리 할당 및 반환, 객체와 객체 배열의 동적 생성 및 반환에 대해 설명한다. 또한 this의 기본 개념과 제약 조건, string 클래스를 이용한 문자열 사용에 대해 알아본다. 5장은 함수와 참조, 복사 생성자에 대해 설명한다. 값에 의한 호출, 주소에 의한 호출, 객체 치환 및 객체 리턴, 참조와 함수에 대해 알아본다. 또한 깊은 복사와 얕은 복사에 대해 설명한다. 6장은 함수 중복과 static 멤버에 대해 설명한다. 디폴트 매개 변수, 형 변환으로 인한 모호성, 참조 매개 변수로 인한 모호성, 디폴트 매개 변수로 인한 모호성을 알아본다. 또한 static 멤버의 활용에 대해 설명한다.
7장은 프렌드와 연산자 중복에 대해 설명한다. 프렌드의 개념, 이항 연산자 중복, 단항 연산자 중복에 대해 알아본다. 또한 연산자 함수를 클래스의 외부 함수로 작성하고 프렌드로 선언하는 방법을 설명한다. 8장은 상속의 개념, 클래스 상속과 객체, 상속과 객체 포인터, protected 접근 지정에 대해 설명한다. 또한 상속의 종류, 다중 상속의 선언과 활용, 가상 상속의 선언과 가상 상속으로 다중 상속의 문제를 해결하는 방법에 대해 알아본다. 9장은 가상 함수와 추상클래스에 대해 설명한다. 상속 관계에서의 함수 중복과 가상 함수와 오버라이딩의 활용 사례에 대해 알아본다. 또한 추상 클래스의 개념, 구현, 용도에 대해 설명한다.
10장은 템플릿과 표준 템플릿 라이브러리(STL)에 대해 설명한다. 일반화의 개념을 이해하고 다양한 제네릭 함수와 제네릭 클래스를 만들어보고 C++ 표준 템플릿 라이브러리(STL)와 활용에 대해 설명한다. 또한 auto와 람다에 대해 알아본다. 11장은 C++ 입출력 시스템에 대해 설명한다. 스트림 입출력에 대해 이해하고 문자 입출력, 포맷 입출력, 사용자 삽입 연산자와 추출 연산자에 대해 알아보고 사용자 조작자 만들기에 대해 설명한다. 12장은 C++ 파일 입출력에 대해 설명한다. 텍스트 파일과 바이너리 파일에 대해 이해하고 파일 읽기 및 쓰기, 스트림 상태에 대해 알아본다. 또한 임의 접근으로 인한 파일 입출력에 대해 설명한다. 13장은 예외 처리와 C 언어와의 링크 지정에 대해 설명한다. 실행 오류와 오류 처리 방법에 대해 이해하고 예외 처리 코드를 작성하는 방법을 알아본다. 또한 C 언어로 작성된 소스 코드나 이미 컴파일된 목적 코드를 C++ 프로그램에서 사용하는 방법을 알아본다.
황기태
2017년 현 한성대학교 컴퓨터공학부 교수
서울대학교 컴퓨터공학과 박사
서울대학교 컴퓨터공학과 석사
서울대학교 컴퓨터공학과 학사
비트교육센타 센타장
IBM Watson Research Center 방문 연구원
University of California, Irvine 방문 교수
University of Florida 방문 교수
1986년 서울대학교 컴퓨터공학과를 졸업하고, 서울대 대학원 컴퓨터공학과에 입학하여 1988년에 석사, 1994년에 박사 학위를 취득하였다. 1993년 뉴욕에 있는 IBM Watson Research Center에서 방문 연구원을 지내고 1994년부터 현재까지 한성대학교 컴퓨터공학과 교수로 재직중이다. 1990년 비트교육센터의 초기 센터장으로 1994년까지 조현정 회장과 함께 대한민국 최고의 비트교육센터 신화의 토대를 만들었다. 2000년에는 미국 얼바인에 있는 캘리포니아 대학에서, 2011, 2015년에는 플로리다 대학에서 방문 교수를 지냈다.
[저서]
비트프로젝트1, 2(1994, 비아이티출판)
어드밴스 윈도우 NT(1996, 대림출판사)
자바스크립트 웹프로그래밍(2000, 대림출판사)
DHTML+자바스크립트(2003, 대림출판사)
명품 JAVA Programming(2011, ㈜생능출판사)
명품 C++ Programming(2013, ㈜생능출판사)
명품 자바 에센셜(2014, ㈜생능출판사)
컴퓨팅 사고력을 키우는 이산수학
컴퓨터를 이해하기 위한 수학적 이론을 설명한 이산수학 입문서이다. 어려울 수 있는 수학 이론을 최대한 쉽고 친절하게 풀어냈다. 배운 개념을 바로 적용해서 풀 수 있는 다양한 문제를 수록했다. 초판보다 더 알차고 새로운 구성으로 개정판을 준비했다.
Chapter 01 이산수학 소개와 이 책의 학습 방법
1.1 이산수학이란
1.2 이산수학의 주제
1.3 이 책의 학습 방법
Chapter 02 수의 표현
2.1 수 체계
2.2 수의 연산
2.3 수의 표현
2.4 컴퓨터에서의 수의 표현과 연산
요약
연습문제
Chapter 03 논리
3.1 명제
3.2 논리적 동치
3.3 변수를 포함하는 명제
3.4 추론
요약
연습문제
Chapter 04 증명
4.1 증명의 이해
4.2 직접증명법
4.3 간접증명법
4.4 존재/반례 증명법
4.5 수학적 귀납법
요약
연습문제
Chapter 05 집합
5.1 집합의 개념
5.2 집합의 종류
5.3 집합의 연산
5.4 집합의 대수법칙
5.5 집합의 분할
요약
연습문제
Chapter 06 행렬
6.1 행렬의 개념
6.2 행렬의 연산
6.3 행렬의 종류
6.4 행렬식
6.5 역행렬
6.6 연립1차방정식
요약
연습문제
Chapter 07 관계
7.1 관계의 개념
7.2 관계의 표현
7.3 관계의 성질
7.4 합성관계
7.5 관계의 폐포
7.6 동치관계와 부분순서관계
요약
연습문제
Chapter 08 함수
8.1 함수의 개념
8.2 함수의 특성
8.3 합성함수
8.4 함수의 종류
요약
연습문제
Chapter 09 그래프
9.1 그래프의 개념
9.2 그래프의 종류
9.3 그래프의 표현
9.4 오일러와 해밀턴
9.5 그래프의 활용
요약
연습문제
Chapter 10 트리
10.1 트리의 개념
10.2 이진 트리
10.3 트리의 활용
요약
연습문제
Chapter 11 부울대수
11.1 부울대수의 개념
11.2 부울함수의 표현
11.3 논리 게이트
요약
연습문제
Chapter 12 순열, 조합, 확률
12.1 합의 법칙과 곱의 법칙
12.2 순열
12.3 조합
12.4 확률
12.5 확률분포
요약
연습문제
Chapter 13 알고리즘
13.1 알고리즘의 개념
13.2 알고리즘의 효율성
13.3 다양한 알고리즘
저자 : 박주미
상명대학교에서 정보과학을 전공하고 동 대학원에서 석사학위를 취득하고 박사학위를 수료하였다. 현재 상명대학교, 국민대학교, 경기대학교 등에서 이산수학과 C 프로그래밍을 강의하고 있다. 주요 강의 과목으로 이산수학, C 프로그래밍, 논리회로 등이 있다.
프로그래밍 언어론 (워크북 포함)
우균, 김진욱 (지은이) 한국방송통신대학교출판문화원
프로그래밍 언어는 컴퓨터에 우리의 의사를 전달하는 도구이다. 프로그래밍 언어를 이용하여 프로그램 형태로 작성하기만 하면 컴퓨터는 이를 충실히 수행해 낸다. 컴퓨터가 수행할 명령어를 순서대로 나열한 것을 프로그램이라고 부른다. 나라별로 여러 언어가 있는 것처럼 프로그래밍 언어도 C, C++, Java, Python 등 다양하게 존재한다. 한국어, 영어 등 언어마다 사용하는 단어도 다르고 문법도 다르지만 동일한 의사를 전달할 수 있는 것처럼, 각 프로그래밍 언어가 사용법은 다를지라도 프로그램을 통해 동일한 의사를 전달할 수 있다. 이 교과목은 프로그래밍 언어의 정의, 기능, 구성 요소 등을 다루어 프로그래밍 언어 자체에 대한 감각을 키우는 데 목적을 두고 있다. 이를 통해 새로운 언어는 쉽게 배우고, 이미 사용 중인 언어는 더 잘 이해할 수 있으며, 나아가 궁극적으로 현명한 언어 설계자가 될 수 있다. 선수과목으로 C나 C++를 권장하지만, 필수는 아니다. 따라서 프로그래밍 언어에 익숙하지 않은 학생들도 이 교과목에서 다루는 다양한 예제들을 직접 실행해 보면서 감각을 키울 수 있기를 바란다.
우균
KAIST 전산학과 학사(1991), 석사(1993), 박사(2003)를 취득하고, 2000년부터 2004년까지 동아대학교 조교수로, 2004년부터는 부산대학교 정보컴퓨터공학부 부교수로 학생들을 가르치고 있다. 박사학위 연구 주제는 함수형 언어(functional languages)였으며, 현재는 프로그래밍 언어 및 컴파일러 구현, 소프트웨어 공학, 프로그램 분석 및 시각화, 로봇 프로그래밍 등을 연구하는 프로그래밍 언어 연구실을 이끌고 있다.
김진욱
서울대학교 자연과학대학 수학과 졸업
서울대학교 대학원 컴퓨터공학과 석사
서울대학교 대학원 전기컴퓨터공학부 박사
서울대학교병원 의료정보센터 교수
·현재: 한국방송통신대학교 컴퓨터과학과 교수
모두를 위한 컴퓨팅 사고
Python 기초문법 수록
김종완
서울대학교 컴퓨터공학과 (공학사)
서울대학교 컴퓨터공학과 (공학석사)
서울대학교 컴퓨터공학과 (공학박사)
미국 University of Massachusetts 컴퓨터학과 (Post-Doc.)
미국 University of Oregon 컴퓨터정보학과 (객원교수)
2013 현 대구대학교 컴퓨터IT공학부 교수
R로 배우는 데이터 과학
분석에서 예측을 위한 모델링까지
다양한 생활 데이터로 쉽게 배우는 데이터 과학
데이터에서 가치를 발견하고 이를 문제 해결에 활용하는 데 관심이 많은 사람들을 위한 데이터 과학 입문서입니다. 프로그래밍 경험이 전혀 없어도 시작할 수 있도록 R의 기본 사용법부터 데이터 과학의 주요 주제인 데이터 정제와 가공, 시각화, 모델링과 예측까지 충실히 설명합니다. 데이터 과학 학습을 위한 전형적인 데이터뿐만 아니라 현실감 있는 다양한 생활 데이터도 다양하게 실습해볼 수 있어 스스로 더 재미있는 데이터를 찾아 활용할 수 있는 기초 체력도 다질 수 있습니다.
저자 : 양윤석
전북대학교 바이오메디컬공학부 교수로 재직 중이다. 서울대학교 제어계측공학과를 졸업하고, 2002년에 서울대학교 의용생체공학과에서 박사학위를 받았다. 2002~2005년에 ETRI에서 선임연구원으로 재직했다. 주요 연구 분야는 에너지 수확과 휴먼-컴퓨터 인터페이스, 그리고 바이오 공학을 이용한 적정기술이다. 전북대학교 교수들로 구성된 록밴드 Profs에서 베이스 기타를 맡고 있다.
저자 : 오일석
전북대학교 컴퓨터공학부 교수로 재직 중이다. 서울대학교 컴퓨터공학부를 졸업하고, KAIST 전산학과에서 박사학위를 받았다. 주요 연구 분야는 기계 학습, 컴퓨터 비전, 패턴인식이다. 저서로는 한빛아카데미의 『기계학습』(대한민국학술원 2018년 우수학술도서)과 『컴퓨터 비전』(대한민국학술원 2015년 우수학술도서), 교보문고의 『패턴인식』(문화체육관광부 2009년 우수학술도서) 등이 있다.
저자 : 강래형
전북대학교 유연인쇄전자공학과 교수 및 로스알라모스연구소-전북대학교 한국공학연구소 연구소장으로 재직 중이다. 경북대학교 기계공학부와 전자전기공학부를 졸업하고, KAIST 항공우주공학과에서 박사학위를 받았다. C 언어 기초, 컴퓨터 프로그래밍의 기초, 데이터 과학 기초 등의 강의로 2018년 전북대 참스승 수업분야 최우수상을 수상했다. 주요 연구 분야는 구조 동역학 및 비파괴 검사다.
장교수의 딥러닝
목차
Chapter 01 머신러닝 개요
Chapter 02 신경망
Chapter 03 딥러닝과 정규화
Chapter 04 컨볼루션 신경망
Chapter 05 딥빌리프넷
Chapter 06 딥하이퍼넷
Chapter 07 순환신경망
Chapter 08 딥강화학습
Chapter 09 뉴럴튜링머신
Chapter 10 종단학습 모델
Chapter 11 대립학습 모델
Chapter 12 잔차학습 모델