성공적인 컴퓨터 공학 학습법: 이론, 실습, 그리고 창의성
전공 이론 및 실기 실력을 높이는 방법
Edited by 나홍주 선생님
안녕하세요. 2학년 자료구조, 게임 프로그래밍, 리눅스 프로그래밍 교과를 담당하는 교사 나홍주입니다. 전공 교과 공부 방법에 관해 이야기해 볼까 합니다.
전공 교과는 이론 과목과 실습 과목 공부 방법, 크게 2가지로 나눠 얘기해 줄 수 있을 거 같아요. 컴퓨터 공학을 전공하며 제가 공부했던 방법을 토대로 말해주자면, 수업 직후 바로 복습하는 것이 이론 공부할 때는 가장 잘 맞는 방법이었던 거 같아요. 지금이야 교과서 페이지 수도 적고, 공부할 양도 적지만 대학에 들어가면 이론 교과도 페이지 수가 매우 많아집니다. 그래서 그 시간에 배운 내용을 바로 노트 또는 자신이 관리하는 블로그, 깃허브, 노션 등에 정리해 두는 것을 추천해요. 이런 이론 공부 과정을 인터넷에 기록해 두면 하나의 포트폴리오로도 사용할 수 있어 추천합니다. 실습 과목은 무식한 방법이기도 하지만 일단 하나의 프로젝트를 기획해서 무작정 만들어보는 것이 가장 실기 실력을 높이는 데 좋아요. ‘나는 아직 이걸 배우지 못했어.’, ‘나는 아직 이에 대한 이론을 몰라.’라는 말로 차일피일 미루다 보면 결국 하나도 개발을 해보지 못하는 경우가 발생합니다. 일단 기획하고 만들다 보면 모르는 게 정말 많을 거예요. 그렇다면 검색을 하면서 모르는 것을 찾으세요. 그럼, 여러분의 이해도와 숙련도가 어느 순간 향상됩니다.
컴퓨터를 전공으로 가진 사람들에게 가장 중요시되는 건 창의성이라고 생각해요. 창의력이 있어야 새로운 것을 만들어 낼 수 있고, 창의력이 있어야 다른 사람은 생각하지 못한 방법으로 문제를 해결해 낼 수 있어요. 이론 공부, 실기 공부도 중요하지만, 창의력을 키우기 위해 다양한 도서와 다양한 상황, 세계를 접해보고 이를 여러분의 경험으로, 프로그램으로 녹일 수 있는 개발자가 되었으면 바랍니다.
사전학습에서 산출물 제작까지: IT 전공 학습의 체계적 접근법
프로그래밍 언어 학습의 필요성 탐색
Edited by 곽이삭 선생님
안녕하세요. 우리 학교 SW 교육을 기획하는 곽이삭 선생님입니다.
우리 학생들의 전공 학습에 대한 궁금증을 풀어주기 위해 전공 학습에 대한 방향성에 대하여 이야기를 해보고자 합니다. 면저 전공 학습은 맹목적인 공부로 되는 것이 아닌 소프트웨어와 관련된 다양한 주제에 관심을 두는 것부터 시작이 된다고 보면 좋을 것 같습니다. 본인이 관심이 있어 하는 주제를 찾고, 그 주제에 관한 기사 및 블로그를 탐독하며, 해당 기술을 구현하기 위해서는 어떠한 지식과 프로그래밍 언어가 필요로 하는지 깨달아야 합니다. 본인의 관심 IT 주제와 연관된 기술을 습득하기 위해 어떠한 사전학습이 필요한지에 대한 학습을 하는 곳이 우리 학교라고 보면 될 것 같습니다. 예를 들어, 사물인터넷 서비스에 관해 관심 있다고 하면, 기기의 펌웨어를 담당하는 C/C++에 대한 프로그래밍 언어와 통신을 위한 네트워크 기술을 확보하는데 애써야 합니다. 학년별로 나누어 설명하면, 1학년 때는 다양한 IT 주제를 접하며, 본인만의 전공 목표를 설정하고, 2학년 때는 필요한 프로그래밍 지식을 확보하여, 단원진로학술제를 통하여 최소한의 산출물을 만들어보는 것이 중요합니다. 3학년은 학습한 기술의 다양한 응용을 통해, 사회로 나가는 준비를 하는 시기로 생각됩니다. 고등학교에서의 전공 학습을 대학 진학이든 취업이든 여러분의 성공적인 인생의 밑거름으로 삼으면 좋을 듯합니다.
선생님은 여러분이 다양한 정보통신 전문가로 성장하길 기대하며 응원하겠습니다!
문제에 부딪힐 때 실력이 시작된다.
코딩 실력 향상 방법에 대한 제언
Edited by 하성동 선생님
선생님의 경험에 비추어 봤을 때 코딩 실력이 가장 크게 느는 방법은 프로그램 전체를 하나 개발해 보는 것이에요. 프로그래밍 언어의 기본 문법을 배우고 수많은 예제를 따라 해보는 것은 타자 연습과 크게 다르지 않다고 생각 해요. 그 알고리즘이 어떻게 돌아가고 왜 그런 결과를 내놓는지에 대한 이해가 있어야 다음에 필요할 때 써먹을 수 있죠. 하지만 세상에는 무궁무진한 문제 해결 방법이 있고, 똑같은 문제는 없어요. 그러니 내가 알고 있는 알고리즘을 다른 문제에 그대로 적용할 수 있는 건 아니죠. 이를 응용하는 방법은 내가 직접 그 문제들에 부딪혀 보아야만 알 수 있어요.
학교에서 흔히 온라인 코딩 문제 사이트를 활용해 많은 문제를 푸는 모습을 볼 수 있어요. 이를 통해 다양한 알고리즘에 대해서 배우게 되겠죠. 하지만 여기에 나오는 문제들은 실제 프로그램에서 요구하는 문제들과는 거리가 있어요. 문제를 위한 문제를 만든 느낌? 내가 학습한 알고리즘을 응용해서 다양한 문제를 해결할 수 있는 것이 진정한 코딩 실력이니, 코딩 실력을 키우기 위해서는 실제 문제를 접해보는 것이 좋아요. 그 방법으로 프로그램을 하나 만들어보는 걸 추천해요.
하찮아 보이는 기능 한두 개 구현한 프로그램도 좋고 간단한 게임도 좋아요. 원하는 기능을 개발하면서 수많은 문제에 부딪히게 될 것이고, 해결책이 여러분의 머리에서 바로 나오지 않을 거예요. 고민하고 검색하고 직접 한 줄 한 줄 적어 보면서 문제를 해결해 나가는 거죠. 알고리즘 구현뿐만 아니라 UI나 UX에도 신경 써보세요. 이쁘게 꾸미고 편리하게 만드는 게 전부가 아니란 걸 알게 될 거예요. 그 과정에서도 고민하는 문제가 있을 것이고, 해결하기 위해 많은 것을 새롭게 배우는 과정이 될 거예요.
선생님은 예전에 게임을 만들어본 적이 있어요. 오롯이 혼자서 게임의 모든 부분을 개발했죠. 기능 구현, 그래픽, 사운드, UI, UX, 배포, BM 등 많은 것을 해보면서 크게 성장한 기회가 되었어요. 여러분들도 프로그래밍을 배우면서 문법, 알고리즘에만 힘을 쏟지 말고 이를 응용해서 실제로 구현하는 법을 꼭 경험해 보길 추천해요. 단 한 번의 경험일지라도 엄청나게 성장한 자신을 발견할 수 있을 거예요.
김경태 기자
답글 남기기