Part.1 왜 지금은 이공계의 시대인가
1-4. 소프트웨어(SW) 교육이 중요하다
세계 금융가를 움직이는 월가의 무게중심도 소프트웨어로 이동한 지 오래다. 컴퓨터 프로그램으로 주식 시장을 예측하고 자동으로 투자하는 ‘알고리즘 트레이딩’ 분야는 이미 미국 주식거래량의 절반 이상을 차지한다. 프로그램을 얼마나 효율적이고 안정적으로 짜느냐가 투자수익을 결정짓는 핵심 조건이 됐다.
이 분야에서 활약하고 있는 한국인 개발자도 있다. 연세대 컴퓨터과학과 출신인 구종만 씨는 2009년부터 미국의 투자기업에서 알고리즘 트레이딩 프로그램 개발자로 있다. 소프트웨어 회사인 톱코더가 매년 개최하는 소프트웨어 개발 토너먼트인 ‘톱코더 오픈(Topcoder Open)’에 2007년 출전해 준우승을 차지한 게 계기가 됐다. 이 대회에서는 문제를 던진 뒤 코딩을 통해 해결하도록 한다.
구 씨는 e메일 인터뷰에서 “프로그램을 개발하기 위해서는 금융지식보다는 소프트웨어를 통한 문제 해결 능력이 더 중요하다”면서 “최근 금융권이 점점 자동화되는 추세여서 월가에도 소프트웨어 개발자가 계속 늘고 있다”고 말했다.
이런 분위기는 더욱 가속화되고 있다. 구 씨는 “미국에서는 전화로만 이뤄지던 국채 거래에 소프트웨어를 도입하고 있다”면서 “자산 분배와 관리를 소프트웨어로 처리해주는 벤처 기업도 하나둘 생겨나고 있다”고 말했다.
전문가들은 소프트웨어가 앞으로 사회 모든 분야로 전파될 것으로 전망한다. 이미 지하철이나 은행, 자동차, 심지어 전기밥솥조차도 소프트웨어로 움직이고 있다.
[출처 : 동아사이언스 2015.4.10 로봇공학도, 월가도 소프트웨어가 이끈다 中 일부]
최근 소프트웨어(SW) 교육에 대한 중요성이 강조되고 있습니다.
금융 분야 뿐만 아니라, 제조업, 의료업, 첨단산업에서 부터 예술에 이르기까지, 소프트웨어는 분야를 막론하고 중요한 역량으로 등장하고 있습니다. 한 예술가가 '온도에 따라 춤을 추는 꽃'을 만들고 싶다면, 소프트웨어에 기반한 개발을 하지 않고서는 만들 수 없습니다. 외부의 정보를 받아들이고 상황에 따라 다양한 동작을 수행하도록 설계하고자 합니다면, 반드시 스프트웨어를 다룰 수 있어야 하기 때문입니다.
과거 청소년을 대상으로 한 소프트웨어(SW) 교육은 코딩(coding) 중심 교육이었습니다. 그러다 보니 매우 어려운 프로그래밍 언어를 배워야만 했지요. 그러나, 소프트웨어 교육에서 '코딩'은 하나의 수단일 뿐이지 가장 중요한 부분은 아니라는 것이 최근의 여론입니다.
코딩을 잘 하느냐의 문제보다도 결국 입력과 출력을 어떻게 조합하여 어떤 동작을 만들어낼지의 문제 해결능력이 더 중요하다고 할 수 있습니다.
SW교육에 대한 이해는 <입력부 - 메인보드 - 출력부>를 이해하는 것에서 출발합니다. 입력부는 메인보드에 정보를 제공해주는 부분으로 이곳에는 각종 센서나 정보 제공 장치들이 연결됩니다. 센서는 용도와 기능에 따라 수십, 수백 가지가 될 수 있습니다. 여러 개의 센서를 동시에 연결할 수도 있지요. 센서들이 받아들여진 정보는 디지털 정보로 변경되거나 그대로 메인보드로 전달됩니다. 메인보드는 이 정보를 조건에 맞게 분류하고 처리하여, 그 결과를 출력부를 통해 명령을 내립니다. 출력부에는 각종 구동장치, 표시장치 등이 연결되는데, 입력되는 정보에 따라 원하는 목적의 동작을 하도록 조작할 수 있습니다. 이때 목적에 맞게 동작하도록 메인보드에 조건이나 제어 동작 등의 명령어를 넣고 프로그래밍을 하는 것을 '코딩'이라고 합니다.
[코딩이란 무엇인가]
목적에 맞게 컴퓨터가 동작하도록 메인보드에 조건이나 제어 동작 등의 명령어를 넣고 프로그래밍을 하는 것을 '코딩'이라고 합니다.
입력부와 출력부에 연결되는 다양한 장치들을 조합하고 처리하도록 하여 원하는 동작과 결과물이 나오도록 알고리즘을 구성하거나 아이디어를 내는 것이 매우 중요합니다.
[코딩, 소프트웨어를 활용한 발명품, 제품 개발 사례]
우산의 예를 들어보겠습니다. '날씨를 알려주는 우산'이라는 아이디어를 만들고 싶다고 합시다. 우산이 사물인터넷(IoT)이 되도록 만들어야 하겠죠? 스스로 인터넷에서 날씨 정보를 읽어오도록 한 후, 비가 올 확률이 70%를 넘기면, 우산 스스로 우산을 가지고 나가라는 신호를 보내도록 만들 수 있습니다. 다른 방법으로, 우산에 습도 센서를 연결하여, 대기중의 습도를 측정하도록 하고, 그 값이 70%를 넘었을 때 LED에 빛이 들어오도록 만들 수 있습니다. 습도 조건에 따라 빛의 색깔이나 밝기를 다르게 할 수도 있겠지요. 이렇게 작동하는 우산은 스스로 입력된 정보를 분류하고, 처리하며, 판단하게 됩니다. 이런 서비스 제품을 사용하게 된다면, 비오는 날 우산을 가져가지 않는 실수를 하지 않게 되겠죠.
결국 소프트웨어 교육에서 얼마나 기계적인 코딩을 잘하느냐가 중요한 것이 아니라, 각종 센서와 장치의 원리, 사용법 등을 알고 실생활에 어떻게 적용할 것인지 문제를 발견하는 것이 더욱 중요한 일이라고 할 수 있습니다. 그래서 최근에는 많은 사람들이 코딩을 하지 않으면서도 소프트웨어를 재미있게 배울 수 있는 방법을 찾고 있습니다. 대학생, 일반인도 어려워하는 코딩을 굳이 어린 나이부터 억지로 배울 필요는 없습니다. 뛰어놀 시간도 부족하고 다른 공부할 것도 많은 데 말입니다.
[소프트웨어 교육 도구, 코딩 교육 툴]
소프트웨어 교육으로 많이 다루어지는 한 가지 방법이 '아두이노'입니다. 그런데, 복잡한 C언어 기반의 코딩 과정을 포함하고 있기 때문에 공학자가 아닌 대학생들조차도 많이 어려워 합니다. 청소년들이 다루기에는 무리라고 할 수 있습니다. 최근에는 코딩 과정 없이 사용하는 다양한 소프트웨어 교육 도구가 개발되어 있습니다. 몇 가지를 소개해드리겠습니다.
1. 스크래치(Scratch)
MIT 미디어랩에서 개발한 것으로, 까다로운 코딩 과정 없이 그래픽을 통해 컴퓨터 프로그래밍에 관한 경험을 쌓게 하기 위한 목적으로 설계된 교육용 프로그래밍 언어 및 환경이다. 스퀵(Squeak) 을 기반으로 스몰토크(Smalltalk) 라는 언어로 작성되었다. 코딩을 주로하는 C++, C#, 비주얼 베이직 등과 달리 블록을 끌어당겨 탑을 쌓는 방식으로 프로그래밍을 한다. 그래서 프로그래밍을 처음 해보는 입문자에게 좋은 프로그래밍 언어다. 초등학생 및 중학생의 소프트웨어 기초 교육에 매우 적합하다. 커뮤니티를 통해 전 세계 사람들의 작품을 감상하고 공유할 수 있다.
(관련 웹사이트 : https://scratch.mit.edu/, 국내 스크래치 커뮤니티 : http://cafe.naver.com/onell0)
2. 아두이노(Ardino)
아두이노(Arduino)는 오픈소스를 기반으로 한 단일 보드마이크로컨트롤러로 완성 된 보드(상품)와 관련 개발 도구 및 환경을 말한다. 아두이노는 다수의 스위치나 센서로부터 값을 받아들여, LED나 모터와 같은 외부 전자 장치들을 통제함으로써 환경과 상호작용이 가능한 물건을 만들어 낼 수 있다. 이러한 방식을 임베디드 시스템이라고 하는데, 코딩 뿐만 아니라, 작동하는 발명품을 제작할 수 있는 장점이 있다. 하지만 코딩 과정을 포함하기 때문에 다소 어렵지만, 전세계적으로 대중화되어 있는 개발도구이다. 기본적인 소프트웨어 교육을 받은 중, 상급자 학생에게 추천한다.
3. 소프트웨어 관련 웹사이트
(1) 국내에서 개발한 소프트웨어 교육도구 "엔트리"
(2) 경인교대가 만든 소프트웨어 교육 컨텐츠 "주니어 소프트웨어"
(3) 미래창조과학부에서 운영하는 SW 중심 사회
학생이 참여가능한 소프트웨어 관련 창의캠프 및 공모전 정보를 제공하며, 각종 지식 및 동향을 접할 수 있다.
(4) 마이크로소프트(MS) 사에서 제공하는 소프트웨어 교육
(5) 인텔 사에서 제공하는 소프트웨어 교육
https://engage.intel.com/community/korea
(6) CS UNPLUGGED (UC대학과 구글이 후원하는 소프트웨어 교육)
(7) 어린이를 위한 소프트웨어교육 코드 "스튜디오"
(8) 오픈소스 교육사이트
http://opensource.kofac.re.kr/index.do
2015년 소프트웨어 교육을 확대하겠다는 정부의 정책 발표 이후, 미래창조과학부, 네이버를 비롯한 기관과 기업에서 어떻게 하면 소프트웨어 교육을 쉽게 할 수 있을지 고민하기 시작했습니다. 대학생들조차도 '코딩'을 어려워하다 보니, '아두이노'나 '라즈베이파이'도 좋은 대안이 되지 못하고 있습니다. 무작정 프로그래밍 언어를 조기 학습하도록 하여 힘들게 하는 것보다는, 문제를 발견하고 해결하는 과정을 통해 원하는 발명품을 구현하도록 함으로써 개발과정의 성취감을 맞보게 하는 것이 무엇보다 중요합니다.
* '아두이노'와 '라즈베리파이'의 차이점
https://www.youtube.com/watch?v=81i_K0cF3q4
2018년에 도입되는 새 교육과정에 소프트웨어 교육을 의무화한다고 합니다. 아마도 소프트웨어 교과서를 곧 만들기 시작할 것 같습니다. 교육과정에 의무로 도입된다니, 소프트웨어가 몰고 올 세상은 엄청난 부가가치를 담고 있는 것 같습니다.
모든 청소년들이 코딩도 잘하고 아두이노, 스크래치 같은 것도 잘 하면 얼마나 좋겠습니까? SW교육이 강조되고 있다고 무작정 덤벼들면 오히려 더 큰 손해가 될 수도 있습니다. 우선 가볍게 접할 수 있는 체험의 기회를 만들어 보기 바랍니다. 그런 다음 관심이 더욱 커진다면, 2~3일 정도의 방학 캠프 프로그램을 다녀오는 것도 좋은 방법입니다. 관심이 더더욱 커졌다면 보다 전문적인 교육을 받아보는 쪽으로 경험을 확장해 나가면 좋습니다.
정리해서 말씀드리자면, 소프트웨어 교육은 코딩이나 프로그래밍을 교육하는 것이 아니라 문제에 관한 교육입니다. 문제를 발견하고, 해결 가능한 아이디어를 제시하고, 그것을 이용해 그 문제를 해결할 새로운 발명품을 창조하는 교육이라고 바꿔 말할 수 있습니다. 소프트웨어 교육은 기존에 없던 전혀 새로운 것이 아니라는 점을 강조하고 싶습니다. 수학, 과학, 기술, 발명 등과 매우 관련성이 높은 것이므로 충분한 교과 학습을 통해 기초를 닦는 것이 중요합니다. 그런 기초 위에 소프트웨어 역량을 쌓은다면, 다가올 미래에 막강한 융합인재로 성장할 것입니다.
'여기는 과학실 > 과학기술 진로 이야기' 카테고리의 다른 글
1-6. 수학을 못하면 문과? 수학을 잘하면 이과? (0) | 2021.04.29 |
---|---|
1-5. 미래사회의 직업변화에 관심을 가져라 (0) | 2021.04.28 |
1-3. 과학소양은 미래 인재의 필수 능력이다 (0) | 2021.04.28 |
1-2. 이공계란 무엇인가? (0) | 2021.04.28 |
1-1. 이공계 기피현상과 문돌이의 눈물 (0) | 2021.04.28 |