Dec 08, 2021
2017-2018 Course Catalog
 Select a Catalog 2021-2022 Course Catalog 2020-2021 Course Catalog [ARCHIVED CATALOG] 2019-2020 Course Catalog [ARCHIVED CATALOG] 2018-2019 Course Catalog [ARCHIVED CATALOG] 2017-2018 Course Catalog [ARCHIVED CATALOG]
 HELP 2017-2018 Course Catalog [ARCHIVED CATALOG] Print-Friendly Page (opens a new window)

# CSCI 2082 - Data Structures and Algorithms

Credits: 3
Hours/Week: Lecture 3Lab None
Course Description: This course builds on the foundation provided by the CSCI 1081 , CSCI 1082  sequence to introduce the fundamental concepts of data structures and the algorithms that proceed from them. Topics include generic programming, recursion, the underlying philosophy of object-oriented programming, fundamental data structures (including stacks, queues, linked lists, and trees) and the basics of algorithmic analysis.
MnTC Goals
None

Prerequisite(s): CSCI 1082  with a grade of C or higher.
Corequisite(s): None
Recommendation: None

Major Content
1. Fundamental computing algorithms, e.g O(N log N) sorting algorithms; tree-processing algorithms
2. Asymptotic algorithm complexity analysis
3. Recursion: The concept of recursion, recursive mathematical functions, simple recursive procedures, divide-and-conquer strategies, recursive backtracking, implementation of recursion
4. Algorithmic strategies, e.g. Brute-force algorithms; greedy algorithms; divide-and conquer; backtracking; branch-and-bound; heuristics; pattern matching and string/text algorithms; numerical approximation algorithms
5. Generic programming and the use and creation of template data structures
6. Fundamental data structures, e.g. Stacks, queues, linked lists, trees
7. Fundamental computing algorithms, e.g simple searching and sorting algorithms (linear and binary search, selection, bubble, and insertion sort)

Learning Outcomes
At the end of this course students will be able to:

1. apply object-oriented principles to the development and use of algorithms and data-structures.
2. calculate time and space complexity of data structures and algorithms and be able to use these complexities to choose the most appropriate for a given problem environment.
3. create and use templated (generic) classes and methods.
4. demonstrate knowledge of algorithms associated with different data structures.
5. demonstrate knowledge of recursion by describing common applications and by effectively using it to solve problems.
6. use appropriate algorithms to solve common computing problems.
7. use fundamental data structures such as stacks, queues, linked-lists, and trees to represent data and meet application requirements.