안녕하세요, 오랜만에 새로운 카테고리를 하나 시작할까 합니다. 그 동안 훈련소의 공백 때문에 밀려있는 일과, 학과에서 새로 진행중인 사업 제안서를 작성하느라 블로그에 공부 관련 글을 작성할 시간이 없었습니다. 작년에 블로그를 만들었을 때는 이맘때쯤 공부 관련 카테고리에 글이 한가득 있을 것이라 생각했는데, 계획대로 잘 되지 않았네요. 앞으로는 틈틈히 최대한 짬을 내서 원래의 목적대로 공부 관련 글을 채워볼까 합니다.

이 카테고리에서는 컴퓨터공학과 학부 과목 중 하나인 자료구조 과목을 정리할 생각입니다. 자료구조는 보통 2학년 과정에서 배우게 되는데, 대부분의 학교에서 필수과목으로 지정해둘 만큼 중요성이 높은 과목입니다. 특히 고학년 과목들은 자료구조를 모른다면 아예 손을 댈 수도 없을 정도이기 때문에, 확실히 배워두고 넘어가야 합니다.

저는 학부 때 자료구조 과목만큼은 굉장히 열심히 들었기 때문에 큰 어려움 없이 A+ 학점을 받고 이수를 했는데, 조교를 해보니 의외로 학부생들은 이 과목을 어려워하는 것 같습니다. 특히 연결 리스트(Linked List) 부분부터는 아예 손을 놓는 학생들을 많이 봤습니다. 과목 자체가 어려운 것은 아니지만, 배운 내용을 직접 프로그래밍하면서 이해하지 않고 강의자료만 읽으며 넘어가는 학생들이 버거워하는 것으로 보입니다.

프로그래밍 관련 과목이 다 그렇지만, 이 과목도 이론적인 것을 공부한 다음에는 반드시 하나하나 프로그램을 구현해보아야 합니다. 특히 포인터가 들어가는 연결 리스트 이후부터는 프로그램이 복잡해지기 때문에 직접 손으로 프로그램의 구조를 그려보고, 어떤 방법으로 프로그램이 돌아가는지를 하나하나 따라가봐야만 제대로 자기 것으로 만들 수 있습니다.

자료구조를 배울 때 사용하는 교재는 학교마다 다르겠지만, 대부분의 학교에서는 Horowitz의 Fundamentals of Data Structure in C 라는 교재를 사용하는 것으로 알고 있습니다. 워낙 유명한 책이다보니 한글 번역본도 나와있습니다. 많은 분들이 번역본을 읽는 것보다는 원서를 읽는 것을 추천하지만, 개인적인 생각으로는 영어에 자신이 없다면 번역본을 읽는 것도 나쁘지 않다고 생각합니다. 아무래도 영어로 보다보면 한글에 비해 읽는 시간이 너무나 오래 걸리기 때문입니다.

이 책에서는 제목대로 학습 내용을 C언어로 구현한 코드를 제공해줍니다. 프로그램 전체를 보여주는 경우는 별로 없고, 대부분은 특정 함수만 코드로 알려줍니다. 저는 이 책을 정리하는 입장이다보니, 가급적이면 책에 나와있는 프로그램을 직접 구현해서 포스트에 첨부하고자 합니다.

그럼 다음 포스트부터 본격적으로 자료구조의 각 단원을 정리해서 올리도록 하겠습니다.

Leave a comment