## Course Description

This course is designed to convey an understanding of information structures in computer systems with the objective oriented approach using the C++ language. This course aims at developing techniques for the design and analysis of efficient algorithms. The students will learn how to construct the programs that are clear, complete and functional in precise manner. In this course, the students will learn the ways to formulate ideas into algorithms and refine algorithms into concrete programs that can be applied to practical problems. It treats structured problem solving, the process of data structuring and abstraction, analysis of algorithms, and the comparative study of algorithms as fundamental tools of program design.

The topics covered in this course include ADT(Abstract Data Types), OOP(Object Oriented Programming), complexity analysis of algorithms, recursion, dynamic storage management, searching, sorting, symbol tables, hashing and graph theory with applications, and common data structures. The common data structures covered in this course include stack, queue, list, tree and symbol table, etc.

This course is taught using the C++ languages and emphasizes an OOP approach to data structures. Each student should expect a considerable number of assignments, most of them are the programming assignments. Each student is required to attend the TA's discussion section class.

## Prerequisite

CS:1210 with a minimum grade of C- or ENGR:2730 with a minimum grade of C-.## Course Information

- Course: Computer Science II: Data Structures
- Time and Location:
- Professor : In Jeong, Chung
- Office : 201C, MLH
- Office hour: Th,F. 11:00-11:50 am or by appointment
- Phone : 335-28-37
- TA :
- Discussion Section of TA
- Section 1 :
- Section 2 :
- Grading
- Homeworks : 25%
- Two midterm exams 20% * 2 = 40%
- Final Exam : 30%
- Class attendance : 5%

## Textbook(s)

- Data Structures & Other Objects Using C++, fourth edition

Main & Savitch

Addison Wesley

## Class Progress Schedule

- 1st week : Fundamentals of programming, ADT, OOP
- 2nd week : Complexity analysis of algorithms, Array, Lists
- 3rd week : Linked lists, Polynomial addition, Doubly linked lists, 1st Mid Term Exam
- 4th week : Recursion, Stack, Queue, PSN, Evaluation of arithmetic expressions
- 5th week : Tree, Binary search tree, Tree traversal, 2nd Mid Term Exam
- 6th week : Huffman tree and Data compression, Heap tree, B-tree, AVL tree
- 7th week : Graph theory (Dijksta algorithm, Kruksal algorithm, Topological sort, etc.)
- 8th week : Hash, Symbol table, Review and Final Exam