CPSC 374 - Algorithms and Data Structures

Catalog Description

This course establishes a foundation for the systematic study of algorithms and data structures. The integration of these two concepts into a single organizational structure emphasizes that algorithms and data structures are inseparably inter-twined. This course builds and elaborates on the concepts introduced in CPSC 146 and 246. This course will be taught in a language other than that used in CPSC 146 and 246.

Prerequisite: CPSC 246 (3 credits)

Course Outcomes

This course and its outcomes support the Computing Learning Outcomes of Problem Solving and Critical Thinking (PS&CT), Communication and Interpersonal Skills (C&IS), and Ethical and Professional Responsibilities (E&PR). These Computing Learning Outcomes are tied directly to the University Wide Outcomes of Quantitative Reasoning, Effective Communication, Acting Ethically, and Whole Personality.

Program Objectives Assessed in CPSC 374

Learning OutcomesAssessed Course Objectives
PS & CT c. Perform critical analyses of the impacts of decisions based on mathematics1. Implement an algorithm by creating a tested and debugged programmatic solution.
C & IS b. Use written, oral, and electronic communication to convey technical information effectively2. Write a paper on one or more algorithms and/or data structures.
E & PR c. Demonstrate an awareness of the codes of professional ethics in the information technology industry3. Understand the implications of efficiency and accuracy of data representation, data structures, and/or algorithms in an information society
E & PR e. Recognize the need for continuing professional development4. Understand the need for continuing development as a computing professional.
C & IS a. Document all aspects of a system precisely and clearly5. Write well documented code with an appropriate user interface that meets style requirements for readability and usability.

Additional Course Objectives include:

The student will be able to:

  1. Describe and apply the concepts of recursion, object-oriented design, abstract data types, encapsulation, code reuse and space and time complexity
  2. Demonstrate an understanding of ethics and intellectual property rights as they apply to code reuse, reverse engineering, and the completion of class assignments.
  3. Analyze the complexity of computer algorithms and data structures
  4. Implement and use data structures such as stacks, queues and linked lists.
  5. Demonstrate an understanding of some additional data structures such as trees, priority queues and graphs.
  6. Implement and use advanced searching and sorting techniques.