프로그래밍 수학 - peulogeulaeming suhag



코딩열풍이 불고 있다. 2015교육과정으로 코딩교육이 초·중·고 정규 과목으로 의무화 되면서 초등학생들은 물론 학부모들까지 코딩을 배우고 있다. 4차산업혁명 시대로 들어서면서 코딩의 중요성은 어린아이들까지도 알고 있다. AR, VR, 드론에 관심 있는 아이들은 굳이 누가 가르쳐주지 않아도 독학으로 코딩을 공부할 정도다. 이렇게 인기 있는 코딩이 수학과 밀접한 연관이 있다는 사실을 알고 있는가? 그렇다. 결국 코딩도 수학 손바닥 위이다.

코딩 하는데 있어 가장 중요한 건 바로 알고리즘 구성이다. 알고리즘이란 주어진 문제를 해결하기 위해 필요한 절차, 방법, 명령어들을 모아 넣은 것이다. 예를 들면 우상이라는 아이에게 '오늘 밥 먹었어?'라고 물었을 때 우상이는 밥을 먹었든, 짜장면을 먹었든, 피자를 먹었든 '응!'이라고 대답할 것이다. 하지만 컴퓨터는 같은 질문을 받을 때 쌀밥을 먹은 경우가 아닌 이상 '아니!'라고 대답한다. 이렇게 컴퓨터는 사람처럼 말 속에 포함되어 있는 의미를 이해하지 못하기 때문에 정확하게 하나하나 다 기입해줘야 한다. 밥을 먹었을 땐 어떻게 대답하고, 짜장면을 먹었을 땐 어떻게 대답하고, 피자를 먹었을 땐 어떻게 대답하고… 이 과정을 알고리즘이라 한다.

알고리즘 구성에 있어 가장 중요한 건 바로 아이디어와 논리력이다. 아이디어는 새로운 알고리즘을 만들어 내는데 유용하고, 논리력은 알고리즘을 이해하고 분석하는데 유용하다. 이 중 논리력을 키우는데 가장 효과적인 과목이 수학이다.

다른 과목들과 달리 수학은 단순 암기만으로 문제를 해결할 수가 없다. 공식을 증명하고, 그 공식을 활용하여 문제를 단계별로 풀어내야 하는데 이 과정에서 적용되는 것이 바로 논리력이다. 알고리즘도 마찬가지다. 수학과 같이 어떠한 값을 넣었을 때 결과 값이 나오기까지의 풀이과정을 적고 이해해야 하는데 그 과정에서 쓰이는 것이 논리력이다.

데이터 분류 작업을 예로 들어보자. 수많은 사람들의 데이터가 있는데 이 중 10대는 학생, 20대는 청춘, 30대는 성숙, 40대는 전문가, 50대는 연륜, 60대는 노년으로 분류한다고 가정해보자. 그럼 논리력이 부족한 사람은 알고리즘을 이렇게 구성할 것이다. 나이가 10살 이상 19살 이하는 학생, 20살 이상 29살 이하는 청춘, 30살 이상 39살 이하는 성숙…과 같이 굉장히 긴 알고리즘이 형성된다. 하지만 논리력이 뛰어난 사람이라면 위 알고리즘에 수학 공식을 대입할 것이다. 나이를 10으로 나눴을 때 몫이 1이면 학생, 2이면 청춘, 3이면 성숙… 이렇게 간단하게 표기할 수 있도록 구성했을 것이다. 물론 둘 다 결과 값은 똑같이 도출된다. 하지만 어떤 방법이 더 효율적일지는 굳이 말하지 않아도 알 것이다.