스탠포드식 쉬운 프로그래밍 / 코딩 첫걸음 (1) - 프로그래밍이란?

스탠포드식 쉬운 프로그래밍 / 코딩 첫걸음 (1) - 프로그래밍이란? 본문

스탠포드식 쉬운 프로그래밍 / 코딩 첫걸음 (1) - 프로그래밍이란?

KRONNA 2016. 6. 24. 10:00


요즘엔 관련된 일을 하는 직장인이나 IT에 관심이 많은 학생이 아니여도 일상과 뉴스에서 "스마트폰 어플리케이션 (앱)"이나 "인공지능"같은 단어를 자주 접할 수 있습니다. 특히나 고등학생, 중학생, 심지어는 초등학생을 자녀로 둔 학부모분들도 대학 입시에 도움이 되기를 바라는 마음에서, 혹은 아이들이 관심을 가져서, "프로그래밍" 혹은 "코딩"에 대해 많이 찾아보십니다. 이유가 무엇이 되었든 프로그래밍을 배우는건 누구에게나 큰 도움이 될 수 있습니다. 프로그래머가 되지 않아도 프로그래밍에 대한 기본적인 이해는 소프트웨어로 인해 변할 다양한 산업들에서 성공하는데 도움이 되기 때문이죠. 


실리콘밸리의 중심에 위치한 스탠포드 대학교에는 컴퓨터와 전혀 관련이 없는 전공 학생들도 꼭 들어보는 수업이 있습니다. 바로 컴퓨터 과학 입문 수업인 CS106A죠. 다들 CS106A를 배우는 이유는 스탠포드가 컴퓨터 과학 분야 세계 1위인것도 있지만 (US News), 40대 대학원생들부터 고등학교를 졸업할때까지 프로그래밍은 한번도 접해본적 없는 신입생들까지 모두가 쉽게 프로그래밍을 배울 수 있게 수업이 잘 짜여져있는것이 주효합니다. 같은 내용을 가르쳐주었을 때 초등학교 5학년인 제 사촌동생도 쉽게 따라하는걸 보고, 프로그래밍을 배워보고 싶은 분들이 누구나 공짜로 세계 최고 수준의 교육을 받을 수 있도록 CS106A 수업을 블로그에 올릴 결정을 하였습니다. 




프로그래밍을 공부하기에 앞서 몇가지 관련 단어부터 배워볼까요? 


컴퓨터 과학이란? 

컴퓨터 과학은 정보를 만들고, 설명하고, 바꾸는 알고리즘을 배우는 학문 분야입니다. 알고리즘은 주어진 문제를 풀기 위해 여러가지 행동들을 조합하는 방식을 뜻합니다. 쉽게 얘기해 우리가 컴퓨터에 저장하는 파일이나 컴퓨터가 계산해주었으면 하는 문제들을 컴퓨터가 처리할 수 있도록 하기 위해 어떤 "명령"을 내려야 하는지 배우는 것이 컴퓨터 과학입니다. 


컴퓨터 과학 분야에는 디즈니 애니메이션부터 3D 게임 속 세계를 만들어내는 컴퓨터 그래픽 (CG), 움직이는 기계를 프로그래밍하는 로보틱스, 데이터를 저장하고 분석하는 데이터 사이언스, 사람의 말을 알아들을 수 있는 프로그램을 만드는 자연어 처리, 사람처럼 세계를 보고 이해할 수 있는 프로그램을 만드는 컴퓨터 비젼, 그리고 자연어 처리와 컴퓨터 비젼을 포함하며 스스로 생각할 수 있는 프로그램을 만드는 인공지능 (AI) 등이 있습니다. 


프로그래밍이란?

프로그래밍은 주어진 문제를 풀기 위해 문제의 본질을 이해하고, 컴퓨터가 풀 수 있는 방법 (알고리즘)을 구상하고, 자신 혹은 남들이 만든 프로그램이 문제를 제대로 해결하는지를 파악하는 이 모든 과정을 통틀어 부르는 명칭입니다. 컴퓨터가 수행할 수 있는 명령들을 적은것을 프로그램이라고 부릅니다.


코딩이란?

일상 대화에선 코딩과 프로그래밍을 혼용하여 사용하기도 하지만 스탠포드에선 이 두 단어를 구분하여 사용합니다. 코딩은 프로그래밍에서 "문제 해결 방법"을 컴퓨터가 이해할 수 있는 "프로그래밍 언어"로 번역해 적는 것을 의미합니다. 




프로그래밍이 무엇인지 이제 알게 되었으니 이제 우리가 "스탠포드식 쉬운 프로그래밍 / 코딩 첫걸음" 시리즈에서 무엇을 배울것인지를 알아보도록 하죠. 프로그래밍 언어에는 C, C++, 스위프트, 자바 등이 있습니다. 그리고 우리는 이 중 최근 가장 많이 사용되고 있는 언어인 "자바"를 배울 것 입니다. 컴퓨터에 자신이 없는 분들, 40~50대 어른들부터 10대 초등학생들까지 누구나 따라할 수 있는 쉬운 방법을 통해서 말이죠 (이 글에 단어들이 어려운 어린이 친구들은 부모님께서 설치까지 도와주시고 다음 글부터 따라해주세요). 1970년대, 스탠포드에 재학중이던 리치 패티스는 프로그래밍을 처음 시작하는 학생들이 프로그래밍 언어의 복잡한 규칙들 없이 간단한 환경에서 프로그래밍 언어의 기본 구조를 먼저 배우면 프로그래밍 공부가 훨씬 쉬워질거라 생각하고 카렐 로봇이라는 프로그램을 만들었습니다. 여러분은 다음 수업부터 카렐에게 '자바'를 이용해 카렐이 여러가지 문제를 해결할 수 있게 도와주며 자바는 물론 프로그래밍의 기본을 배우게 될것입니다. 


카렐을 만나기 전에 우선 컴퓨터에 프로그래밍에 필요한 프로그램들을 설치하고 카렐을 불러와야 합니다. 다음 수업에서는 자바를 프로그래밍할때 가장 많이 사용되는 에디터 프로그램인 Eclipse (이클립스)를 설치하고, 카렐을 이클립스로 데려오도록 하죠!


Stanford CS106A 수업에 대한 모든 권리는 스탠포드 대학교가 가지고 있습니다. "스탠포드식 쉬운 프로그래밍 / 코딩 첫걸음"은 스탠포드 대학교의 CS106A 수업을 남녀노소 누구나 쉽게 배울 수 있도록 각색하고 한국어로 번역한 내용이며, 본글에 대한 모든 권리도 스탠포드 대학교가 가지고 있습니다. CS106A 수업에 사용되는 교재인 Karel the Robot Learns Java와 The Art & Science of Java를 작성해주신 Eric Roberts 교수님과 CS106A 수업을 가르치고 계시며 해외로 수업 내용 반출을 허락해주신 Mehran Sahami 교수님 그리고 Marty Stepp 교수님께 감사드립니다.


스탠포드 대학교에서 컴퓨터 과학을 전공중인 박준원이라고 합니다. 질문은 junwonpk@stanford.edu로 보내주시면 24시간 내로 답변 드리겠습니다. 설명을 따라했는데도 똑같이 작동하지 않거나 설명에 이해하기 어려운 부분이 있으면 주저하지 말고 질문 보내주세요! ^^

5 Comments
댓글쓰기 폼