FLOW 1일차 일지 (160406)

3개월 동안 준비해 가며 창설한 우리 학교의 프로그래밍 동아리, ‘FLOW’가 2016년 4월 6일 오늘 첫 오리엔테이션 모임을 갖게 되었다. 동아리에서 프로그래밍 언어를 스터디하기 위해 올해 1월부터 인하대학교에서 고교-대학 연계 컴퓨터과학 수업을 들음과 동시에 윤성우의 열혈 C 프로그래밍으로 C언어를 공부했고, 지난 3월에는 동아리 홍보 및 가입 신청 사이트를 만들기 위해 그동안 야매로 익혔던 HTML과 CSS를 기초부터 다시 공부하고, PHP와 MariaDB도 잠깐 맛볼 수 있었던 기회가 되었다. (마감이 다 되어 PHP 보안 부분을 차마 공부하지 못해 결국 가입 양식은 Google Forms로 대체하였긴 하지만 말이다.) 덤으로 교내에서 동아리를 홍보하기 위해 10가지 버전의 패러디 동아리 포스터를 제작하고 킨코스에서 포스터를 출력해 학교 동아리 홍보 게시판에 붙여 많은 친구들의 뜨거운 관심을 받기도 하였다.

이 과정이 불과 3개월만에 이루어졌다는 것이 아직도 믿기지 않아 어안이 벙벙하다. 2011년에 트위터 가입을 계기로 개발과 디자인에 관심을 갖게된 후 그 관심이 지금까지 이어져오고 있지만, 그동안 프로그래밍 언어를 공부하지는 못했었다. 기껏해야 stleam.com 사이트를 설계하고, 플레인 카카오톡 테마를 버전 2까지 디자인해서 배포했던 정도였다. 중학교 생활 동안 온라인 커뮤니티에서 자잘한 활동들을 많이 해왔지만, 지금 와서 나열해보니 딱히 굵직한 활동이라 할 수 있는 것들은 몇 개 밖에 되지 않았다. (최근 이 문제를 깨달은 나는 지금까지의 작업물들을 보여주는 포트폴리오 사이트를 구상하고 있다.) 그러던 중 나는 고등학교에 입학하게 되었고, 분위기에 휩쓸려 고1 2학기에 찾아온 슬럼프는 내가 부모님의 반대로 가지 못했던 모 특성화고의 재진학을 고려하게 했다. 하지만 이번에도 부모님의 반대를 꺾을 수 없었다. 재진학을 단념한 순간, 한 생각이 내 머리를 스쳐 지나갔다. 그곳에 가지 못한다면, 그곳의 커리큘럼을 따라하여 내가 해내면 되는 것이다. 부족한 환경의 학교를 탓할 게 아니라, 내가 주도적으로 학교의 환경을 바꿔나가면 된다. 그렇게 해서 우리 학교에 프로그래밍 동아리를 창설하기로 마음먹고, 일정이 끝난 12월 말부터 동아리를 창설하기 위한 준비를 차근차근 해 나갔다.

3월 17일부터 4월 1일까지 flow.or.kr을 통해 가입 신청을 받은 결과, 총 11명의 학생들이 가입을 신청했다. 이 중 8명이 컴퓨터공학과 진학을, 1명이 전자공학과 진학을 목표로 하고 있었고, 남은 2명은 문과인데 컴퓨터에 관심이 많아 지원했다고 하였다. 또 11명 중 4명이 간단한 프로그래밍 언어를 구사할 수 있었고, 나머지 다른 학생들은 프로그래밍 언어를 배우고자 가입한 상태였다. 이러한 상황을 고려한 결과, C와 파이썬 중 간결하고 직관적인 파이썬을 같이 스터디하는 방향으로 가야겠다는 결정을 내리고 파이썬에 관련된 자료를 준비해 갔다.

7교시 자율동아리 시간에 첫 만남을 갖고 간단한 OT를 진행한 후, 혹시나 싶어 아이들에게 C와 파이썬을 간단히 소개하고 앞으로 어떤 언어를 스터디하면 좋을지 의견을 물어보았다. C언어가 파이썬에 비해 어렵다고 소개했기 때문에 파이썬을 스터디하자는 의견이 과반수를 넘지 않을까 하고 예상했지만, 의외로 아이들 모두 C언어를 만장일치로 선택했다. 아무래도 C를 배우고 나면 스위프트나 자바를 배워 스마트폰 앱을 만들 수 있다고 말한 영향이 큰 것 같았다. 이는 아이들의 열정이 높다는 반증이기도 했다.

혹시나 해서 윤성우의 열혈 C 프로그래밍을 챙겨가긴 했지만, 책을 복사할 방도가 없어 첫날은 최호성의 C 프로그래밍 유튜브 강의를 보기로 했다. 이 강의는 C언어를 문법부터 소개하지 않고 컴퓨터의 기본 구조의 이해를 바탕으로 시작하기 때문에 프로그래밍 언어를 이해하는 데에 좋은 강의라고 생각한다. 실제로 나도 이 강의를 통해 기본적인 메모리 구조 등에 대해서 알 수 있었고 이후 가속도가 붙게 되어 C언어를 조금 더 널찍하게 공부할 수 있었다. 첫 강의는 컴퓨터와 이진법에 관한 내용이었다. 컴퓨터가 0과 1의 신호로 데이터를 처리한다는 말은 익히 들어 왔지만, 대체 어떻게 0과 1만으로 그 복잡한 데이터를 처리할 수 있는지 감을 잡기는 쉽지 않다. 하지만 생명과학 시간에 DNA 유전 암호에 대해 배웠던 사람이라면 그 원리를 간단히 이해할 수 있다. 컴퓨터의 이진법은 말하자면 DNA의 트리플렛 코드와 같다. DNA가 A, T, G, C 4개의 염기만으로 많은 조합의 단백질을 합성하듯이, 컴퓨터의 이진 데이터도 0과 1의 비트가 모여 하나의 바이트를 형성하고 이 바이트들이 모여 우리가 아는 메가바이트, 기가바이트의 데이터가 되는 것이다. 그렇다면 컴퓨터는 왜 십진법이 아닌 이진법을 사용할까? 이는 컴퓨터가 전기 회로를 기반으로 하기 때문이다. 이와 비슷한 사례는 플래시 메모리의 셀 레벨에서 찾을 수 있다. 한 셀에 1비트만을 담는 SLC 메모리와는 달리, 한 셀에 3비트를 담는 TLC는 데이터를 읽고 쓰는 성능 면이나 보존하는 안정성 면에서 모두 취약하다. 전기 회로에서도 마찬가지이다. 전기 회로에서 이진법을 사용해 전류가 흐르는가 흐르지 않는가를 구분하는 일은 쉽다. 하지만 십진법을 사용해 0V부터 10V까지 전압의 단계로 신호를 구분하고자 하는 일은 오래 걸리고 데이터의 안정성 면에서도 취약할 것이다. 바로 이러한 이유로 컴퓨터는 이진법을 사용하는 것이다.

강의를 재생하는 동안 아이들이 열심히 강의을 들어 주어서 뿌듯했다. 하지만 실습을 하지 못해 무언가 눈에 보이는 결과물을 내지 못한 것에 대해서는 안타까워 하는 듯 했다. 모임은 매주 갖는 것으로 하고, 다음 회차 때는 내가 직접 프로그래밍을 가르쳐줌과 동시에 실습을 하면서 수업하기로 하였다.

이번에 처음으로 수업을 하면서 나의 부족한 점을 느낄 수 있었다. 혹시나 싶어 대본을 준비해 가긴 했지만, 앞에 나가서 말하다 보면 갑자기 머리 속이 하얘지면서 다음에 말할 것이 생각이 나지 않아 수업이 매끄럽게 진행되지 않았다. 아무래도 앞에 나가서 자유 주제로 무언가에 대해 말해 본 경험이 적어서 그런 듯 한데, 이 문제는 온라인에서 강의를 보고 혼자 집에서 강연을 따라해 가며 연습해 가는 방법으로 고쳐나가야 할 듯 하다.