Public Notebook/Syphon의 코딩모험

코딩모험[3] // 고등학교 - 하라는 공부는 안하고

Syphon 2022. 12. 2. 16:25

Syphon의 코딩모험 - 목차


Python을 접한 지 약 반년이 지났다.

그새 객체지향을 배워서, 예비 고1 방학 동안 전작과는 확장성과 기능 측면에서 비교도 안되게 발전한 Adventureland 2를 완성.. 하지 못하고 게임 엔진만 다 만들어두었다. (퍼즐 게임이었던 전작과는 달리 RPG 느낌의 설계였고, 자동으로 움직이는 적, 속성을 가진 무기 등을 구현했었다.)

고등학교에 입학하자마자 SOMAD(현 PATCH)라는 컴퓨터 동아리에 가입했다. 당시 제출했던 지원서를 보면 2016년의 내가 뭘 할 수 있(다고 생각했)었는지 살펴볼 수 있다.

SOMAD 지원서(맞춤법이 거슬린다..)

입학하던 해 2016년의 3월에는 AlphaGo와 이세돌의 대국이 있었다.

뭔가 상당히 흥미로워보여서, 게임 AI를 어떻게 만드는지 검색해보았고, minimax 알고리즘을 발견한다. 읽어보니까 뭔가 내가 만들 수 있을 것 같았다.

그래서 일주일을 불태워서 오목/오셀로 AI인 Silent Storm을 만들었다. (나도 될 줄은 몰랐다 ㅋㅋ)

정보올림피아드 공모전에서의 Silent Storm 발표 화면, 은상 메달


이후 약 1년 반 동안 Silent Storm을 최적화/업그레이드하게 되고, 2017년의 정보올림피아드 공모전에 출품하여 은상이라는 예상 밖의 좋은 결과를 얻는다. 또, 성능 개선 시도의 일환으로 C/C++를 처음으로 시도해본다.

동시에 2016년, 고3 6월 국어 모의고사 지문에서 인공신경망을 접하고, 무턱대고 구현해보기로 결심한다.

2017학년도 6월 고3 모의고사 국어영역, 인공신경망 지문

그런데 알고보니 지문에서 '학습 단계', 즉 역전파 알고리즘을 엄청 간단하게 설명해놓은 것이었다. 직접 구현을 해보려고 리서치를 해 보니 경사하강법과 편미분에 대한 이해가 필요했다. 하지만 포기할 수는 없었기에 관련된 글을 출력해서 학교의 아침 독서 시간에 곱씹으며 읽어나갔다. 처음 보는 수학에 겁먹었었는데, 생각보다는 어려운 개념이 아니었어서 결국 외부 라이브러리를 하나도 쓰지 않은 나만의 신경망 모듈을 작성하는데에 성공했다.

2학년이 되어서는 이렇게 만들어놓은 신경망을 이용해 소논문 작성을 진행한다. 지금 보면 별 볼 일 없는 내용이긴 한데, 당시로서는 시간도 많이 투자했고, 노력도 많이 들인 결과물이었다(또 내가 직접 작성한 모듈을 쓰는것인지라 GPU 가속따위는 없다 ㅋㅋㅋㅋ). 학교의 선생님들은 '오.. 무슨 소리인지는 모르겠지만 잘한 것 같군..!'의 반응이었다. 대표로 후배들에게 연구 결과를 발표하는 기회 또한 우리 팀에게 주어졌었다.

많은 시간과 노력을 쏟았던.. 매우 간단한 연구.
소논문에 첨부된 그림 중 발췌

이 외에도 고등학교 시절에는 궁금한 것, 만들고 싶은 것, 불편한 것이 있으면 코딩부터 했었다.

책 발표 행사에서는 물리 책을 읽고 간단한 물리 시뮬레이터를 구현해 발표하기도 했고, 피젯 스피너 관련 신기한 현상을 관찰했을 때에는 라즈베리파이를 동원해 궁금증을 해결하기도 했다. 엄마는 하라는 공부는 안하고 컴퓨터를 하는 나를 못마땅하게 생각하기도 했지만, 모의고사 전날만큼은 공부 말고 코딩을 해야 성적이 잘 나오더라 ㅋㅋㅋㅋㅋ

결국 입시에 도움 하나도 안되는 코딩이었지만, 이 때 이것이라도 안했더라면 대학을 가서 더 심하게 탈탈탈 털렸을 것이다.

고등학생때의 나는 지금 대학교 3학년인 나보다 지식은 부족할지언정, 코딩 실력 자체만으로 보면 나쁘지 않은 프로그래머였던 것 같다.

# 중간점검 - [제어문 - 자료형 - 함수 - 객체지향], [기초적인 딥러닝 개념]을 배웠다.


다음 글: 4. 대학교 - 하라는 코딩은 안하고