Introduction to Data Structures

Identifier
COMS 2280

Last Updated: Spring 2025

Offered during Fall and Spring Semesters each year.

  1. Credits and contact hours: 3 credits, 4 contact hours
  2. Text book, title, author, and year: Carrano, Data Structures and Abstractions with Java (5th Edition), Pearson, 2018
  3. Other supplemental materials: None

Specific course information

  1. Brief description of the content of the course: An object-oriented approach to data structures and algorithms. Object-oriented analysis, design, and programming, with emphasis on data abstraction, inheritance and subtype polymorphism, and generics. Abstract data type specification and correctness. Collections including lists, stacks, queues, trees, heaps, maps, hash tables, and graphs. Big-O notation and algorithm analysis. Searching and sorting. Graph search and shortest path algorithms. Emphasis on object-oriented design, writing and documenting medium-sized programs. This course is designed for majors.
  2. Prerequisites or co-requisites: Minimum of C- in COM S 227, credit or enrollment in MATH 165
  3. Required, elective, or selected elective? Required

Specific goals for the course

  1. An ability to apply knowledge of computing and mathematics appropriate to the discipline. 
    1.  Be able to perform runtime analysis of simple algorithms and sorting & searching algorithms.
    2. Be able to form and check conditions for the valid values of variables at certain stages of a program. 
  2. An ability to analyze a problem and identify and define the computing requirements appropriate to its solution.
    1. Understand abstract data types including lists, stacks, queues, sets, maps etc.
    2. Be able to specify the input, output, correctness, efficiency, and maintainability requirements of a programming solution.
  3. An ability to design, implement, and evaluate a computer-based system, process, component, or program to meet desired needs. 
    1. Be able to understand sorting, searching, and graph algorithms in order to design and implement efficient solutions.
    2. Be able to implement abstract data types such as lists, stacks, queues, binary search trees, and priority queues.
    3. Be able to determine appropriate data structures and algorithms appropriate for program requirements.
    4. Be able to use object-oriented programming principles in problem-solving.
    5. Be able to write and debug well-structured, object-oriented and properly documented programs of up to 1000 lines of Java code.

Brief list of topics to be covered

  • Java and Object-Oriented Concepts
  • Exception Handling
  • Analysis of Algorithms
  • Sorting Algorithms
  • Generics in Java
  • Collection Interface and Iterators
  • Lists
  • Stacks
  • Queues and Priority Queues
  • Trees, Binary Search Trees
  • Graphs and basic Graph Algorithms
  • Maps