개강하고 나서 첫 수업을 듣게 됐는데, 아쉽게도 1학년 수업엔 자바 강의가 없었다. 1학년 1학기엔 자동으로 시간표를 정해주기 때문에, 자바는 다음 기회에 듣기로 하였다. 대신, 파이썬을 배우게 됐는데 정말 간단하고 쉬웠으며 재미있었다. Turtle Pen을 통해 화면 상에 그림을 그리기도 하였으며, 파이썬의 기본 문법과 기능, 알고리즘 등을 배우며 첫 프로그래밍 수업을 수강하게 되었다. 파이썬뿐만 아니라 다양한 과목을 수강했었는데, 프로그래밍이 아닌 수업은 그리 큰 흥미를 가지진 못하였다. 그나마 조금 기억에 남던 것이, 마인드 스톰 EV3를 통해 정해진 알고리즘대로 로봇을 제어하는 강의였다.
그렇게 1학년 1학기를 마치고, 2학기에 들어서며 C언어를 접하게 되었다. 학년이 올라갈수록 다양한 프로그래밍 언어를 배우며 나아가는 듯했다. 첫 언어를 파이썬으로 시작해서 그런지, C언어가 불편하게 느껴졌다. 하지만 고등학교 시절, 윤성우의 열혈 C 프로그래밍 책을 봐와서 그런지 뭔지 모를 익숙함이 느껴졌다. 그때 당시에 while 반복문까지 읽었던 것이 여기서 빛을 발휘한 듯했다. 하지만, 포인터 개념이 나오면서 약간 헷갈리기 시작했고, 동적 메모리 할당과 연결 리스트 자료 구조를 구현하라는 과제에서 많은 우여곡절을 겪어 왔었다. 수업이나 과제에선 비록 콘솔창을 통해 값을 출력하며 보내왔지만, Windows API를 통해 콘솔창을 다루는 부분에서 재미를 봐왔던 기억이 있다.
그렇게 1학년을 마치고, 군대를 의무경찰로써 복무하게 됐다. 짧게 얘기하자면, 컴퓨터와 관련된 자격증을 따오며 군생활을 보내 무사 전역했다. 자격증을 따면 휴가를 보내주기 때문에, 그냥 최대한 많이 땄다.
20개월이란 시간이 흘러 군대에서 전역하고, 학교로 복학하기 전까지 공장에서 알바하며 시간을 보내왔다. 전역하고 나면 무엇이든 할 수 있다는 자신감이 생겨 무작정 공장에 들어가게 됐는데, 돈의 가치에 대해 다시 생각해 보는 시간을 갖게 된 것 같다.
3달 정도 알바하면서 2학년으로 복학하게 됐다. 드디어 기다리고 기다리던 자바프로그래밍 강의가 시간표에 담겨 표시된 것이 아닌가. 이 순간만을 위해 컴퓨터공학을 오게 됐다고 봐도 무방하다. 그런데 시간표를 보니 다양한 강의가 존재했었다. 자바프로그래밍, C++프로그래밍, 자료구조, 웹프로그래밍 등이 있었으며, 2학년 때부터 본격적인 컴퓨터공학과가 시작되는듯한 느낌을 받았다. 참고로, 서버에 대한 개념을 웹프로그래밍 강의를 통해 알게 되었다.
다른 강의에 비해 자바를 더욱 열심히 듣고 성실하게 교육을 들었다. 과제가 생각보다 힘들었지만, 관심을 갖고 계속 부딪혀보니 해결됐었다. 가장 기억에 남던 과제가 있는데, 그것은 필자 혼자서만 과제를 완성하여 제출했던 것이었다. 교수님께선 나의 과제물을 수강생들에게 보여주며 코드 리뷰를 해주셨는데, 뭔지 모를 성취감을 느꼈으며 한 걸음 성장해 나가는 느낌이 들었다.
자바 프로그래밍 강의에서 자바에 대한 여러 가지 특징과 기능에 대해 배웠지만, 이해도 잘 안될뿐더러 이해가 되더라도 실전에서 직접 적용하기엔 어려웠다. 심지어 자료구조와 C++을 동시에 수강하던 때라 머리가 많이 아플 때이기도 했다. 그렇게 고된 시간을 보내며 2학년 1학기를 마치게 됐다.
하지만, 자바 프로그래밍 강의를 들었다고 해서 자바를 잘하게 되는 것은 아닌 듯하다. 결국엔 직접 프로그래밍 경험을 늘려가며 손에 익혀야 했다.
2학기엔 프로젝트 강의가 있는데, 주 언어를 하나 선택하여 프로그램을 구현해 나아가는 방식이다. 자바 프로그래밍 실력을 향상시킬 좋은 기회라 생각하여 모든 프로젝트를 자바 언어로 선택하게 됐다. 각각의 프로젝트는 여러 가지의 요구사항이 주어졌고, 이를 직접 설계하고 구현하여 하나의 완벽한 프로그램을 만들어 나아갔다. 자료구조 강의에서 배운 내용과 이론을 적용시켜 주어진 요구사항을 하나씩 완성해 나아가보니, 어느덧 하나의 프로그램이 만들어지는 것이 아닌가. 프로그램을 직접 만들 때마다 실력이 향상되는 느낌이 들기도 하였다.
확실히 직접 프로젝트를 진행해 보니 프로그래밍에 대한 실력과 자신감이 생기기 시작했다. 게다가 컴퓨터구조와 리눅스도 수강하여 CPU와 RAM이 작동하는 원리, 윈도우가 아닌 또 다른 운영체제에 대한 이해를 하게 되었다. 또 다른 전공과목들도 자바 프로그래밍할 때 도움 되지 않을까 싶어 항상 관심 있게 들었고, 심지어 흥미롭고 재미있기도 하였다. 그 내용들은 자바 프로그래밍에 도움이 될뿐더러, 컴퓨터공학적 사고를 가질 수 있는 매우 중요한 강의임을 몸소 느꼈다.
정신없었지만, 자바를 활용하여 직접 프로젝트를 진행하며 프로그램을 구현하는, 의미있는 시간을 보내며 2학년을 마치게 됐다. 그렇게 컴퓨터공학과의 하이라이트인 3학년에 들어가게 된다.