CS 245: Data Structures and Algorithms with Java

Class Program
Credits 5 Lecture Hours 22 Lab Hours 66
The 3rd course in a yearlong study of the foundations of Computer Science. In this course a variety of data structures and their associated algorithms are implemented and utilized. Basic data structures such as arrays, linked lists, stacks, queues, sets, and trees are studied and applied to problems in data storage and manipulation. Basic sorting algorithms are studied. Design, analysis, and implementation techniques are discussed to illustrate and apply the concepts of the course.

Prerequisites

CS 142 or Instructor permission
Course Outcomes

Upon successful completion of the course, students should be able to demonstrate the following knowledge or skills:

  1. Apply data abstraction techniques to implement a variety of fundamental data structures.
  2. Utilize unit testing features to test methods and reduce bugs and regression errors.
  3. Analyze the time and space performance of algorithms using big O notation.
  4. Construct and use sequential data structures, including lists, stacks, queues, deques, and sets.
  5. Differentiate between array based and linked list-based implementations of sequential data structures.
  6. Utilize generic programming when building data structures.
  7. Utilize common interfaces such as Collection, List, Iterator, and Comparable.
  8. Use common data structures from the Java Collections library.
  9. Implement algorithms to define (construct, insert, delete, search, and traverse) binary search trees.
  10. Analyze a scenario, select/design the appropriate data structure(s) to apply, and implement an efficient solution to solve the problem.
Institutional Outcomes
IO1 Communication: Students will be able to communicate clearly and effectively within a workplace context
IO2 Quantitative Reasoning: Analyze and solve computational problems using a modern program language
IO3 Human Relations/Workplace Skills: Students will be able to demonstrate teamwork, ethics, appropriate safety awareness and/or workplace specific skills
Course Content Outline
  1. Unit Testing
  2. Algorithm Analysis & Big O Notation
  3. Generic Programming
  4. Interfaces
  5. Arrays & Linked Lists
  6. Stacks, Queues & Sets