티스토리 뷰

  요새 기술 트렌드가 인공지능이라고 많이 표현하고, 회사나 학교에서도 이를 응용한 교육이나 기술을 많이 적용하려고 노력하는 것 같다. 그런데 개인적인 생각으로는 이런 기술도 기본적인 소양이 뒷받침되어야 진정으로 이해하고 나아갈 수 있지 않을까 하는 생각을 많이 해본다. 예를 들어서 행렬연산이나 벡터의 개념없이는 신경망이 연산하고, 학습되는 과정을 이해하기 어려울 것이고, 기본 자료구조나 알고리즘에 대한 이해없이는 그런 동작 과정을 개선시키거나, 이해하는 것 자체가 벅찰 것이다. 사실 나같은 경우도 현업에서 인공지능 관련 기술을 실제 환경에 적용하는 일을 하고 있긴 하지만, 그런 과정이 쉽지 않을 뿐더러 너무나 논리적으로 설명하기 어려운 부분이 많다는 것을 많이 느낀다. 그래서 그냥 시간나는 틈틈히 알고리즘 공부나 수학공부를 해보고 있다. 이번에 소개할 책은 알고리즘을 조금 손쉽고 이해하기 쉽게 공부할 수 있는 방법을 소개한 책이다.

그림 1. 게임으로 익히는 코딩 알고리즘

 보통 게임이라고 하면, 휴식시간에 즐기면서 스트레스를 푸는 용도로 생각이 많이 들겠지만, 최근에는 게임을 교육에 활용한 케이스들이 많이 소개되고 있다. 이 책 역시 게임을 교육에 활용한 케이스 중 하나인데, 그 중 알고리즘을 직접 구현해보면서 게임을 즐기는 형식으로 되어 있다. 책에서 베이스로 삼고 있는 사이트는 codinGame이라는 사이트이다.

 

Coding Games and Programming Challenges to Code Better

CodinGame is a challenge-based training platform for programmers where you can improve your coding skills with fun exercises (25+ languages supported)

www.codingame.com

 사실 나도 처음 이 사이트를 접하면서도 "에이, 게임으로 알고리즘을 배우는 것에도 한계가 있겠지.." 하는 회의감이 들었었다. 물론 많은 사람들이 실제로 게임을 학습에 적용해본 케이스를 많이 봐 왔지만, 실제로 게임의 질이나 학습의 질이나 어느 하나도 충실하지 못해 몰입감을 제공하지 못한 경우를 주로 접했었던 것 같다. 그런데 이 사이트는 뭔가 조금 달랐다. 아래의 영상은 실제 codinGame에서 학습을 하면서 게임을 하는 예시이다.

영상 1. What is CodinGame?

 영상을 보면 알겠지만 게임 내의 캐릭터를 실제 코드를 통해서 제어할 수 있고, 실제 코딩을 통해 게임에서 이기는 것을 목적으로 하고 있다. 그리고 각 학습자별 레벨과 퀘스트라는 개념이 들어가 있어서 뭔가 학습을 마치고 게임에서 이길때마다 경험치를 얻고 레벨 업 하는 과정을 직접 느낄 수 있다. 이를 통해서 학습자에게 성취감을 부여해준다. 무엇보다도 구현되어 있는 게임과 알고리즘 구현과의 연관성이 충실해서 실제 구현하면서 뭔가 배울 수 있겠다는, 앞에서 소개한 표현대로라면 몰입감이 충실히 제공되는 것으로 느껴졌다.

 위에서 소개한 책은 바로 이 사이트에서 제공되는 게임 중 Queue, Stack, Hash와 같은 자료구조를 다루면서 배울 수 있는 몇가지 게임과 Search 방식과 Dynamic Programming을 다루는 몇가지 게임들을 직접 해설을 통해서 풀어보는 것을 내용으로 다루고 있다. 그래서 우리가 보통 알고리즘을 공부할 때 주로 쓰는 책인 "Introduction to Algorithm" (Cormen)처럼 정형화된 주제를 다루는 것이 아니라, 게임의 환경을 분석하고, 필요한 논리가 어떤 것인지를 소개하면서 내용을 전개해가고 있다. 어떻게 보면 실전형 알고리즘 학습서랄까.. 오히려 암기식으로 진행되는 것보다도 이렇게 실제로 내용을 경험해보면서 학습할 수 있는 요소가 많아서 좋았던 것 같다.

 책에서 알고리즘을 소개할 때 사용한 언어는 Python이기는 하나, Python 자체가 설명하기 쉬운 Pseudocode만큼이나 쉽게 써져 있어, 딱히 언어에 대한 종속성은 없어보인다. 그리고 아무래도 문제 단위로 설명했을때 부족하다고 느낄 수 있을만한 원론적인 이론 설명같은 부분은 그림과 함께 설명되어 있어, 처음 알고리즘 공부를 하는 개발자에 대해서도 어느정도 포커스를 맞춘 것으로 보인다. 그래서 왠지 조금 어렵다고 느낄만한 문제에 대해서는 이런 그림들을 통해서 조금 이해하기 쉬웠던 부분이 있었다.

그림 2. 그림과 함께 설명된 알고리즘 구현 방법

 다만, 앞에서 소개한 것과 같이 문제 유형별로 설명이 제시되어 있어, 딱 설명할 수 있는 범주가 한정적이라는 부분은 조금 걸릴 수 있다. 아무래도 문제에 맞는 해결방법을 제시하기 때문에 딱 거기에 맞는 내용만 소개되고, 더 고급 테크닉을 찾는 사람한테는 조금 안맞을 수 있을거라 생각한다.(물론 그렇다고 이 책에 소개된 내용들이 너무 쉽거나 간단히 넘길만한 부분이 많다는 것은 아니다...) 그런 사람한테는 이 책에 굳이 한정짓지 말고, codinGame내의 경쟁모드에서 제공하는 문제나 백준도장같은 온라인 코딩테스트 사이트에서 제공하는 문제를 통해서 더 경험을 쌓는게 좋은 방법일 수 있다.

 그래도 개인적으로도 이 책에서 소개해나가는 방식은 현업에서 실제로 일하는 방식과 많이 유사하다고 생각한다. 게임을 현업과 1대1로 매칭해서 보기는 어렵겠지만, 게임만큼이나 현업에서도 어떤 문제에 부딪쳤을 때, 이를 해결하는데 필요한 이론들을 쭉 나열해보면서, 해결하기 위해 노력한다. 이런 경험을 codinGame에서 제공해주고, 이 책은 이런 경험을 익숙하게끔 가이드를 제시하고 있다. 어떻게보면 책의 분량도 많지 않아서, 과연 이 책으로도 알고리즘을 배울 수 있을까하는 의구심이 들 수 있겠지만, 막상 읽다보면 효율적으로 전반적인 게임을 통한 학습 방법 소개나 배경 이론에 대한 설명이 되어 있기에 해당 공부를 하는 사람들한테는 도움이 될 거라 생각한다.

< 해당 포스트에서 소개하는 "게임으로 익히는 코딩 알고리즘"는 한빛미디어로부터 지원을 받았고, 이에 대한 서평을 쓴 것임을 알려드립니다.> 

 
Introduction to Algorithms
토머스 코멘,찰스 레이서손,로날드 리베스트,클리포드 스타인 공저/문병로,심규석,이충세 공역
 
게임으로 익히는 코딩 알고리즘
김영기 저
 
파이썬 자료구조와 알고리즘
미아 스타인 저/최길우 역
 
예스24 | 애드온2

 

댓글