왜 ‘프로그래밍’을 ‘비이공계 학생’이 알아야 하는가? 왜 ‘프로그래밍’을 ‘비이공계 학생’이 알아야 하는가? 소프트웨어융합학부 건국대학교
존재로써의 컴퓨터? 어떤 존재인가? (이해) ‘공존’해야 하는 존재 ‘경쟁’해야 하는 존재 ‘의존’해야 하는 존재 http://biz.heraldcorp.com/view.php?ud=20160310000846 ‘경쟁’해야 하는 존재 어떤 존재인가? (이해) ‘의존’해야 하는 존재 ‘경계’해야 하는 존재
미래 사회에서의 컴퓨터 역할들 가정 사회분야 예술분야 가정부 애완견 … 방송 기자 경찰 군인 의사 … 작곡가 화가 소설가 배우 가수 … 예술분야 …
인간에게 컴퓨터란? ! ?
미래 컴퓨터: ‘생각하는’ 기계 컴퓨터가 ‘어떻게 사고하는 지’를 이해해야 ! 생각 = 사고 생각 = 사고 어떤 존재인가? (이해)
인문학적 질문: 생각 (사고)란 무엇인가? 명확하게 알려진 영역 해결되지 않은 질문 미지의 영역 컴퓨터는 어떻게 ‘동작 (사고) [저장, 계산,분석, 판단, 예측 …]’ 하는가? [정신] 인간은 어떻게 ‘생각 (사고) [감정, 학습, 기억 (지식), 인지, 판단, …]’ 하는가? 인간이 프로그램 제작 ‘컴퓨터 프로그램’에 따라 작동 [육체] ‘인간의 뇌’는 어떻게 작동하는가?
‘컴퓨터를 이해한다’는 것이란? 컴퓨터는 프로그램에 따라 작동 !! ‘컴퓨터 (인공지능)’에 대한 이해 ‘컴퓨터 프로그램’에 대한 이해 프로그래밍 [분석, 설계, 구현] 컴퓨팅 [프로그램 실행] 컴퓨터 프로그램
‘컴퓨터 프로그램’이란? 컴퓨터: ‘컴퓨터 언어 (프로그래밍 언어)로 작성 된 프로그램을 실행하는 기계’로 설계 Turing Machine (Turing) Stored Program Computer (John Von Neumann) 컴퓨터 프로그램: ‘특정 문제에 관한 해결 방법’ 을 ‘컴퓨터 언어’로 기술한 ‘문서’ ‘프로그래밍 언어’ 처리 능력 (컴퓨팅) ‘프로그래밍 언어’ 지식 컴퓨터 프로그램
‘컴퓨터 (프로그래밍) 언어’란? 이론적 모델 (매우 단순) 이론적 구성 이론적 모델을 토대로 실제 구현된 프로그래밍 언어들 Turing Machine (Alan Turing) Stored Program Computer (John Von Neumann) 이론적 구성 데이터 저장공간 명령어: Read/Write (저장공간), 연산, 비교, 제어 (다 음에 실행할 명령어) 이론적 모델을 토대로 실제 구현된 프로그래밍 언어들 Fortran, C/C++, Java, JavaScript, Python, OpenGL, Scratch, ….
‘컴퓨터 (프로그래밍) 언어’란? 이론적 모델 현실 세계 Turing Machine (Alan Turing) 프로그래밍 언어 Stored Program Computer (John Von Neumann) Fortran C/C++ Java Python Scratch …. 현실 세계 프로그래밍 언어 이론적 모델 구현 데이터 저장공간 명령어: Read/Write (저장공간), 연산, 비교, 제어 (다음에 실행할 명령어 위치)
‘프로그래밍’이란? 언어: Scratch 알고리즘 코딩 ‘문제 해결’을 위한 방법 및 절차 ‘컴퓨터 (프로그래밍) 언어’의 특성과 구조에 맞게 설계 알고리즘을 ‘특정 컴퓨터 (프로그래밍) 언어’를 이용해서 구현 (표현) 소설에서 플롯 (Plot)을 만들기 인물, 주제, 배경과 함께 사건들의 논리적 구성 및 배열 소설을 집필하기 특정 언어 (예, 한글)를 사용해서 소설의 플롯을 구체적 단어와 문장으로 구현하기
알고리즘이란? 문제 해결을 위한 ‘논리적 방법 및 절차’ ‘컴퓨터 언어의 특징과 구조 [컴퓨팅]’에 적합하 게 설계 그러나 특별한 컴퓨터 언어에는 독립적으로 설계 다양한 도구 (방법)으로 기술 (Writing) 순서도 (Flowchart) 개체 관계도 (Entity-Relationship Diagram) ……
순서도 (Flowchart): 최대값 구하기 시작 ‘A[현위치]’ > ‘최대값’ A[1 .. 1,000,000] 최대값 = 0 현위치 = 1 최대값 = A[현위치] ‘현위치’ < 1,000,000 1,000,000개 ‘자연수 값’이 저장된 저장장소 현위치 = 현위치 +1 최대값 끝 Yes No ‘모든 값’ > 0 시작 or 끝 처리 (Process) 판단 입출력 흐름선 기본 블럭 컴퓨터의 구조와 특성에 맞게 설계
프로그래밍은 ‘특수 전문기술’인가? 알고리즘은 ‘일반적인 개념적 및 논리적 설계’이 다. 따라서 비이공계 학생도 당연히 잘 할 수 있다 그러나 ‘코딩 (알고리즘을 프로그래밍언로써 변환)’은 전문 지식과 훈련이 필요하다 ‘알고리즘 공부 및 훈련’을 통해 모든 분야 학생 들이 '논리적, 합리적, 체계적 사고 능력’을 발전 시킬 수 있다 선진국에서 모든 학생들에게 컴퓨팅적 사고 훈련을 시키는 이유 ‘비이공계 전문가 (인문, 사회, 예술)’들이 ‘자신 들의 지식을 알고리즘으로 개발’할 수 있을 때 ‘미래 컴퓨터를 보다 인간적으로’ 만들 수 있다