18. ( 프로그래머 | 컴퓨터과학자 ) 의 역량 모델
프로그램 작성 능력 정도
알고리즘 & 수학 능력 정도
시스템 아키텍처 이해 능력 정도
19. 어떤 일을 하기 위하여 요구되는 능력 #1
프로그램 작성 능력 정도
알고리즘 & 수학 능력 정도
시스템 아키텍처 이해 능력 정도
20. 어떤 일을 하기 위하여 요구되는 능력 #2
프로그램 작성 능력 정도
알고리즘 & 수학 능력 정도
시스템 아키텍처 이해 능력 정도
21. 어떤 일을 하기 위하여 요구되는 능력 #3
프로그램 작성 능력 정도
알고리즘 & 수학 능력 정도
시스템 아키텍처 이해 능력 정도
22. 모든 컴퓨터 과학 / 프로그
래밍분야에서 높은 수준의
알고리즘과 수학 지식을 요
구하는 것은 아니다 .
23. 그러나 알고리즘과 수학 지
식을 전혀 요구하지 않는 컴
퓨터 과학 / 프로그래밍 분
야는 없다 .
24. 어떤 요구 사항
● 채점 결과를 바탕으로 학점 평가를 하는 프로그램
'90 점 이상이면 A 학점 ' 이 요구 사항
if (score >= 90) {
grade = Grade.A;
}
●
점수가 95 점이면 A 학점인가 ?
●
점수가 85 점인데 A 학점일 수 있는가 ?
●
점수가 97 점인데 B 학점일 수 있는가 ?
25. Imply Truth Table
A B A B⇒
True True True
True False False
False True True
False False True
● '90 점 이상이면 A 학점 '
●
점수가 95 점이면 A 학점인가 ?
●
점수가 85 점인데 A 학점일 수 있는가 ?
●
점수가 97 점인데 B 학점일 수 있는가 ?
27. • Sums
• Recurrences
• Integer functions
• Elementary number theory
• Binomial coefficients
• Generating functions
• Discrete probability
• Asymptotic methods
28. Mathematics for Computer Science
Eric Lehman and Tom Leighton
2004
• Introduction and proofs
• Induction
• Strong induction
• Number theory I
• Number theory II
• Graph theory and coloring
• Matching problems
• Graph theory II: minimum
spanning trees
• Communication networks
• Graph theory III
• Relations, partial orders, and
scheduling
• Sums
• Sums and Asymptotics
• Divide and conquer
recurrences
• Linear recurrences
• Counting rules I
• Counting rules II
• Probability introduction
• Conditional probability
• Independence
• Random variables
• Expectation I
• Expectation II
• Large deviations
• Random walks
30. 아인슈타인의 고등학교 시절 수학 성적 / 실력은 ' 우수 ' 한 정도
대학 때는 대충대충 공부
일반상대성이론 발표를 위하여 주변 수학자로부터 상당한 도움을
받아야 했음
그러나 일반상대성이론 발표 이후에는 상당한 수학 지식 보유
( 시대를 바꾼 천재들 중에는 30 대 이전에는 그저 평범한 사람이었던 경우도 많다 .)
31. 알고리즘을 얼마나 공부해야
어려운 문제들도 잘 풀 수 있게 될까 ?
“ 내게 충분한 길이의 막대기와
받침목을 주시오 . 내 직접
지구를 움직여 보리다 .”
- 아르키메데스 ( 허세작렬 )
http://commons.wikimedia.org/wiki/File:Archimedes_lever.png
32. Reduction ( 환산 )
문제 A 가 어떤 과정을 통해 문제 B 로 환산된다면
B 의 해답을 가지고 A 의 해답을 알 수 있기 때문에 ,
A 를 푸는 작업이 B 를 푸는 작업보다 어려울 수 없다 .
http://ko.wikipedia.org/wiki/환산_(복잡도)
●
임의로 나열된 정수열이 있다고 할 때 , 이중 가장 많은 빈도를 보이는
하나 이상의 정수 ( 들 ) 를 찾아라 .
- 정수열을 정렬한 후 , 순차 검색
36. 운동 선수들은 지속적으로 기본기
훈련을 한다 .
악기 연주가들 또한 기본적인 스케
일링 연습을 거의 매일 한다 .
알고리즘과 수학은 한번 이해하고
나면 그것으로 충분한 것일까 ?
37. 자기만의 페이스 , 자기 수준에 맞는 학습과 기대
http://www.foxsports.com.au/olympic-games/events/ugandas-stephen-kiprotich-has-won-the-london-olympics-marathon/story-fnd7zc3y-1226448756056?nk=4b7cb839581f0c61d2dd
f6c335741faa
http://article.joins.com/news/article/article.asp?total_id=3684161&cloc
39. 이제부터
어려워 보이지만 사실 알고보면 별 것 아닌 것들을 소개합니다 .
일정 수준 이상의 프로그램 개발 능력을 가지고 있는 사람이라면
능히 어렵지 않게 개발할 수 있는 것들입니다 .
40. Seam Carving, content aware image resizing
http://en.wikipedia.org/wiki/Seam_carving
중요한 정보인 성 모양이 왜곡된 형태로 축소되었다 .
중요한 정보인 성 모양이 유지된 형태로 , 전체 이미지의 폭이
줄어들었다 .
41. ● The energy of pixel E(x, y) = Δx2
(x, y) + Δy2
(x, y)
●
인접한 픽셀의 E(x, y) 의 최종 합이 가최소 되는 경로
탐색
●
개념 상으로 최단경로문제 , Dynamic Programming 을
가이용하면 쉽게 구현 능
Seam Carving, content aware image resizing
● 시각상으로 중요한 정보란 어떤 것일까 ?
● ¬
중요한 것 = 중요하지 않은 것
● 가장 중요하지 않은 것은 어떻게 찾을까 ?
http://www.cs.princeton.edu/courses/archive/spr13/cos226/assignments/seamCarving.html
42. DBMS Index & Query Performance
http://cis.stvincent.edu/html/tutorials/swd/btree/btree.html
CREATE INDEX clm1_idx ON tbl(clm1);
CREATE INDEX clm2_idx ON tbl(clm2);
…
SELECT * FROM tbl
WHERE (clm1 >= 10 AND clm1 <= 20000) AND
(clm2 > 100 AND clm2 < 5000)
LIMIT 2000;
43. DBMS Index & Query Performance
WHERE (clm1 >= 10 AND clm1 <= 20000) AND
(clm2 > 100 AND clm2 < 5000)
44. Machine Learning
기계 학습 (machine learning) 은 인공 지능의 한 분야로 , 컴퓨터가 학습할 수
있도록 하는 알고리즘과 기술을 개발하는 분야를 말한다 . 가령 , 기계 학습을
통해서 수신한 이메일이 스팸인지 아닌지를 구분할 수 있도록 훈련할 수 있다 .
http://ko.wikipedia.org/wiki/기계_학습
49. Machine Learning
예쁜지 안 예쁜지 판단하는 기계학습 프로그램을 만들어 보자 !!!
1
1+e
−h( x)
김태희에 대한 결과값
제대로 만든 h(x) 가 너님을 인자로 하였
을 때의 수행 결과
슈레딩거의 고양이 상태
너님이 화장실에서 너님을 거울로 볼 때
51. Machine Learning
하지만 2 차원 정보로는 충분하지 않다 .
● 그래서 가능한 수집 / 측정할 수 있는 정보를 바탕으로 N 차원 데이터를 생성한다 .
● 이 N 차원 데이터를 대상으로 연산을 하기에는 너무나도 많은 연산량이 필요할 수 있다 .
그래서 PCA( 주성분분석 , Principle Component Analysis) 같은 방법을 사용하여
N 차원 데이터를 K(K ≤ N) 차원 데이터로 줄이기도 한다 .
( 대학 선형대수를 수강하였다면 , 능히 이해할 수 있는 수준의 정보이다 .)
● 이렇게 만든 K 차원의 데이터를 바탕으로 h(x) 에서 사용할 벡터 θ 를 생성한다 . 이 때
선형대수 미분적분 등의 수학적 지식이 요구된다 .
● h(x) = θT
x
53. 지금까지
설명한 사례들은 모두 학부 교과 과정을 이수하면 충분히 이해할 수 있는
수준입니다 .
전산과 학부 교과 과정의 수준이 충분히 높고 , 양 또한 적지 않음을
전달하고 싶습니다 . 그리고 졸업 후 어떤 일을 하느냐에 따라 다르겠지만 ,
학부 교과 과정의 내용이 모두 필요한 일을 하게 될 수도 있습니다 .
54. 문제를 해결한다는 것은 도구가 될 수 있는 기본 지식을 바탕으로
응용력을 발휘하는 것입니다 .
학부 교과 과정에 있는 데이터구조 , 알고리즘 , 전공필수 수학 과목은
문제를 해결하기 위한 도구적 지식입니다 .