SlideShare a Scribd company logo
1 of 31
Download to read offline
Computer Programming I
알파고 이야기, Programming
이민석
국민대학교 컴퓨터공학부
학습 목표
1. 이세돌 vs. 알파고
2. 프로그램을 배운다는 것
3. 프로그래밍에 의한 절차적 문제 해결
이세돌 vs. AlphaGo
우리 wife의 반응
경기 시작 전 “당연히 컴퓨터가 이기는 거 아냐?”
ß (나) “아직 컴퓨터가 그 정도는 아니야,
바둑은 체스랑 달라서 Blah Blah … ”
알파고 1승 후 “컴퓨터 하는 사람이 그것도 몰라?”
ß (나) “쟤는 집에 있는 그런 컴퓨터가 아니야
CPU가 1,920개 GPU가 280개 …”
알파고 2승 후 “거봐” (그날따라 집의 인터넷 느림)
ß (나) “구글이 바둑 두느라고 인터넷, 전기 다 가져다 써서 그래”
이세돌 vs. AlphaGo, 말들
해설자 송태곤 9단 (2국 중간) “이세돌 9단의 패착을 찾지를 못하겠어요.
인간의 눈으로 볼 때는 실수는 알파고만 하고 있었거든요”
허사비스 딥마인드 CEO (1국 승리 후) "우리는 달에 착륙했다. 팀이 자랑스럽다"
이세돌 (1국 패배 후) “진다고 생각 안 했는데 너무 놀랐다”,
“이세돌이 패한 것일 뿐 인간이 패한 것은 아니다”
이세돌 (첫 기자회견) “3대2정도의 승리가 아니라 한판 질까 말까 정도”
이세돌 (대국하루전 알파고 원리를 듣고) “조금 긴장했다. 5대0승리는 아닐 것 같다”
이세돌 (5국 후) “물론 질 수도 있다. 그러나 바둑의 아름다움, 인간의 아름다움을
컴퓨터가 이해하고 두는 게 아니기에 바둑의 가치는 계속될 것”
이세돌 (4국 승리 후) “그전에도, 앞으로도 그 어떤 것과 값어치를 매길 수 없는 1승”
이세돌 vs. AlphaGo, 그 여파
• 온갖 AI 이슈
ü AI의 의도적 실수 and/or	 버그,
ü 경기 상황 중간 보고
ü AI의 윤리
• AI vs.	인간
ü 명령을 받을 것인가? 내릴 것인가?
ü AI는 우리의 적인가?
• AI	시대에 대응하는 자세
• 최저 생활비 보장
*	AI		(Artificial	Intelligence,	인공지능)
프로그래밍에 의한 문제 해결
비교 예.. 자동차 만들기 vs.	 컴퓨터로 문제 해결하기
자동차
• 자동차는 시키는 대로 간다.
– 자동차 자체는 그냥 껍데기일 뿐
– 자동차는 운전자가 원하는 곳으로 간다.
– ‘자동’차 이지만, 모든 것이 자동으로 되지는 않는다.
• 밟으면 엔진이 돌고, 핸들을 돌려야 방향이 바뀐다.
– 더구나, 자동차는 누군가가 만들었다.
– 정말 처음부터 자동으로 된 것은 아무 것도 없다.
• 그 누군가가 설계하고,
• 또 누군가가 Every Detail을 다 정했다.
컴퓨터
• 컴퓨터도 시키는 것만 한다.
– 컴퓨터 자체는 그냥 껍데기일 뿐
– 컴퓨터는 프로그래머가 시킨 일만 한다.
– ‘컴퓨터’ 이지만, 모든 것을 알아서 하지는 않는다.
• 소프트웨어를 만들어 넣고, 사용자가 정한 기능이 수행된다.
– 더구나, 컴퓨터는 누군가가 만들었다.
– 정말 처음부터 자동으로 된 것은 아무 것도 없다.
• 그 누군가가 설계하고,
• 또 누군가가 Every Detail을 다 정했다.
컴퓨터가 하는 일은 문제 해결
• 문제를 모르면 답도 없다. 문제란 두 종류인데,
– 이전에 있던 것들의 생산성을 높이는 것들
– 전혀 새로운 가치를 사람에게 제공하는 것들
• 문제는 사람이 정의한다.
– 그리고, 대부분의 문제는 복잡하다.
• 그 복잡함의 근원에는 다양한 상황과 데이터가 있다.
– 그래서, 완벽하고 간단한 정답은 보통 없으며
– 상황에 따라, 데이터에 따라 여러 가지 답이 있다.
– 어떤 경우에도, 그 답도 사람이 만들고
– 최종적으로는 소프트웨어라는 도구로 구현된다.
문제해결 도구, 소프트웨어
• 복잡한 문제를 해결하는 절차
1. 문제를 잘 이해하려고 노력한다.
• 문제가 존재하는 상황과 연관된 데이터를 잘 살펴본다.
2. 큰 문제를 조금은 덜 복잡한 작은 문제들로 나눈다.
• 조각 낸 작은 문제들의 답을 예측하고,
• 그 답들을 순서에 맞추어 잘 연결하여,
• 처음 큰 문제의 답이 만들어지는지 검토한다.
• 필요하면 작은 문제를 더 작은 문제들로 다시 나눈다.
3. 작은 문제에 대한 답을 구하는 방법을 찾는다.
• 어떤 때는 간단한 논리와 산수로
• 또 어떤 때는 복잡한 논리와 고도의 수학이 필요하다.
4. 작은 문제의 답들을 엮어 큰 문제의 답을 얻는다.
문제의 예: 자동차, 1 단계
• 큰 문제
– 승객을 목적지에 안전하게 도달하게 하는 것
• 큰 문제를 해결하기 위한 작은 문제들
1. 굴러가게 해야 한다.
2. 원하는 방향으로 가게 해야 한다.
3. 설 수 있어야 한다.
4. 안전하고, 편하게 위 목적을 달성해야 한다.
문제의 예: 자동차, 2 단계
• 작은 문제를 더 작게
1. 굴러가게 해야 한다.
• 엔진이 필요하다.
• 엔진의 동력을 바퀴에 전달해야 한다.
2. 원하는 방향으로 가게 해야 한다.
• 핸들이 필요하다. 바퀴를 움직여야 한다.
3. 설 수 있어야 한다.
• 브레이크 페달이 필요하다. 움직이는 바퀴를 세워야 한다
4. 편하게 위 목적을 달성해야 한다.
• 깜박이가, 전조등이, 미등이, 에어백이,
• 에어컨이, 내비게이션이, 블랙박스가 필요하다.
• …
문제의 예: 자동차, 3단계
• 더 작은 문제를 한층 더 작게
1. 굴러가게 해야 한다.
• 엔진이 필요하다.
A. 연료는? (휘발류? 경유? 전기?)
• 연료통 (배터리) 크기?
• 연료통 (배터리) 위치?
• 남은 량 측정?
• 화재 방지 방법?
B. 엔진 출력은?
C. …
• 엔진의 동력을 바퀴에 전달해야 한다.
• …
여러 가지 답
상황을 고려하여
한 가지를 선택하거나
두 가지를 섞어 쓸 수 있다.
선택은 다른 문제를 만든다
(또는 문제를 바꾼다)
가끔은 문제가 작아질수록 더 고도의 전문성이 요구된다.
소프트웨어 / 프로그램 / 프로그래밍 언어
• 컴퓨터 소프트웨어는
컴퓨터 프로그램들을 모아 놓은 것
• 컴퓨터 프로그램은
프로그래밍 언어의 명령들을 모아 놓은 것
• 프로그래밍 언어는
데이터와,
문제를 해결하는 방법(논리와 수학)을
절차적/구조적으로 표현하여
컴퓨터가 실행할 수 있게 해주는 도구
큰 문제
해결 도구
작은 문제
해결
문제 해결
방법 표현
아직은 사람만 가능 J
그래서 뭘 하자는 건가?
• 코딩(프로그램)으로 문제와, 문제의 해결 방안을 표현하는 것
– 문제 그 자체, 또는 문제와 연관된 데이터
(자료구조)
– 논리적/절차적인 문제 해결 방안
(알고리즘)
문제의 핵심, 세상의 모든 것은 데이터 !!
• 데이터를 어떻게 얻고
• 데이터의 의미를 이해하고
• 데이터를 이용하여
• 다른 의미있는 데이터 만들기
코딩: 문제의 근원인 데이터의 표현
• 데이터의 형태
– 숫자 (정수, 실수, ...), 문자, 문자열
• 예, 0, -6, 3.1415, ‘A’, “국민대학교”
– 조직화된 데이터
• 의미 있는 한 덩어리의 데이터
예, (이름, 생년월일, 전화번호)
• 데이터 사이의 관계
– 데이터 또는 조직화된 데이터의 집합 또는 순서
• 예, 오늘의 검색어 순위
• 예, 금주의 음악 챠트
코딩: 문제 해결 방법의 표현
• 순차적 접근 (Procedural)
– 정말로 낱낱이 풀어서, 이것하고, 다음에 저것하고, 그 다음은 …
• 산수와 논리 (Arithmetic & Logic)
– 뭐하고 뭐를 더하고, 곱하고, …. ( +, -, *, /, …)
– 참과 거짓, 그리고, 또는, 반대의 관계 ( True, False, AND, OR, NOT )
• 조건과 분기 (Conditional Branch)
– If (조건) then 이런 일 else 저런 일
• 반복 (Iteration)
– 여기서부터 저기까지 (몇 번, 언제까지, 무한히) 반복
세상에 많은 언어가 있듯이
프로그래밍 언어도 많다
• 문제에 따라, 컴퓨터에 따라
http://3.bp.blogspot.com/-QZ4yib_WQFk/VOej26zs_NI/AAAAAAAAAXY/DF7R-KmYzk4/s1600/prog-languages.png
1. Java
2. C
3. C++
4. C#
5. Python
6. PHP
7. JavaScript
8. Perl
9. Ruby
2016-04	TIOBE	Index
언어의 첫 걸음: Hello World!
• Java 버전
// Hello World! in Java
class HelloWorld {
static public void main(String args[]) {
System.out.println("Hello World!”);
}
}
언어의 첫 걸음: Hello World!
• C 버전
/* Hello World! in C, Ansi-style */
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
puts("Hello World!");
return EXIT_SUCCESS;
}
언어의 첫 걸음: Hello World!
• 엔트리
• Python 버전
# Hello World! in Python 3
print("Hello World!")
• Scratch 버전
Why Entry?
• Entry(엔트리)는 프로그래밍 언어의 일종
– 쉽고, 재미있고,
– 무료, 오픈 소스이고,
– 웹으로 되고, PC, Mac, 안드로이드, 아이폰에서도 되고,
– 문법보다는 문제에 더 신경쓸 수 있게 해주고
– 역시, 다른 모든 프로그래밍 언어처럼 절차적인 문제 해결,
– “~~일이 발생하면 ~~를 해요” 방식의 문제 해결이 가능
• 어떤 이벤트에 대하여 반응
OFF
ON
절차적으로 정리하면
스위치의 위치 확인
만일 스위치가 ON	위치 이면
불을 켠다.
아니면
불이 끈다.
프로그램으로 짜면
if (switch == ON) then
light = ON
else
light = OFF
말로 하면
스위치를 누를 때 불을 켠다.
프로그램의 예 (불 켜기)
*	모든 언어마다 문법은 조금씩 다름
알파고도 풀 수 없는 문제..
시작
(여자가 화가 남)
미안해
뭐가 미안해?
알아몰라
알면서
그래?
모르면서
그래?
잘못했어
뭘 잘못했는데?
남자
여자
: 멘붕에 따른 임의의 선택
(머리속에서 어설픈 동전던지기)
Man Trapped
예제: Man Trapped
여자_화남 =	TRUE;
미안: 남자(“미안해”);
여자(“뭐가 미안해?”);
뭐를: 남자(머릿속 동전 던지기);
if	 (동전=앞면) then
남자(“알아”);
여자(	“알면서그래?”);
else
남자(“몰라”);
여자(“모르면서 그래?”);
남자(머릿속 동전 던지기);
if	 (동전=앞면) then
goto 미안;
남자(“잘못했어”);
여자(“ 뭘 잘못했는데?”);
goto 뭐를;
예제: Man Trapped (Entry code: http://j.mp/man-trapped)
• 사건을 단계로 풀어보면…
1. 시작
2. ‘미안해’ 하고, 이유 추궁 당하고,
3. 아무 대답이나 하고,
4. 제대로 일격을 당하고
나름 작전을 선택하고
5. ‘잘못했어‘ 하고 또 이유 추궁당하고
6. 다시 3번으로
프로그래밍 요소
• 순차 실행
– 아래로 향하는 화살표
– 블록(문장)의 나열
• 반복
– 위로 올라가는 화살표
• 조건에 따른 선택
– 두 방향의 화살표
요약
1. 이세돌 vs. AlphaGo
2. 프로그램을 배운다는 것
ü 자동차 vs. 컴퓨터
3. 프로그래밍에 의한 절차적 문제 해결
ü 데이터 !!
ü 프로그래밍 언어
ü 조건과 절차
ü Man-Trapped
http://j.mp/man-trapped
고맙습니다
https://www.facebook.com/groups/kmu.cs/

More Related Content

What's hot

언플러그드 활동의 이론과 실제(Unplugged Activity / Computing)
언플러그드 활동의 이론과 실제(Unplugged Activity / Computing)언플러그드 활동의 이론과 실제(Unplugged Activity / Computing)
언플러그드 활동의 이론과 실제(Unplugged Activity / Computing)Sangsu Song
 
2016 oct somul_발표최종본_김기만
2016 oct somul_발표최종본_김기만2016 oct somul_발표최종본_김기만
2016 oct somul_발표최종본_김기만Giman Kim
 
생각이라는 벽돌로 만드는 집
생각이라는 벽돌로 만드는 집생각이라는 벽돌로 만드는 집
생각이라는 벽돌로 만드는 집Byeongsu Kang
 
DreamCode Season2 Intro
DreamCode Season2 IntroDreamCode Season2 Intro
DreamCode Season2 IntroUi-Gyun Jeong
 
소프트웨어에 물들다-누구나 만들 수 있는 SW
소프트웨어에 물들다-누구나 만들 수 있는 SW소프트웨어에 물들다-누구나 만들 수 있는 SW
소프트웨어에 물들다-누구나 만들 수 있는 SW재우 정
 
생각과 프로그램 개발 - 10월, 소프트웨어에 물들다
생각과 프로그램 개발 - 10월, 소프트웨어에 물들다생각과 프로그램 개발 - 10월, 소프트웨어에 물들다
생각과 프로그램 개발 - 10월, 소프트웨어에 물들다Jiho Lee
 
얼떨결에 일러스트02_ 기본도구 익히기
얼떨결에 일러스트02_ 기본도구 익히기얼떨결에 일러스트02_ 기본도구 익히기
얼떨결에 일러스트02_ 기본도구 익히기Bo Ram Han
 
10월의 하늘_2016_진도 공공도서관_이지호
10월의 하늘_2016_진도 공공도서관_이지호10월의 하늘_2016_진도 공공도서관_이지호
10월의 하늘_2016_진도 공공도서관_이지호Jiho Lee
 
교육용 프로그래밍 언어 엔트리 10차 교육과정안
교육용 프로그래밍 언어 엔트리 10차 교육과정안교육용 프로그래밍 언어 엔트리 10차 교육과정안
교육용 프로그래밍 언어 엔트리 10차 교육과정안Sangsu Song
 
1000만명이 넘게쓰는 게임과 앱은 어떻게 만들어질까
1000만명이 넘게쓰는 게임과 앱은 어떻게 만들어질까1000만명이 넘게쓰는 게임과 앱은 어떻게 만들어질까
1000만명이 넘게쓰는 게임과 앱은 어떻게 만들어질까Yann Heo
 
얼떨결에 일러스트_01 누구나 디자이너
얼떨결에 일러스트_01 누구나 디자이너얼떨결에 일러스트_01 누구나 디자이너
얼떨결에 일러스트_01 누구나 디자이너Bo Ram Han
 
두 번째 startlink.live: 김재홍 (xhark) - 알고리즘 문제 출제 전략
두 번째 startlink.live: 김재홍 (xhark) - 알고리즘 문제 출제 전략두 번째 startlink.live: 김재홍 (xhark) - 알고리즘 문제 출제 전략
두 번째 startlink.live: 김재홍 (xhark) - 알고리즘 문제 출제 전략Startlink
 
외계어 스터디 1/5 - Overview
외계어 스터디 1/5 - Overview외계어 스터디 1/5 - Overview
외계어 스터디 1/5 - Overview민태 김
 
두 번째 startlink.live: 박성원 (ntopia) - PS가 이렇게 해롭습니다. 여러분!
두 번째 startlink.live: 박성원 (ntopia) - PS가 이렇게 해롭습니다. 여러분!두 번째 startlink.live: 박성원 (ntopia) - PS가 이렇게 해롭습니다. 여러분!
두 번째 startlink.live: 박성원 (ntopia) - PS가 이렇게 해롭습니다. 여러분!Startlink
 
SW교육_학부모 세미나 자료
SW교육_학부모 세미나 자료SW교육_학부모 세미나 자료
SW교육_학부모 세미나 자료Sangsu Song
 
두 번째 startlink.live: 오현석 (algoshipda) - 초심자를 위한 알고리즘 공부 전략
두 번째 startlink.live: 오현석 (algoshipda) - 초심자를 위한 알고리즘 공부 전략두 번째 startlink.live: 오현석 (algoshipda) - 초심자를 위한 알고리즘 공부 전략
두 번째 startlink.live: 오현석 (algoshipda) - 초심자를 위한 알고리즘 공부 전략Startlink
 

What's hot (16)

언플러그드 활동의 이론과 실제(Unplugged Activity / Computing)
언플러그드 활동의 이론과 실제(Unplugged Activity / Computing)언플러그드 활동의 이론과 실제(Unplugged Activity / Computing)
언플러그드 활동의 이론과 실제(Unplugged Activity / Computing)
 
2016 oct somul_발표최종본_김기만
2016 oct somul_발표최종본_김기만2016 oct somul_발표최종본_김기만
2016 oct somul_발표최종본_김기만
 
생각이라는 벽돌로 만드는 집
생각이라는 벽돌로 만드는 집생각이라는 벽돌로 만드는 집
생각이라는 벽돌로 만드는 집
 
DreamCode Season2 Intro
DreamCode Season2 IntroDreamCode Season2 Intro
DreamCode Season2 Intro
 
소프트웨어에 물들다-누구나 만들 수 있는 SW
소프트웨어에 물들다-누구나 만들 수 있는 SW소프트웨어에 물들다-누구나 만들 수 있는 SW
소프트웨어에 물들다-누구나 만들 수 있는 SW
 
생각과 프로그램 개발 - 10월, 소프트웨어에 물들다
생각과 프로그램 개발 - 10월, 소프트웨어에 물들다생각과 프로그램 개발 - 10월, 소프트웨어에 물들다
생각과 프로그램 개발 - 10월, 소프트웨어에 물들다
 
얼떨결에 일러스트02_ 기본도구 익히기
얼떨결에 일러스트02_ 기본도구 익히기얼떨결에 일러스트02_ 기본도구 익히기
얼떨결에 일러스트02_ 기본도구 익히기
 
10월의 하늘_2016_진도 공공도서관_이지호
10월의 하늘_2016_진도 공공도서관_이지호10월의 하늘_2016_진도 공공도서관_이지호
10월의 하늘_2016_진도 공공도서관_이지호
 
교육용 프로그래밍 언어 엔트리 10차 교육과정안
교육용 프로그래밍 언어 엔트리 10차 교육과정안교육용 프로그래밍 언어 엔트리 10차 교육과정안
교육용 프로그래밍 언어 엔트리 10차 교육과정안
 
1000만명이 넘게쓰는 게임과 앱은 어떻게 만들어질까
1000만명이 넘게쓰는 게임과 앱은 어떻게 만들어질까1000만명이 넘게쓰는 게임과 앱은 어떻게 만들어질까
1000만명이 넘게쓰는 게임과 앱은 어떻게 만들어질까
 
얼떨결에 일러스트_01 누구나 디자이너
얼떨결에 일러스트_01 누구나 디자이너얼떨결에 일러스트_01 누구나 디자이너
얼떨결에 일러스트_01 누구나 디자이너
 
두 번째 startlink.live: 김재홍 (xhark) - 알고리즘 문제 출제 전략
두 번째 startlink.live: 김재홍 (xhark) - 알고리즘 문제 출제 전략두 번째 startlink.live: 김재홍 (xhark) - 알고리즘 문제 출제 전략
두 번째 startlink.live: 김재홍 (xhark) - 알고리즘 문제 출제 전략
 
외계어 스터디 1/5 - Overview
외계어 스터디 1/5 - Overview외계어 스터디 1/5 - Overview
외계어 스터디 1/5 - Overview
 
두 번째 startlink.live: 박성원 (ntopia) - PS가 이렇게 해롭습니다. 여러분!
두 번째 startlink.live: 박성원 (ntopia) - PS가 이렇게 해롭습니다. 여러분!두 번째 startlink.live: 박성원 (ntopia) - PS가 이렇게 해롭습니다. 여러분!
두 번째 startlink.live: 박성원 (ntopia) - PS가 이렇게 해롭습니다. 여러분!
 
SW교육_학부모 세미나 자료
SW교육_학부모 세미나 자료SW교육_학부모 세미나 자료
SW교육_학부모 세미나 자료
 
두 번째 startlink.live: 오현석 (algoshipda) - 초심자를 위한 알고리즘 공부 전략
두 번째 startlink.live: 오현석 (algoshipda) - 초심자를 위한 알고리즘 공부 전략두 번째 startlink.live: 오현석 (algoshipda) - 초심자를 위한 알고리즘 공부 전략
두 번째 startlink.live: 오현석 (algoshipda) - 초심자를 위한 알고리즘 공부 전략
 

Viewers also liked

소프트웨어, 소프트웨어 개발자
소프트웨어, 소프트웨어 개발자소프트웨어, 소프트웨어 개발자
소프트웨어, 소프트웨어 개발자Minsuk Lee
 
소프트웨어, 정말 되는 건가?
소프트웨어, 정말 되는 건가?소프트웨어, 정말 되는 건가?
소프트웨어, 정말 되는 건가?Minsuk Lee
 
왜 소프트웨어를 배워야할까?
왜 소프트웨어를 배워야할까?왜 소프트웨어를 배워야할까?
왜 소프트웨어를 배워야할까?Minsuk Lee
 
국민대학교 컴퓨터프로그래밍
국민대학교 컴퓨터프로그래밍국민대학교 컴퓨터프로그래밍
국민대학교 컴퓨터프로그래밍Minsuk Lee
 
자기소개서, 이력서 쓰는 법
자기소개서, 이력서 쓰는 법자기소개서, 이력서 쓰는 법
자기소개서, 이력서 쓰는 법Minsuk Lee
 
Samsung-OSS-Conference-20140916
Samsung-OSS-Conference-20140916Samsung-OSS-Conference-20140916
Samsung-OSS-Conference-20140916Minsuk Lee
 
it's software!
it's software!it's software!
it's software!Minsuk Lee
 
Software Company, Open Soure Software Company
Software Company, Open Soure Software CompanySoftware Company, Open Soure Software Company
Software Company, Open Soure Software CompanyMinsuk Lee
 
Deview-2014-자신있는개발자에서 훌륭한개발자로
Deview-2014-자신있는개발자에서 훌륭한개발자로Deview-2014-자신있는개발자에서 훌륭한개발자로
Deview-2014-자신있는개발자에서 훌륭한개발자로Minsuk Lee
 
Data and Sorting Algoritm
Data and Sorting AlgoritmData and Sorting Algoritm
Data and Sorting AlgoritmMinsuk Lee
 
소프트웨어개발자는누구인가?
소프트웨어개발자는누구인가?소프트웨어개발자는누구인가?
소프트웨어개발자는누구인가?Minsuk Lee
 
프로그래밍 언어의 기본 개념과 주요 프로그래밍 언어
프로그래밍 언어의 기본 개념과 주요 프로그래밍 언어프로그래밍 언어의 기본 개념과 주요 프로그래밍 언어
프로그래밍 언어의 기본 개념과 주요 프로그래밍 언어Bizmerce Corp
 
왜 우리는 개발자에 집중하지 않는가?
왜 우리는 개발자에 집중하지 않는가?왜 우리는 개발자에 집중하지 않는가?
왜 우리는 개발자에 집중하지 않는가?Minsuk Lee
 
10분만에 이해하는 프로그래밍
10분만에 이해하는 프로그래밍10분만에 이해하는 프로그래밍
10분만에 이해하는 프로그래밍명욱 송
 
Mi power point flores
Mi power point floresMi power point flores
Mi power point floresAilinTomas
 
Somul 2017-이민석
Somul 2017-이민석Somul 2017-이민석
Somul 2017-이민석Minsuk Lee
 
1.자료구조와 알고리즘(강의자료)
1.자료구조와 알고리즘(강의자료)1.자료구조와 알고리즘(강의자료)
1.자료구조와 알고리즘(강의자료)fmbvbfhs
 
[1116 박민근] c++11에 추가된 새로운 기능들
[1116 박민근] c++11에 추가된 새로운 기능들[1116 박민근] c++11에 추가된 새로운 기능들
[1116 박민근] c++11에 추가된 새로운 기능들MinGeun Park
 
Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심흥배 최
 

Viewers also liked (20)

소프트웨어, 소프트웨어 개발자
소프트웨어, 소프트웨어 개발자소프트웨어, 소프트웨어 개발자
소프트웨어, 소프트웨어 개발자
 
소프트웨어, 정말 되는 건가?
소프트웨어, 정말 되는 건가?소프트웨어, 정말 되는 건가?
소프트웨어, 정말 되는 건가?
 
왜 소프트웨어를 배워야할까?
왜 소프트웨어를 배워야할까?왜 소프트웨어를 배워야할까?
왜 소프트웨어를 배워야할까?
 
국민대학교 컴퓨터프로그래밍
국민대학교 컴퓨터프로그래밍국민대학교 컴퓨터프로그래밍
국민대학교 컴퓨터프로그래밍
 
자기소개서, 이력서 쓰는 법
자기소개서, 이력서 쓰는 법자기소개서, 이력서 쓰는 법
자기소개서, 이력서 쓰는 법
 
Samsung-OSS-Conference-20140916
Samsung-OSS-Conference-20140916Samsung-OSS-Conference-20140916
Samsung-OSS-Conference-20140916
 
it's software!
it's software!it's software!
it's software!
 
Software Company, Open Soure Software Company
Software Company, Open Soure Software CompanySoftware Company, Open Soure Software Company
Software Company, Open Soure Software Company
 
Deview-2014-자신있는개발자에서 훌륭한개발자로
Deview-2014-자신있는개발자에서 훌륭한개발자로Deview-2014-자신있는개발자에서 훌륭한개발자로
Deview-2014-자신있는개발자에서 훌륭한개발자로
 
Binary search
Binary searchBinary search
Binary search
 
Data and Sorting Algoritm
Data and Sorting AlgoritmData and Sorting Algoritm
Data and Sorting Algoritm
 
소프트웨어개발자는누구인가?
소프트웨어개발자는누구인가?소프트웨어개발자는누구인가?
소프트웨어개발자는누구인가?
 
프로그래밍 언어의 기본 개념과 주요 프로그래밍 언어
프로그래밍 언어의 기본 개념과 주요 프로그래밍 언어프로그래밍 언어의 기본 개념과 주요 프로그래밍 언어
프로그래밍 언어의 기본 개념과 주요 프로그래밍 언어
 
왜 우리는 개발자에 집중하지 않는가?
왜 우리는 개발자에 집중하지 않는가?왜 우리는 개발자에 집중하지 않는가?
왜 우리는 개발자에 집중하지 않는가?
 
10분만에 이해하는 프로그래밍
10분만에 이해하는 프로그래밍10분만에 이해하는 프로그래밍
10분만에 이해하는 프로그래밍
 
Mi power point flores
Mi power point floresMi power point flores
Mi power point flores
 
Somul 2017-이민석
Somul 2017-이민석Somul 2017-이민석
Somul 2017-이민석
 
1.자료구조와 알고리즘(강의자료)
1.자료구조와 알고리즘(강의자료)1.자료구조와 알고리즘(강의자료)
1.자료구조와 알고리즘(강의자료)
 
[1116 박민근] c++11에 추가된 새로운 기능들
[1116 박민근] c++11에 추가된 새로운 기능들[1116 박민근] c++11에 추가된 새로운 기능들
[1116 박민근] c++11에 추가된 새로운 기능들
 
Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심
 

Similar to 프로그램 기초

소프트웨어 교육 이야기
소프트웨어 교육 이야기소프트웨어 교육 이야기
소프트웨어 교육 이야기Jaehwi Alice Kim
 
현업 엔지니어의 시각에서 본 알고리즘 공부의 장점과 단점
현업 엔지니어의 시각에서 본 알고리즘 공부의 장점과 단점현업 엔지니어의 시각에서 본 알고리즘 공부의 장점과 단점
현업 엔지니어의 시각에서 본 알고리즘 공부의 장점과 단점Wonha Ryu
 
0917_서인고_멘토링_오원종_최종.pdf
0917_서인고_멘토링_오원종_최종.pdf0917_서인고_멘토링_오원종_최종.pdf
0917_서인고_멘토링_오원종_최종.pdfWonJongOh1
 
Programming for kids
Programming for kidsProgramming for kids
Programming for kidsYoun-Hee Han
 
세미나
세미나세미나
세미나Dongyi Kim
 
170513 4차 산업 혁명과 미래교육 컴퓨팅 교육의 동향과 해명 @송곡초
170513 4차 산업 혁명과 미래교육   컴퓨팅 교육의 동향과 해명 @송곡초170513 4차 산업 혁명과 미래교육   컴퓨팅 교육의 동향과 해명 @송곡초
170513 4차 산업 혁명과 미래교육 컴퓨팅 교육의 동향과 해명 @송곡초Choi Man Dream
 
절차지향 vs 객체지향
절차지향 vs 객체지향절차지향 vs 객체지향
절차지향 vs 객체지향QooJuice
 
KeyValuePair 첫 모임 - XP와 Pair programming
KeyValuePair 첫 모임 - XP와 Pair programmingKeyValuePair 첫 모임 - XP와 Pair programming
KeyValuePair 첫 모임 - XP와 Pair programmingJaewon Choi
 
창발 세미나 - Bing에서의 머신러닝
창발 세미나 - Bing에서의 머신러닝창발 세미나 - Bing에서의 머신러닝
창발 세미나 - Bing에서의 머신러닝Sang-Min Park
 
16 학술제 마무리 자료
16 학술제 마무리 자료16 학술제 마무리 자료
16 학술제 마무리 자료Junyoung Jung
 
오승준, 사회적 기술이 프로그래머 인생을 바꿔주는 이유, NDC2011
오승준, 사회적 기술이 프로그래머 인생을 바꿔주는 이유, NDC2011오승준, 사회적 기술이 프로그래머 인생을 바꿔주는 이유, NDC2011
오승준, 사회적 기술이 프로그래머 인생을 바꿔주는 이유, NDC2011devCAT Studio, NEXON
 
효율적 데이터 과학을 위한 7가지 팁
효율적 데이터 과학을 위한 7가지 팁효율적 데이터 과학을 위한 7가지 팁
효율적 데이터 과학을 위한 7가지 팁Jaimie Kwon (권재명)
 
RUCK 2017 권재명 효율적 데이터 과학과 데이터 조직을 위한 7가지 요인
RUCK 2017 권재명 효율적 데이터 과학과 데이터 조직을 위한 7가지 요인RUCK 2017 권재명 효율적 데이터 과학과 데이터 조직을 위한 7가지 요인
RUCK 2017 권재명 효율적 데이터 과학과 데이터 조직을 위한 7가지 요인r-kor
 
How To Become Better Engineer
How To Become Better EngineerHow To Become Better Engineer
How To Become Better EngineerDaeMyung Kang
 
Django Girls 12월 Meetup 발표 자료
Django Girls 12월 Meetup 발표 자료Django Girls 12월 Meetup 발표 자료
Django Girls 12월 Meetup 발표 자료seungdols
 
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기Wonha Ryu
 
KERIS SW교육 연계 로봇 활용 심화과정 (중등)
KERIS SW교육 연계 로봇 활용 심화과정 (중등)KERIS SW교육 연계 로봇 활용 심화과정 (중등)
KERIS SW교육 연계 로봇 활용 심화과정 (중등)Kwang-Hyun Park
 
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발동현 김
 

Similar to 프로그램 기초 (20)

소프트웨어 교육 이야기
소프트웨어 교육 이야기소프트웨어 교육 이야기
소프트웨어 교육 이야기
 
현업 엔지니어의 시각에서 본 알고리즘 공부의 장점과 단점
현업 엔지니어의 시각에서 본 알고리즘 공부의 장점과 단점현업 엔지니어의 시각에서 본 알고리즘 공부의 장점과 단점
현업 엔지니어의 시각에서 본 알고리즘 공부의 장점과 단점
 
0917_서인고_멘토링_오원종_최종.pdf
0917_서인고_멘토링_오원종_최종.pdf0917_서인고_멘토링_오원종_최종.pdf
0917_서인고_멘토링_오원종_최종.pdf
 
Programming for kids
Programming for kidsProgramming for kids
Programming for kids
 
세미나
세미나세미나
세미나
 
170513 4차 산업 혁명과 미래교육 컴퓨팅 교육의 동향과 해명 @송곡초
170513 4차 산업 혁명과 미래교육   컴퓨팅 교육의 동향과 해명 @송곡초170513 4차 산업 혁명과 미래교육   컴퓨팅 교육의 동향과 해명 @송곡초
170513 4차 산업 혁명과 미래교육 컴퓨팅 교육의 동향과 해명 @송곡초
 
DebugIt/chapter5~8
DebugIt/chapter5~8DebugIt/chapter5~8
DebugIt/chapter5~8
 
절차지향 vs 객체지향
절차지향 vs 객체지향절차지향 vs 객체지향
절차지향 vs 객체지향
 
KeyValuePair 첫 모임 - XP와 Pair programming
KeyValuePair 첫 모임 - XP와 Pair programmingKeyValuePair 첫 모임 - XP와 Pair programming
KeyValuePair 첫 모임 - XP와 Pair programming
 
창발 세미나 - Bing에서의 머신러닝
창발 세미나 - Bing에서의 머신러닝창발 세미나 - Bing에서의 머신러닝
창발 세미나 - Bing에서의 머신러닝
 
16 학술제 마무리 자료
16 학술제 마무리 자료16 학술제 마무리 자료
16 학술제 마무리 자료
 
오승준, 사회적 기술이 프로그래머 인생을 바꿔주는 이유, NDC2011
오승준, 사회적 기술이 프로그래머 인생을 바꿔주는 이유, NDC2011오승준, 사회적 기술이 프로그래머 인생을 바꿔주는 이유, NDC2011
오승준, 사회적 기술이 프로그래머 인생을 바꿔주는 이유, NDC2011
 
효율적 데이터 과학을 위한 7가지 팁
효율적 데이터 과학을 위한 7가지 팁효율적 데이터 과학을 위한 7가지 팁
효율적 데이터 과학을 위한 7가지 팁
 
RUCK 2017 권재명 효율적 데이터 과학과 데이터 조직을 위한 7가지 요인
RUCK 2017 권재명 효율적 데이터 과학과 데이터 조직을 위한 7가지 요인RUCK 2017 권재명 효율적 데이터 과학과 데이터 조직을 위한 7가지 요인
RUCK 2017 권재명 효율적 데이터 과학과 데이터 조직을 위한 7가지 요인
 
How To Become Better Engineer
How To Become Better EngineerHow To Become Better Engineer
How To Become Better Engineer
 
Django Girls 12월 Meetup 발표 자료
Django Girls 12월 Meetup 발표 자료Django Girls 12월 Meetup 발표 자료
Django Girls 12월 Meetup 발표 자료
 
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
 
KERIS SW교육 연계 로봇 활용 심화과정 (중등)
KERIS SW교육 연계 로봇 활용 심화과정 (중등)KERIS SW교육 연계 로봇 활용 심화과정 (중등)
KERIS SW교육 연계 로봇 활용 심화과정 (중등)
 
인공지능의 파도가 온다
인공지능의 파도가 온다인공지능의 파도가 온다
인공지능의 파도가 온다
 
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
 

More from Minsuk Lee

CES 처음 가는 분을 위한 가이드
CES 처음 가는 분을 위한 가이드CES 처음 가는 분을 위한 가이드
CES 처음 가는 분을 위한 가이드Minsuk Lee
 
NIA-PaaS-TA Pub 키노트
NIA-PaaS-TA Pub 키노트NIA-PaaS-TA Pub 키노트
NIA-PaaS-TA Pub 키노트Minsuk Lee
 
모두콘, 어떻게 배울 것인가 발제.
모두콘,  어떻게 배울 것인가 발제.모두콘,  어떻게 배울 것인가 발제.
모두콘, 어떻게 배울 것인가 발제.Minsuk Lee
 
GDG-DevFest, 만들면서 자랑하면서 성장하는 개발자
GDG-DevFest, 만들면서 자랑하면서 성장하는 개발자GDG-DevFest, 만들면서 자랑하면서 성장하는 개발자
GDG-DevFest, 만들면서 자랑하면서 성장하는 개발자Minsuk Lee
 
개발자, 회사.. 왜 오픈소스를 해야할까?
개발자, 회사.. 왜 오픈소스를 해야할까?개발자, 회사.. 왜 오픈소스를 해야할까?
개발자, 회사.. 왜 오픈소스를 해야할까?Minsuk Lee
 
진정한 소프트웨어 융합교육에 대하여
진정한 소프트웨어 융합교육에 대하여 진정한 소프트웨어 융합교육에 대하여
진정한 소프트웨어 융합교육에 대하여 Minsuk Lee
 
FOSS CON Korea 2018
FOSS CON Korea 2018FOSS CON Korea 2018
FOSS CON Korea 2018Minsuk Lee
 
소프트웨어 공부하는법
소프트웨어 공부하는법소프트웨어 공부하는법
소프트웨어 공부하는법Minsuk Lee
 
Open Source 그리고 git과 github, code review
Open Source 그리고 git과 github, code reviewOpen Source 그리고 git과 github, code review
Open Source 그리고 git과 github, code reviewMinsuk Lee
 
Next에서 공부하는 법
Next에서 공부하는 법Next에서 공부하는 법
Next에서 공부하는 법Minsuk Lee
 
Deview 2013 - 나는 왜 개발자인데 자신이 없을까?
Deview 2013 - 나는 왜 개발자인데자신이 없을까?Deview 2013 - 나는 왜 개발자인데자신이 없을까?
Deview 2013 - 나는 왜 개발자인데 자신이 없을까?Minsuk Lee
 
임베디드시스템개발 Part2
임베디드시스템개발 Part2임베디드시스템개발 Part2
임베디드시스템개발 Part2Minsuk Lee
 
OSS개발자포럼 Slide-2013-05-25
OSS개발자포럼 Slide-2013-05-25OSS개발자포럼 Slide-2013-05-25
OSS개발자포럼 Slide-2013-05-25Minsuk Lee
 
임베디드시스템개발 Part1
임베디드시스템개발 Part1임베디드시스템개발 Part1
임베디드시스템개발 Part1Minsuk Lee
 
임베디드시스템과시장
임베디드시스템과시장임베디드시스템과시장
임베디드시스템과시장Minsuk Lee
 

More from Minsuk Lee (15)

CES 처음 가는 분을 위한 가이드
CES 처음 가는 분을 위한 가이드CES 처음 가는 분을 위한 가이드
CES 처음 가는 분을 위한 가이드
 
NIA-PaaS-TA Pub 키노트
NIA-PaaS-TA Pub 키노트NIA-PaaS-TA Pub 키노트
NIA-PaaS-TA Pub 키노트
 
모두콘, 어떻게 배울 것인가 발제.
모두콘,  어떻게 배울 것인가 발제.모두콘,  어떻게 배울 것인가 발제.
모두콘, 어떻게 배울 것인가 발제.
 
GDG-DevFest, 만들면서 자랑하면서 성장하는 개발자
GDG-DevFest, 만들면서 자랑하면서 성장하는 개발자GDG-DevFest, 만들면서 자랑하면서 성장하는 개발자
GDG-DevFest, 만들면서 자랑하면서 성장하는 개발자
 
개발자, 회사.. 왜 오픈소스를 해야할까?
개발자, 회사.. 왜 오픈소스를 해야할까?개발자, 회사.. 왜 오픈소스를 해야할까?
개발자, 회사.. 왜 오픈소스를 해야할까?
 
진정한 소프트웨어 융합교육에 대하여
진정한 소프트웨어 융합교육에 대하여 진정한 소프트웨어 융합교육에 대하여
진정한 소프트웨어 융합교육에 대하여
 
FOSS CON Korea 2018
FOSS CON Korea 2018FOSS CON Korea 2018
FOSS CON Korea 2018
 
소프트웨어 공부하는법
소프트웨어 공부하는법소프트웨어 공부하는법
소프트웨어 공부하는법
 
Open Source 그리고 git과 github, code review
Open Source 그리고 git과 github, code reviewOpen Source 그리고 git과 github, code review
Open Source 그리고 git과 github, code review
 
Next에서 공부하는 법
Next에서 공부하는 법Next에서 공부하는 법
Next에서 공부하는 법
 
Deview 2013 - 나는 왜 개발자인데 자신이 없을까?
Deview 2013 - 나는 왜 개발자인데자신이 없을까?Deview 2013 - 나는 왜 개발자인데자신이 없을까?
Deview 2013 - 나는 왜 개발자인데 자신이 없을까?
 
임베디드시스템개발 Part2
임베디드시스템개발 Part2임베디드시스템개발 Part2
임베디드시스템개발 Part2
 
OSS개발자포럼 Slide-2013-05-25
OSS개발자포럼 Slide-2013-05-25OSS개발자포럼 Slide-2013-05-25
OSS개발자포럼 Slide-2013-05-25
 
임베디드시스템개발 Part1
임베디드시스템개발 Part1임베디드시스템개발 Part1
임베디드시스템개발 Part1
 
임베디드시스템과시장
임베디드시스템과시장임베디드시스템과시장
임베디드시스템과시장
 

프로그램 기초

  • 1. Computer Programming I 알파고 이야기, Programming 이민석 국민대학교 컴퓨터공학부
  • 2. 학습 목표 1. 이세돌 vs. 알파고 2. 프로그램을 배운다는 것 3. 프로그래밍에 의한 절차적 문제 해결
  • 4. 우리 wife의 반응 경기 시작 전 “당연히 컴퓨터가 이기는 거 아냐?” ß (나) “아직 컴퓨터가 그 정도는 아니야, 바둑은 체스랑 달라서 Blah Blah … ” 알파고 1승 후 “컴퓨터 하는 사람이 그것도 몰라?” ß (나) “쟤는 집에 있는 그런 컴퓨터가 아니야 CPU가 1,920개 GPU가 280개 …” 알파고 2승 후 “거봐” (그날따라 집의 인터넷 느림) ß (나) “구글이 바둑 두느라고 인터넷, 전기 다 가져다 써서 그래”
  • 5. 이세돌 vs. AlphaGo, 말들 해설자 송태곤 9단 (2국 중간) “이세돌 9단의 패착을 찾지를 못하겠어요. 인간의 눈으로 볼 때는 실수는 알파고만 하고 있었거든요” 허사비스 딥마인드 CEO (1국 승리 후) "우리는 달에 착륙했다. 팀이 자랑스럽다" 이세돌 (1국 패배 후) “진다고 생각 안 했는데 너무 놀랐다”, “이세돌이 패한 것일 뿐 인간이 패한 것은 아니다” 이세돌 (첫 기자회견) “3대2정도의 승리가 아니라 한판 질까 말까 정도” 이세돌 (대국하루전 알파고 원리를 듣고) “조금 긴장했다. 5대0승리는 아닐 것 같다” 이세돌 (5국 후) “물론 질 수도 있다. 그러나 바둑의 아름다움, 인간의 아름다움을 컴퓨터가 이해하고 두는 게 아니기에 바둑의 가치는 계속될 것” 이세돌 (4국 승리 후) “그전에도, 앞으로도 그 어떤 것과 값어치를 매길 수 없는 1승”
  • 6. 이세돌 vs. AlphaGo, 그 여파 • 온갖 AI 이슈 ü AI의 의도적 실수 and/or 버그, ü 경기 상황 중간 보고 ü AI의 윤리 • AI vs. 인간 ü 명령을 받을 것인가? 내릴 것인가? ü AI는 우리의 적인가? • AI 시대에 대응하는 자세 • 최저 생활비 보장 * AI (Artificial Intelligence, 인공지능)
  • 7. 프로그래밍에 의한 문제 해결 비교 예.. 자동차 만들기 vs. 컴퓨터로 문제 해결하기
  • 8. 자동차 • 자동차는 시키는 대로 간다. – 자동차 자체는 그냥 껍데기일 뿐 – 자동차는 운전자가 원하는 곳으로 간다. – ‘자동’차 이지만, 모든 것이 자동으로 되지는 않는다. • 밟으면 엔진이 돌고, 핸들을 돌려야 방향이 바뀐다. – 더구나, 자동차는 누군가가 만들었다. – 정말 처음부터 자동으로 된 것은 아무 것도 없다. • 그 누군가가 설계하고, • 또 누군가가 Every Detail을 다 정했다.
  • 9. 컴퓨터 • 컴퓨터도 시키는 것만 한다. – 컴퓨터 자체는 그냥 껍데기일 뿐 – 컴퓨터는 프로그래머가 시킨 일만 한다. – ‘컴퓨터’ 이지만, 모든 것을 알아서 하지는 않는다. • 소프트웨어를 만들어 넣고, 사용자가 정한 기능이 수행된다. – 더구나, 컴퓨터는 누군가가 만들었다. – 정말 처음부터 자동으로 된 것은 아무 것도 없다. • 그 누군가가 설계하고, • 또 누군가가 Every Detail을 다 정했다.
  • 10. 컴퓨터가 하는 일은 문제 해결 • 문제를 모르면 답도 없다. 문제란 두 종류인데, – 이전에 있던 것들의 생산성을 높이는 것들 – 전혀 새로운 가치를 사람에게 제공하는 것들 • 문제는 사람이 정의한다. – 그리고, 대부분의 문제는 복잡하다. • 그 복잡함의 근원에는 다양한 상황과 데이터가 있다. – 그래서, 완벽하고 간단한 정답은 보통 없으며 – 상황에 따라, 데이터에 따라 여러 가지 답이 있다. – 어떤 경우에도, 그 답도 사람이 만들고 – 최종적으로는 소프트웨어라는 도구로 구현된다.
  • 11. 문제해결 도구, 소프트웨어 • 복잡한 문제를 해결하는 절차 1. 문제를 잘 이해하려고 노력한다. • 문제가 존재하는 상황과 연관된 데이터를 잘 살펴본다. 2. 큰 문제를 조금은 덜 복잡한 작은 문제들로 나눈다. • 조각 낸 작은 문제들의 답을 예측하고, • 그 답들을 순서에 맞추어 잘 연결하여, • 처음 큰 문제의 답이 만들어지는지 검토한다. • 필요하면 작은 문제를 더 작은 문제들로 다시 나눈다. 3. 작은 문제에 대한 답을 구하는 방법을 찾는다. • 어떤 때는 간단한 논리와 산수로 • 또 어떤 때는 복잡한 논리와 고도의 수학이 필요하다. 4. 작은 문제의 답들을 엮어 큰 문제의 답을 얻는다.
  • 12. 문제의 예: 자동차, 1 단계 • 큰 문제 – 승객을 목적지에 안전하게 도달하게 하는 것 • 큰 문제를 해결하기 위한 작은 문제들 1. 굴러가게 해야 한다. 2. 원하는 방향으로 가게 해야 한다. 3. 설 수 있어야 한다. 4. 안전하고, 편하게 위 목적을 달성해야 한다.
  • 13. 문제의 예: 자동차, 2 단계 • 작은 문제를 더 작게 1. 굴러가게 해야 한다. • 엔진이 필요하다. • 엔진의 동력을 바퀴에 전달해야 한다. 2. 원하는 방향으로 가게 해야 한다. • 핸들이 필요하다. 바퀴를 움직여야 한다. 3. 설 수 있어야 한다. • 브레이크 페달이 필요하다. 움직이는 바퀴를 세워야 한다 4. 편하게 위 목적을 달성해야 한다. • 깜박이가, 전조등이, 미등이, 에어백이, • 에어컨이, 내비게이션이, 블랙박스가 필요하다. • …
  • 14. 문제의 예: 자동차, 3단계 • 더 작은 문제를 한층 더 작게 1. 굴러가게 해야 한다. • 엔진이 필요하다. A. 연료는? (휘발류? 경유? 전기?) • 연료통 (배터리) 크기? • 연료통 (배터리) 위치? • 남은 량 측정? • 화재 방지 방법? B. 엔진 출력은? C. … • 엔진의 동력을 바퀴에 전달해야 한다. • … 여러 가지 답 상황을 고려하여 한 가지를 선택하거나 두 가지를 섞어 쓸 수 있다. 선택은 다른 문제를 만든다 (또는 문제를 바꾼다) 가끔은 문제가 작아질수록 더 고도의 전문성이 요구된다.
  • 15. 소프트웨어 / 프로그램 / 프로그래밍 언어 • 컴퓨터 소프트웨어는 컴퓨터 프로그램들을 모아 놓은 것 • 컴퓨터 프로그램은 프로그래밍 언어의 명령들을 모아 놓은 것 • 프로그래밍 언어는 데이터와, 문제를 해결하는 방법(논리와 수학)을 절차적/구조적으로 표현하여 컴퓨터가 실행할 수 있게 해주는 도구 큰 문제 해결 도구 작은 문제 해결 문제 해결 방법 표현 아직은 사람만 가능 J
  • 16. 그래서 뭘 하자는 건가? • 코딩(프로그램)으로 문제와, 문제의 해결 방안을 표현하는 것 – 문제 그 자체, 또는 문제와 연관된 데이터 (자료구조) – 논리적/절차적인 문제 해결 방안 (알고리즘) 문제의 핵심, 세상의 모든 것은 데이터 !! • 데이터를 어떻게 얻고 • 데이터의 의미를 이해하고 • 데이터를 이용하여 • 다른 의미있는 데이터 만들기
  • 17. 코딩: 문제의 근원인 데이터의 표현 • 데이터의 형태 – 숫자 (정수, 실수, ...), 문자, 문자열 • 예, 0, -6, 3.1415, ‘A’, “국민대학교” – 조직화된 데이터 • 의미 있는 한 덩어리의 데이터 예, (이름, 생년월일, 전화번호) • 데이터 사이의 관계 – 데이터 또는 조직화된 데이터의 집합 또는 순서 • 예, 오늘의 검색어 순위 • 예, 금주의 음악 챠트
  • 18. 코딩: 문제 해결 방법의 표현 • 순차적 접근 (Procedural) – 정말로 낱낱이 풀어서, 이것하고, 다음에 저것하고, 그 다음은 … • 산수와 논리 (Arithmetic & Logic) – 뭐하고 뭐를 더하고, 곱하고, …. ( +, -, *, /, …) – 참과 거짓, 그리고, 또는, 반대의 관계 ( True, False, AND, OR, NOT ) • 조건과 분기 (Conditional Branch) – If (조건) then 이런 일 else 저런 일 • 반복 (Iteration) – 여기서부터 저기까지 (몇 번, 언제까지, 무한히) 반복
  • 20. 프로그래밍 언어도 많다 • 문제에 따라, 컴퓨터에 따라 http://3.bp.blogspot.com/-QZ4yib_WQFk/VOej26zs_NI/AAAAAAAAAXY/DF7R-KmYzk4/s1600/prog-languages.png 1. Java 2. C 3. C++ 4. C# 5. Python 6. PHP 7. JavaScript 8. Perl 9. Ruby 2016-04 TIOBE Index
  • 21. 언어의 첫 걸음: Hello World! • Java 버전 // Hello World! in Java class HelloWorld { static public void main(String args[]) { System.out.println("Hello World!”); } }
  • 22. 언어의 첫 걸음: Hello World! • C 버전 /* Hello World! in C, Ansi-style */ #include <stdio.h> #include <stdlib.h> int main(void) { puts("Hello World!"); return EXIT_SUCCESS; }
  • 23. 언어의 첫 걸음: Hello World! • 엔트리 • Python 버전 # Hello World! in Python 3 print("Hello World!") • Scratch 버전
  • 24. Why Entry? • Entry(엔트리)는 프로그래밍 언어의 일종 – 쉽고, 재미있고, – 무료, 오픈 소스이고, – 웹으로 되고, PC, Mac, 안드로이드, 아이폰에서도 되고, – 문법보다는 문제에 더 신경쓸 수 있게 해주고 – 역시, 다른 모든 프로그래밍 언어처럼 절차적인 문제 해결, – “~~일이 발생하면 ~~를 해요” 방식의 문제 해결이 가능 • 어떤 이벤트에 대하여 반응
  • 25. OFF ON 절차적으로 정리하면 스위치의 위치 확인 만일 스위치가 ON 위치 이면 불을 켠다. 아니면 불이 끈다. 프로그램으로 짜면 if (switch == ON) then light = ON else light = OFF 말로 하면 스위치를 누를 때 불을 켠다. 프로그램의 예 (불 켜기) * 모든 언어마다 문법은 조금씩 다름
  • 26. 알파고도 풀 수 없는 문제.. 시작 (여자가 화가 남) 미안해 뭐가 미안해? 알아몰라 알면서 그래? 모르면서 그래? 잘못했어 뭘 잘못했는데? 남자 여자 : 멘붕에 따른 임의의 선택 (머리속에서 어설픈 동전던지기) Man Trapped
  • 27. 예제: Man Trapped 여자_화남 = TRUE; 미안: 남자(“미안해”); 여자(“뭐가 미안해?”); 뭐를: 남자(머릿속 동전 던지기); if (동전=앞면) then 남자(“알아”); 여자( “알면서그래?”); else 남자(“몰라”); 여자(“모르면서 그래?”); 남자(머릿속 동전 던지기); if (동전=앞면) then goto 미안; 남자(“잘못했어”); 여자(“ 뭘 잘못했는데?”); goto 뭐를;
  • 28. 예제: Man Trapped (Entry code: http://j.mp/man-trapped) • 사건을 단계로 풀어보면… 1. 시작 2. ‘미안해’ 하고, 이유 추궁 당하고, 3. 아무 대답이나 하고, 4. 제대로 일격을 당하고 나름 작전을 선택하고 5. ‘잘못했어‘ 하고 또 이유 추궁당하고 6. 다시 3번으로
  • 29. 프로그래밍 요소 • 순차 실행 – 아래로 향하는 화살표 – 블록(문장)의 나열 • 반복 – 위로 올라가는 화살표 • 조건에 따른 선택 – 두 방향의 화살표
  • 30. 요약 1. 이세돌 vs. AlphaGo 2. 프로그램을 배운다는 것 ü 자동차 vs. 컴퓨터 3. 프로그래밍에 의한 절차적 문제 해결 ü 데이터 !! ü 프로그래밍 언어 ü 조건과 절차 ü Man-Trapped http://j.mp/man-trapped