제가 가끔 학생들의 문의를 받는 것이 "정보영재가 되기 위해서 어떻게 준비를 해야 되나요?" 란 질문을 받을때가 있습니다.
아래 글은 제 주관적인 생각임을 미리 말씀드립니다.^^
이러한 질문을 받을때 저는 첫번째로 수학을 꼽습니다.
컴퓨터 과학에서 프로그램의 설계는 수학적인 기반에서 이루어 지는 경우가 많습니다.
수학을 열심히 하라고 하니까 한 학생이 이렇게 되묻습니다.
"쌤 수학을 굳이 잘 할 필요 있나요? 그냥 방법만 알면 코딩으로 데이터 입력해서 계산해서 사용하면 되지 않나요?"
맞는것 같습니다.^^
하지만 잘 생각해 보면 방법을 알고 있다는 것이 그 원리를 알고 있다는 것입니다.
원리를 알고만 있다고 해서 사용하는 연습을 하지 않으면 그 원리도 금방 잊혀 지겠죠~
그 원리를 연습하다 보면 사용법에 익숙해 지면서 자신의 것이 되겠죠~
그러다 보면 수학도 잘하게 될거구요^^
그래서 정보영재는 수학과 밀접한 관계가 있습니다.
두번째는 문해력를 꼽습니다.
컴퓨터과학에서는 실제 생활에서 필요한 프로그램을 만들때 실 생활의 규칙을 찾아내서 프로그램으로 구현하는 것에 목표를 둘 수 있습니다.
고객이 어떤 동작을 하는 프로그램을 만들고 싶다고 요청을 합니다. 하지만 그것을 잘못 이해한다고 하면 프로그램을 모두 구현한 다음에 고객이 사용하면서 원하는 프로그램이 아니라고 고개를 저어 버린다면 어떤경우 설계부터 다시 시작해야 하는 경우가 있습니다.
이렇듯이 고객과의 대화를 잘 하기 위해서는 고객의 요구하는 문장을 잘 이해해야 합니다.
또한 정보영재들의 대회인 정보올림피아드 문제를 보면 문장에서 요구하는 결론을 도출할 줄 알아야 프로그램을 설계하고 구현할 수 있습니다.
그러기 위해서는 우리는 독서를 통해서 많은 문장을 만나고 그것이 의미하는 바를 깨우치는 노력이 필요합니다.
세번째는 알고리즘 을 꼽습니다.
어떤 결과를 도출하는데 요즘에 아무리 사양 좋은 컴퓨터가 나온다고 해도 메모리 점유율이 높거나 속도가 많이 느리다고 하면 많은 데이터를 처리하는데 문제가 발생을 합니다.
이럴때 다양한 알고리즘을 통해서 빠른 처리를 할 수 있는 최적의 알고리즘으로 해법을 찾아 낸다고 하면 좋은 프로그램을 만들 수가 있습니다.
저희 원의 관심 많은 학생이 또 질문을 합니다.
"쌤 이미 잘 만들어진 라이브러리들이 널려 있는데 굳이 알고리즘을 공부할 필요가 있을까요? 제가 생각하기에는 백트래킹 알고리즘만 공부하면 프로그램으로 코딩하는데 전혀 문제가 없을것 같은데요~"
정말 똑똑한 학생입니다.^^
저도 10년 넘게 프로그래밍 하면서 알고리즘이란것을 생각하지 않고 업무용 프로그램을 구현했던것 같습니다.
와이프가 처음 학원을 오픈하면서 알고리즘 수업을 저한테 맡겼을 때만 해도 초등학생들 가르치는 알고리즘이 뭐 대수겠어 라고 덥썩 받아들였다가 몇년간(현재 진행중이네요...ㅠ.ㅠ) 알고리즘 공부하느라고 머리가 엄청 많이 빠지고 있습니다.
알고리즘의 깊이가 이렇게 깊은줄 알았으면 아마 처음부터 시작도 못했을것 같구요~
알고리즘 공부는 해도 해도 끝이 없는 것만 같습니다.
하지만 제가 알고리즘을 공부하면서 제가 나이들어서가 아닌 어렸을때 이러한 알고리즘 공부를 했었다면 어땠을까? 라는 생각을 많이 하게 되네요~
분명히 지금과는 다른 길을 걷고 있을것 같습니다.
저는 업무용 프로그램을 만드는 일을 하면서도 항상 구글이 궁금했습니다.
제가 만드는 업무용 프로그램에서 데이터가 1억건만 넘으면 아무리 최적화 해도 데이터를 가져오는 시간이 걸리고 데이터 처리량이 많아지면서 충돌이 일어나고 그런것들을 처리하기 위해 몇날 몇일을 고민한 적도 있었거든요~
하지만 구글은 1억건이 아닌 그것의 수천배,수만배의 데이터를 처리하면서 검색 버튼을 클릭만 하면 결과값을 바로 처리해 주는 것이 신기하기만 했거든요.
아직 전부를 이해한것은 아니지만~
지금은 약간은 그 원리를 이해 할수도 있을것 같다는 생각이 들더라구요.^^
아마 알고리즘을 공부하는 이유가 되지 않을까 싶네요.
그 학생에게는 일반회사에서 필요로 하는 소프트웨어 구현하는 것은 알고리즘 공부는 필요 없을수도 있다라는 말로 대신해 주었습니다.
하지만 구글과 같은 새로운 서비스를 구현하기 위해서는 지금 나와 있는 라이브러리로 구현을 할 수 있을까? 라고 질문을 해 주었는데요^^
그 학생은 지금도 열심히 알고리즘 공부를 하고 있습니다.^^
네번째는 가장 중요하다고 생각하는데 바로 목표입니다.
목표를 세운 학생은 수업태도 부터가 바뀝니다. 자신이 목표를 한곳에 도착하기 위해서 먼저 모르는 것을 받아들일 준비, 모르는 것을 물어 볼 준비, 알려고 노력하고 최선을 다하는 모습이 보입니다.
목표를 세우지 않은 학생이 그냥 알려주는 것만 간신히 받아 들이는 것과는 많은 차이가 있음을 느낍니다.
물론 꼭 목표를 세우지 않았다고 해서 모든 학생이 그렇다는 것은 아닙니다.
목표를 세우지 않았어도 공부하는 것을 즐기는 학생이 있습니다.^^(즐기는 학생은 따라 올수가 없을 수도 있습니다.^^)
하지만 목표를 세우고 그 목표를 향해 달려 가는 학생은 최소한 목표를 달성하거나 목표를 달성하지 못하더라도 목표에 근접한 성과를 이루게 됩니다.
2022년 임인년 새해에 모든 학생들이 목표를 세우고 올 한해 그 목표를 향해 최선을 다하는 한해 되시길 기원합니다.
'강의자료 > 정보영재' 카테고리의 다른 글
비버챌린지 비버스쿨 안내 드립니다. (8) | 2020.06.02 |
---|---|
대회에서 문제풀이 팁 (10) | 2020.03.04 |
알고리즘 대회 - 규칙찾기(무시하는 힘) (307) | 2020.02.14 |
AI 발전의 역사 (154) | 2020.02.03 |
순열과 조합의 개념 (2544) | 2020.01.24 |