# COMP 2231: Data Structures and Algorithms

Students are introduced to new types of data structures such as trees (including binary and multiway trees), heaps, stacks, and queues. Students also design new algorithms for each data structure studied, create and perform simple operations on graph data structures, describe and implement common algorithms for working with advanced data structures, and recognize which data structure is the most appropriate for solving a particular problem.

## Learning outcomes

• Work with procedural and object-oriented aspects of the Java language.
• Develop sound techniques on designing, developing, and documenting well-structured programs using proper software engineering principles.
• Continue to apply problem solving skills and provide a foundation for advanced programming courses using an OOP (object-oriented programming) methodology.
• Describe and implement common data structures––lists, stacks, queues, graphs, and trees––for solving complex programming problems.
• Use mathematical techniques to analyse the efficiency of the various algorithms presented, as well as the common operations on the data structures discussed.

## Course topics

• Module 1: Analysis of Algorithms & Searching and Sorting
• Module 2: Stacks & Queues
• Module 3: Lists & Iterators
• Module 4: Trees & Binary Search Trees
• Module 5: Heaps and Priority Queues, Graphs & Hashing

## Required text and materials

The following textbook would have been purchased in COMP 1131. Students who did not take COMP 1131 and/or don't already own the required textbook, will need to purchase it. To do so, please contact Enrolment Services at student@tru.ca or 1.800.663.9711 (toll-free in Canada), 250.852.7000 (Kamloops, BC), and 1.250.852.7000 (International).

1. Chase, J., Lewis, J., and DePasquale, P. (2020). Java foundations: Introduction to program design & data structures. (5th ed.) Toronto, ON, Pearson: Addison-Wesley.
Type: Textbook: ISBN: 978-0-13-520597-6

Java Development Environment: Since this is a programming course, you will also require a development environment to compile and run your programs. Module 1 contains instructions for installing either JCreator LE or Eclipse for the Windows environment, or BlueJ for the Apple Mac environment. All of these are suitable for a learning programmer. The environment you may have used for COMP 1131 and 1231 is sufficient for this course as well.