이 과목은 소프트웨어를 개발하는 데 있어서의 기본 지식으로서 추상화 타입을 공부하고 이를 기반으로 한 데이터 표현과 알고리즘을 공부하는 데 있다. 즉, Abstract data type과 representation, 알고리즘을 공부하는데 중요 자료 구조로서 배열, stack, queue, linked list, tree, graph를 공부한다. 그리고 알고리즘을 작성하는 방법과 성능을 개선하는 사례 공부를 통하여 알고리즘 성능이 얼마나 개선되는 가를 공부한다. 그리고 마지막으로 알고리즘을 수학적 함수로 정의하는 것이 매우 중요하다는 것을 공부한다.