본문 바로가기 사이드메뉴 바로가기 대메뉴 바로가기

Computer Science

Courses

Data Structures
Text code : CSE214 / Credit : 4
  • Prerequisites C or higher in CSE 114
  • Textbook information Data structures and the Java collections framework" (3rd ed.), William J. Collins.

Credits 4
Course Coordinator

Byungkon Kang

Description

An extension of programming methodology to data storage and manipulation on complex data sets. Topics include: programming and applications of data structures; stacks, queues, lists, binary trees, heaps, priority queues, balanced trees and graphs. Recursive programming is heavily utilized. Fundamental sorting and searching algorithms are examined along with informal efficiency comparisons.

Prerequisite C or higher in CSE 114
Course Outcomes
  • An ability to program using sophisticated features of object oriented programming.
  • An ability to define and use data types, and use data structures.
  • An understanding of the importance of time and memory efficiency in algorithm design.
Textbook Data structures and the Java collections framework" (3rd ed.), William J. Collins.
Major Topics Covered in Course
  • Software Design: Specifications; memory and execution time efficiency; introduction to Big Oh notation; abstract data types and examples; review of object-oriented techniques.
  • Linked Lists: Singly-linked lists; implementation; inserting and removing data; variations: doubly-linked lists, circularly-linked lists; comparison of arrays and linked lists to store general lists.
  • Stacks and Queues: Basic operations of a stack; implementation using an array and a linked list; various stack applications (evaluating postfix, conversion of infix to postfix, etc.). Basic operations of a queue; implementation using an array and a linked list; queue applications (Josephus problem, simulations, Jai Alai).
  • Recursion: Recursion and activation records, backtracking, introduction to dynamic programming, tail recursion.
  • Binary Trees: Terminology; implementation of trees using nodes; Binary search trees: insertion and removal of data; Tree traversals. Heaps; implementation using arrays; use of a heap as a priority queue.
  • Balanced Trees: B-trees; 2-3-trees; 2-3-4-trees; red-black trees; AVL trees; splay trees; examples.
  • Searching: Sequential and binary search algorithms; hashing and hash tables; time analysis.
  • Sorting: Quadratic sorting algorithms; divide and conquer sorts (quick sort and merge sort); heap sort, time analysis.
  • Introduction to Graphs: Terminology; implementations using arrays and linked nodes; graph traversals.
  • Introduction to dynamic programming: Dijkstra's algorithm and Floyd-Warshall algorithm
Laboratory Projects There are 10 Java programming assignments that cover the following topics.
  • Basic data management program using OOP design
  • Time and space complexity analysis
  • Use of ArrayList, LinkedList, Stack, and Queue
  • Recursive implementation of binary search trees
  • Red-black tree management
  • Custom implementation of Quicksort and Mergesort
  • Use of Maps and Sets
  • Graph implementation, including minimum spanning tree computation
Course Webpage

CSE214

Byungkon Kang img
Byungkon Kang