소프트웨어 공학용 수학
이 강좌에서는 2차 산업혁명 때 필요했던 선형적인 수학 보다는 이산수학을 기본으로 하되 소프트웨어 공학자들이 커리어에서 유용하게 사용 가능한 여러가지 수학적 지식을 가르칩니다.
배울 내용
- 소프트웨어 공학 수학
- 논리적 사고 방식
- 실용적인 수학
- 프로그래머 수학
요구 사항
- 고등학교 수준 수학
- "프로그래밍 입문(C#)" 과목 수료
설명
본 비디오 강좌는 포큐아카데미에서 진행하는 COMP1000 수업의 비디오 강좌입니다.
수학은 과거부터 소프트웨어 공학에서 필수 학문으로 요구되어 왔습니다. 현재까지도 많은 프로그래밍 교육 기관에서 수학을 가르치고 있지만, 많은 학생들이 수학 공부의 필요성을 이해하지 못할 뿐만 아니라 배움에 어려움을 토로하는 경우가 많습니다.
수학은 수량 및 공간의 성질에 관하여 연구하는 학문으로써, 세상을 이해하기 위해 연구되는 학문입니다. 예를 들어, 그림자를 이용해 피라미드의 높이를 구하는 것 혹은 중력을 증명해내는 것이 이에 해당됩니다. 현재 중고등학교에서 배우는 수학은 과거에 천재 수학자들이 현실에 존재하는 여러가지 미지의 원리/현상들을 이해하기 위해 증명해낸 것들입니다. 이는 이론과 증명을 중요시하는 순수 수학에 해당됩니다.
현실 세상을 이해하기 위한 수학적 이론과 증명을 공부하기 위해서는 순수 수학이 필요하지만, 문제 해결을 위해 수학을 사용하고 컴퓨터 속 세상에서 살아야하는 현대의 소프트웨어 공학자들에게 이론 중심의 전통적인 수학은 맞지 않습니다. 고로, 본 강좌는 이론/증명 위주가 아닌 실용성 위주의 수학 & 컴퓨터를 이해하는데 중요한 수학에 중점을 두어 진행합니다.
여전히 수학은 매우 중요합니다. 소프트웨어 공학은 논리적 사고가 요구되는 일이기 때문에, 논리력이 부족하면 좋은 소프트웨어 공학자가 될 수 없다는 것을 의미합니다. 수학 또한 논리적 사고가 요구 되기 때문에, 수학을 통해 논리력을 향상 시키는 것이 곧 좋은 소프트웨어 공학자가 되는 길이라 할 수 있겠습니다.
이 강좌에서는 2차 산업혁명 때 필요했던 선형적인 수학 보다는 이산수학을 기본으로 하되 소프트웨어 공학자들이 커리어에서 유용하게 사용 가능한 여러가지 수학적 지식을 가르칩니다. 이 코스를 성공적으로 마무리한 분들은 다양한 문제 해결에 필요한 수학 지식과 함께 컴퓨터를 더 잘 이해 할 수 있을 것입니다.
이 강좌의 대상
- 컴퓨터 공학의 기본기를 배우고 싶은 분들
- 프로그래머로서 평생 커리어를 꿈꾸는 입문자들
강좌 콘텐츠
- 숫자 체계 (4:41)
- 10진법 (9:17)
- 2진법 (9:14)
- 복습 퀴즈
- 8진법 (8:18)
- 복습 퀴즈
- 16진법 (6:36)
- 복습 퀴즈
- 진수 변환 (1:28)
- 10진수->2진수 변환 (7:42)
- 2진수->10진수 변환 (3:31)
- 10진수/8진수 변환, 10진수/16진수 변환 (4:28)
- 2진수->8진수 변환 (2:06)
- 8진수->2진수 변환 (3:25)
- 2진수/16진수 변환 (3:32)
- 8진수/16진수 변환 (1:31)
- 복습 퀴즈
- 정리 (2:05)
- 비트와 바이트 (3:47)
- 비트 (4:12)
- 비트 수와 오디오 포맷 (9:07)
- 바이트 (5:00)
- 컴퓨터의 데이터 단위 (8:43)
- 다양한 진법간의 관계 (6:22)
- 영상 퀴즈
- 16진수와 비트 (9:29)
- 8진법, 32진법, 64진법 (8:53)
- 복습 퀴즈
- 정수, 부호없는 정수 (6:50)
- 부호없는 정수의 덧셈, 오버플로 (7:41)
- 복습 퀴즈
- 부호있는 정수 (7:16)
- 복습 퀴즈
- 부호있는 정수 표현의 문제 (3:37)
- 보수(complement) (9:48)
- 보수를 이용한 음수 표현 (9:57)
- 1의 보수 (10:42)
- 복습 퀴즈
- 1의 보수의 장점과 한계 (2:01)
- 2의 보수 (6:01)
- 복습 퀴즈
- 2의 보수의 장점 (3:16)
- 부호있는 정수의 덧셈 (7:32)
- 부호있는 정수의 뺄셈 (1:55)
- 영상 퀴즈
- 2의 보수를 이용한 뺄셈 (2:27)
- 언더플로, 프로그래밍 언어의 정수형 (7:05)
- 2진수의 곱셈 (3:25)
- 복습 퀴즈
- 보편적인 2진수의 곱셈, 2진수의 나눗셈, BCD(Binary-Coded Decimal) (8:55)
- 복습 퀴즈
- 문자, 아스키(ASCII) (7:32)
- 복습 퀴즈
- ANSI, 멀티바이트, 유니코드 (24:02)
- 복습 퀴즈
- UTF-8의 장점과 단점 (4:15)
- 복습 퀴즈
- UTF-8의 예, UTF-16, UTF-32 (6:38)
- 복습 퀴즈
- 정리 (5:51)
- 실수 (7:06)
- 실수의 10진수->2진수 변환 (11:48)
- 영상 퀴즈
- 정수의 이진법 표기의 한계 (5:38)
- 복습 퀴즈
- 고정 소수점 수 (9:13)
- 복습 퀴즈
- 부동 소수점 수, 과학적 표기법, 유효 숫자 (13:17)
- 복습 퀴즈
- 정확도와 정밀도, 정규화한 과학적 표기법 (9:07)
- 복습 퀴즈
- 32비트 부동 소수점(IEEE 754), 가수비트 (14:38)
- 지수와 지수비트 (13:42)
- 복습 퀴즈
- 32 비트 부동 소수점의 예 (10:52)
- 복습 퀴즈
- 32 비트 부동 소수점의 정밀도 (4:54)
- 유효 숫자와 정밀도 (7:13)
- 정밀도의 중요성 (8:11)
- 복습 퀴즈
- 정밀도 9 (10:08)
- 복습 퀴즈 1
- 복습 퀴즈 2
- 자료형 변환, 부동 소수점 비교하기, 64 비트 부동 소수점, 16 비트 부동 소수점 (12:51)
- 복습 퀴즈
- 부동 소수점 수의 사칙 연산 (5:29)
- 복습 퀴즈
- 정리 (3:43)
- 집합의 개념과 관계 (4:22)
- 원소(element), 원소의 표현법 (5:42)
- 공집합(empty set) (2:36)
- 영상 퀴즈
- 집합의 동치 (0:30)
- 부분 집합 (6:06)
- 멱집합 (3:31)
- 영상 퀴즈
- 멱집합 구하기 (1:10)
- 집합의 연산 (3:29)
- 합집합, 교집합 (4:30)
- 교집합과 서로소(disjoint) 집합 (1:46)
- 차집합, 여집합 (4:39)
- 전체집합 (1:29)
- 복습 퀴즈
- 집합의 연산 법칙, 항등 법칙, 지배 법칙 (5:09)
- 멱등 법칙, 여집합의 여집합 (4:12)
- 교환 법칙, 결합 법칙 (4:35)
- 분배 법칙 (5:16)
- 드 모르간의 법칙 (6:04)
- 흡수 법칙 (2:55)
- 복습 퀴즈
- 함수 (10:21)
- 정리 (2:13)
- 논리 (9:47)
- 명제 (3:56)
- 복습 퀴즈
- 진리표, 합성 명제, 논리 부정, '모든(all)'과 '어떤(any)' (12:26)
- 복습 퀴즈
- 논리곱 (3:44)
- 복습 퀴즈
- 논리합 (2:57)
- 복습 퀴즈
- 배타적 논리합 (4:10)
- 복습 퀴즈
- 항진 명제, 모순 명제 (5:59)
- 복습 퀴즈
- 정리 (3:16)
- 불 대수, 불 대수의 기초 연산 (18:45)
- 복습 퀴즈 1
- 복습 퀴즈 2
- 불 대수 연산 법칙 (2:50)
- 복습 퀴즈 1
- 복습 퀴즈 2
- 교환 법칙, 결합 법칙, 분배 법칙, 흡수 법칙 (16:30)
- 복습 퀴즈 1
- 복습 퀴즈 2
- 드 모르간 법칙 (3:53)
- 복습 퀴즈 1
- 복습 퀴즈 2
- 복습 퀴즈 3
- 논리 회로, 기본 게이트, NAND 게이트, NOR 게이트 (12:09)
- 복습 퀴즈
- 논리 회로를 이용한 비트 연산 (2:53)
- 복습 퀴즈
- 게이트의 조합, 게이트는 돈이다 (13:06)
- 복습 퀴즈
- 정리 (4:10)
- 조건 명제 (5:04)
- 조건 명제의 진리 판단 (5:05)
- 다른 조건 명제의 전제가 되는 조건 명제 (10:42)
- 조건 명제와 인과관계 (3:36)
- 복습 퀴즈
- 조건 명제의 역, 조건 명제의 이 (6:39)
- 논리적 동치, 조건 명제의 대우, 쌍방 조건 명제 (13:33)
- 복습 퀴즈 1
- 복습 퀴즈 2
- 논리 퍼즐 (5:50)
- 영상 퀴즈
- 누가 기사고 누가 구라쟁이일까? (5:37)
- 모자 색깔 맞추기 (5:07)
- 영상 퀴즈
- 증명, 추론 (7:24)
- 논리융합 (4:52)
- 복습 퀴즈
- 증명 방법, 모순에 의한 증명 (7:08)
- 모순에 의한 증명의 예, 사례에 의한 증명 (7:24)
- 복습 퀴즈
- 동치 증명, 존재/반례 증명, 유일성 증명 (6:19)
- 보너스: 크래시 발생 (4:05)
- 조건 명제, 인과관계, 디버깅 (14:15)
- 정리 (4:55)
- 과학적 사고방법 (5:51)
- 귀납법, 연역법, 과학적 사고방법과 관련 있는 것들 (6:09)
- 과학적 사고방법 과정 (6:34)
- 과학적 사고를 안 하는 프로그래머들 (6:32)
- 과학적 사고방법이 주는 교훈 (9:08)
- 머신러닝과 과학적 사고방법 (5:19)
- 이진수를 이용한 꼼수 (3:38)
- 비트 연산을 사용한 0 초기화 (3:55)
- 영상 퀴즈
- XOR 연산으로 두 수 바꾸기 (4:01)
- 2진수의 짝수/홀수 판단 (1:56)
- 복습 퀴즈
- 비트 마스킹 (3:41)
- 비트 마스킹: 양수/음수 판단 (2:04)
- 비트 플래그, 특정 플래그 바꾸기 (10:20)
- 복습 퀴즈
- 비트 마스킹: 데이터 패킹, 기수(radix) 정렬 (6:06)
- 비트 마스킹: 대소문자 변환 (4:44)
- 영상 퀴즈 1
- 영상 퀴즈 2
- 비트 마스킹: 2의 승수 판별하기 (9:02)
- 이러한 꼼수들이 왜 중요할까? (3:45)
- 정리 (5:24)
- 수학적 귀납법 (7:27)
- 수학적 귀납법의 실생활 예: 도미노 쓰러뜨리기 (4:45)
- 수학적 귀납법과 재귀 함수의 연관성 (5:13)
- 수학적 귀납법으로 코드 작성하기 (6:39)
- 내 스스로 만든 공식 검증하기 (7:40)
- 공식 증명: 홀수인 자연수 n개의 합 구하기 (4:34)
- 공식 증명: 멱집합의 원소수 구하기 (6:06)
- 수학적 귀납법이 중요한 이유 (9:47)
- 복습 퀴즈 1
- 복습 퀴즈 2
- 재귀와 분할 정복, 재귀 (4:04)
- 재귀 복습: 피보나치 수열 (6:54)
- 재귀 복습: 하노이의 탑 (5:27)
- 재귀로 풀 수 있는 다양한 문제, 다중 분기 재귀 (5:37)
- 복습 퀴즈
- 분할 정복, 분할 정복 예: 배열에서 요소 찾기, 시간 복잡도 (4:57)
- 오름차순으로 정렬된 배열에서 요소 찾기, 시간 복잡도의 변화 (4:34)
- 이진 탐색(binary search) (13:17)
- 분할 정복 알고리듬 예: 최댓값 구하기 (3:54)
- 분할 정복 알고리듬의 필요성, 멀티 스레딩 (9:26)
- 병렬(parallel) 알고리듬 (5:55)
- 분산 시스템 (13:03)
- 복습 퀴즈
- 정리 (6:24)
- 벡터 (2:00)
- 전통적 의미의 벡터 (6:34)
- 프로그래밍에서 벡터를 표현하는 방법, 성분 표기법 (6:44)
- 벡터 성분으로 길이, 각도 구하기 (5:53)
- 복습 퀴즈
- 벡터의 연산 (1:22)
- 벡터의 각 성분을 2배로 늘리기 (2:05)
- 단위(unit) 벡터 (3:36)
- 다른 벡터로부터 단위 벡터 구하기 (5:10)
- 벡터의 덧셈, 벡터의 뺄셈 (9:35)
- 복습 퀴즈
- 내적 (9:50)
- 벡터가 프로그래밍에 필요한 이유 (2:41)
- 튜플(tuple) (8:22)
- 복습 퀴즈
- 행렬, 행렬의 구성, 행렬의 크기와 요소 접근, 정사각 행렬 (7:43)
- 벡터 연산 행렬에 적용하기, 전치 행렬(transpose matrix) (6:20)
- 행렬 연산이 필요한 이유 1 (6:43)
- 행렬 연산이 필요한 이유 2, 행렬과 벡터의 곱 (5:17)
- 벡터 X 행렬 곱 (8:24)
- 복습 퀴즈 1
- 복습 퀴즈 2
- 복습 퀴즈 3
- 복습 퀴즈 4
- 복습 퀴즈 5
- 복습 퀴즈 6
- 벡터 값 안바꾸고 벡터 X 행렬 곱 하기, 단위 행렬(identity matrix) (4:33)
- 행렬 X 행렬 곱 1 (4:36)
- 행렬 X 행렬 곱 2 (3:34)
- 행렬 X 행렬 곱 예 (6:17)
- 복습 퀴즈 1
- 복습 퀴즈 2
- 복습 퀴즈 3
- 행렬의 변환 (4:21)
- 행렬의 변환: 두 배 확대하는 행렬의 예 (5:16)
- 모든 변환 원래 상태로 되돌리기 (1:54)
- 역행렬 (4:53)
- 역행렬이 존재하지 않는 행렬 (1:32)
- 공간 변환 행렬, 행렬의 용도 (9:02)
- 복습 퀴즈 1
- 복습 퀴즈 2
- 복습 퀴즈 3
- 정리 (4:09)
- 확률의 정의와 표본 공간 (5:27)
- 확률의 예 (10:15)
- 복습 퀴즈
- 여사건과 합사건 (6:58)
- 확률에 기반한 사고 (12:19)
- 조건부 확률 (11:42)
- 독립 사건 (8:21)
- 복습 퀴즈
- 기댓값과 확률 변수 (14:04)
- 복습 퀴즈
- 확률 분포 (9:45)
- 연속 확률 분포 (12:18)
- 베르누이 시행 (7:14)
- 이항 분포 (19:15)
- 복습 퀴즈
- 확률적 알고리듬 소개 (11:37)
- 몬테 카를로 알고리듬 (15:29)
- 몬테 카를로와 품질 관리 (5:40)
- 몬테 카를로와 소수 판별 (18:03)
- 확률적 알고리듬과 프로그래머의 마음가짐 (6:06)
- 복습 퀴즈
- 정리 (6:30)
- 통계학과 벨 커브 (8:07)
- 벨 커브의 첫 발견 (5:33)
- 천문학의 문제 (9:24)
- 오차 곡선을 찾기 위한 노력 (8:21)
- 정규 분포의 탄생과 적용 (16:28)
- 정규 분포 (8:05)
- 평균, 표준 편차, 분산 (7:05)
- 영상 퀴즈
- 분산과 제곱 (6:22)
- 복습 퀴즈
- 정규 분포의 확률 밀도 함수 (11:12)
- 복습 퀴즈
- 표준 정규 분포 (11:56)
- 68-95-99.7 규칙 (10:31)
- 복습 퀴즈
- 모집단, 표본집단 (9:35)
- 구간 추정 (7:33)
- 신뢰 구간과 오차 범위 (13:30)
- 영상 퀴즈
- 모비율의 오차 범위 (16:10)
- 복습 퀴즈
- 대푯값에 대해 (4:01)
- 정규 분포란 이름과 사용처 (8:10)
- 정리 (6:36)