수업이 다루고 있는 내용
데이터 스트럭쳐 중심
본 수업은 데이터 스트럭쳐를 다루고 있습니다. 알고리즘은 데이터 스트럭쳐를 설명하기 위한 범위에서 제한적으로 다룹니다.
내장 데이터 스트럭쳐
오늘날 데이터 스트럭쳐를 사용자가 직접 구현해야 하는 일은 많지 않습니다. 많은 언어가 중요한 데이터 스트럭쳐를 기본적으로 제공하고 있기 때문입니다. (C++ STL, 자바의 collection framework, PHP SPL, Python의 list, tuple, set...) 그래서 본 수업은 언어별로 내장된 데이터 스트럭쳐의 사용법(API)을 우선으로 살펴봅니다. 그 후에 언어별로 데이터 스트럭쳐를 직접 구현해 봅니다.
성능평가 및 벤치마킹
데이터 스트럭쳐를 익히는 이유는 빠른 성능을 위해서입니다. 따라서 성능을 측정하는 것은 대단히 중요한 부분입니다. 하지만 성능을 측정하는 것이 다소 까다로운 주제이기 때문에 가급적 수학적인 선행 지식이 필요한 부분은 배제할 예정입니다. 동시에 수학을 피할 수 없는 부분에서는 오히려 해당 수학적 지식을 본격적으로 다루겠습니다. 수학을 잘하면 프로그래밍에 도움이 됩니다. 하지만 프로그래밍을 하면 오히려 수학을 배우는 데 큰 도움이 된다는 사실을 체험하실 수 있을 것입니다.
수업의 난이도
본 수업은 비전공자를 위한 데이터 스트럭쳐 수업입니다. 데이터 스트럭쳐는 전공자도 어렵게 여기는 학문입니다. 따라서 비전공자가 데이터 스트럭쳐라는 분야에 진입하는 것은 쉬운 일이 아니었습니다. 비전공자도 쉽게 공부할 수 있다고 말씀 드리지는 않겠습니다. 원래 어려운 분야 입니다. 하지만 비전공자도 도전해볼 수 있도록 최대한 쉽게 만들겠습니다. 자연스럽게 공부에 어려움을 겪고 있는 전공자는 보다 쉽게 공부할 수 있을 것입니다. 충분히 많은 시간을 확보하고 공부를 시작해주세요.
선행 학습
본 수업은 언어 기초 수업이 아닙니다. 프로그래밍 언어에 정통할 필요는 없습니다만 프로그래밍에 대한 기초적인 훈련은 이미 되어 있어야 합니다.
참고자료
Youtube 재생목록
http://www.youtube.com/playlist?list=PLuHgQVnccGMDsWOOn_P0EmAWB8DArS3Fk
Github
https://github.com/codingeverybody/data_structure_java
라이선스
본 수업은 public domain 라이선스를 채택하고 있습니다. 콘텐츠를 사용하는데 어떠한 제약도 없습니다. 내용을 수정하셔도 되고, 상업적인 이익을 취하셔도 됩니다. 컨텐츠의 수정,사용,배포,판매를 위해서 저희와 어떠한 연락을 시도하지 않으셔도 됩니다. (다만 콘텐츠 내에서 사용된 이미지 등은 해당 이미지 제작자의 라이선스 정책이 별도로 있을 수 있습니다.) 저희는 이 콘텐츠가 공공재처럼 자유롭게 사용되기를 소망합니다.
만드는 사람들
- 강두루
- 이고잉 (http://egoing.net)