Skip To Content

Courses

Computer Science (COMP) 272

Data Structures and Algorithms (Java) (Revision 4)

COMP 272 Course Web site

Revision 4 closed, replaced by current version.

View previous version.

Delivery Mode:Individualized study online.

Credits:3

Area of Study:Science

Prerequisite:COMP 268 or an equivalent introductory programming course in Java. Knowledge of high school mathematics (MATH 30 level) is assumed.

Note: Students who are concerned about not meeting the prerequisite for this course are encouraged to contact the course coordinator before registering.

Students in this course are required to contact their tutor using email.
Please see the Tutor and Coordinator Support page for more information.

Centre:School of Computing and Information Systems

SCIS Orientation

COMP 272 has a Challenge for Credit option.

Course Sample

check availability

Overview

COMP 272 builds on the concepts introduced in COMP 268 and shows how to use data structures as tools to design computer programs that will cope with the complexity of actual applications.

Topics covered include the fundamentals of algorithm analysis, recursion, stacks, queues, lists, trees, sorting and searching. Familiarity with the fundamentals of the Java programming language is a prerequisite to this course.

Learning Objectives

  • introduce the terminology and the key concepts related to data structure and algorithm analysis.
  • introduce the concept of recursion and the concept of a recursive algorithm, describe the sorting problem and explain its importance.
  • describe lists, stacks, and queues at the abstract level, implement them in Java, and analyze the efficiency of their implementations
  • explain the notion of a (rooted) tree at the abstract level and give examples for the applications of trees.
  • explain the binary heap at the abstract level, define it as an ADT, implement that ADT in Java, and estimate the cost of the implemented heap operations.
  • discuss the workings of a hash table at the abstract level, define a hash table ADT and implement it in Java then, estimate the cost of the basic hash table operations.

Learning Outcomes

Students successfully completing this course will be able to:

  • demonstrate skills in tracing, analyzing and designing recursive algorithms and recursive Java methods.
  • use various sorting algorithms and estimate their running time.
  • write Java code about lists, stacks, and queues, and analyze the efficiency of their implementations
  • define ADTs for trees in general, for binary trees, and for binary search trees, implement them in Java, and analyse the cost of the implemented tree operations.
  • apply binary heaps into internal and external sorting and into implementing priority queues.
  • use a hash table at the abstract level, define a hash table ADT and implement it in Java then, estimate the cost of the basic hash table operations.

Outline

Unit 1: Algorithm Analysis

  • Algorithm, function, running time, input size, dominant term, Big-Oh.
  • Definitions: Big-Oh, Big-Omega, Big-Theta, and Little-Oh.
  • Cost analysis of algorithms, verification of running times.

Unit 2: Recursion

  • Recursive definition, proof by induction.
  • Implementation of recursion, stack of method activation records.
  • Divide-and-conquer algorithms.

Unit 3: Sorting

  • The sorting problem, Insertion Sort, quadratic sorting algorithms.
  • Shell Sort, Merge Sort.
  • Quick Sort, Quick Select.

Unit 4: List, Stack, and Queue

  • List, stack, and queue ADTs, Java's iterator pattern.
  • Array and linked implementations of list ADTs, cost analysis.
  • Array and linked implementations of stack and queue ADTs, cost analysis.
  • Doubly linked lists and circular lists.

Unit 5: Tree

  • Terminology of trees.
  • Binary trees and their traversals.
  • Implementation of binary search tree, cost analysis.

Unit 6: Heap

  • Binary heap as priority queue.
  • Implementation of binary heap, cost analysis.
  • Heap Sort.
  • External sorting, replacement selection.

Unit 7: Hashing

  • Concept of hashing, hash functions.
  • Collision resolution strategies, clustering.
  • Hash table implementations, cost analysis.

Evaluation

To receive credit for COMP 272, you must achieve a course composite grade of at least “D” (50 percent) and a grade of at least 50 percent on the final examination. The weighting of the composite grade is as follows:

Assignment 1 Assignment 2 Assignment 3 Final Exam Total
20% 20% 20% 40% 100%

To learn more about assignments and examinations, please refer to Athabasca University's online Calendar.

Course Materials

Textbook

Weiss, A. Mark. Data Structures & Problem Solving Using Java (3rd edition), 2005. Toronto: Pearson Education Inc. ISBN: 0321322134

Other materials

Course materials for COMP 272 are stored in a self-extracting file on the servers at Athabasca University.

At this time the self-extracting file contains the following materials

  • Units 1 to 7 of the study guide.
  • Descriptions of the requirements for the individual tutor-marked assignments.

Registered students may download the self-extracting file through the World Wide Web. Additional supporting materials of interest to students may occasionally be made available electronically.

Special Course Features

IS courses at Athabasca University require that students use computer mediated communications. We expect students to have access to computer equipment with certain requirements.

The course work in COMP 272 requires students to have a Java 5 compiler and virtual machine installed in their computer.

Special Instructional Features

Delivery of COMP 272 (contacting the tutor, submitting assignments) is dependent on computer mediated communications. Students are required to have access to the World Wide Web.

Athabasca University reserves the right to amend course outlines occasionally and without notice. Courses offered by other delivery methods may vary from their individualized-study counterparts.

Opened in Revision 4, March 10, 2006.

View previous syllabus

Last updated by SAS  02/04/2016 08:34:06