COM 301 Algorithms and Data Structures

Course Description:

Analysis and development of techniques for representing and processing information within a computer system, focusing on efficient use of storage space and processor time. 

Prerequisite:

COM 204, MAT 231, and a computer programming language course

Textbooks:

Weiss, M. A. (2013). Data structures & algorithm analysis in C+= (4th ed.). Boston, MA:

Pearson.

ISBN-13: 9780132847377

Learning Outcomes:

1. Analyze algorithms with respect to time and space tradeoffs and use of recurrence relations, and big O, little o, omega, and theta notations.

2. Solve problems by developing algorithms using techniques including: brute force; Greedy algorithms; Divide-and-conquer; Decrease-and-conquer; Transform-and-conquer Backtracking; Branch-and-bound; Heuristics; and Numerical approximation algorithms;

3. Develop and apply pattern and string matching algorithms;

4. Compare, select, and use storage, searching and sorting techniques including: Sequential and binary search; O(N log N) sorting algorithms; Hash tables; Binary search trees;

5. Represent systems and relationship using graphs; process graphs using depth and breadth first traversals; Shortest-path algorithms such as Dijkstra’s and Floyd’s algorithms; Transitive closure using Floyd’s algorithm; Minimum spanning tree algorithms such as Prim’s and Kruskal’s algorithms; and topological sort;

6. VALUES OUTCOMES: In this class we will study how to make most efficient use of computer resources, practicing Saint Leo University’s core value of Responsible Stewardship.

Core Value:

Responsible Stewardship: Our Creator blesses us with an abundance of resources. We foster a spirit of service to employ our resources to university and community development. We must be resourceful. We must optimize and apply all of the resources of our community to fulfill Saint
Leo University's mission and goals.
Evaluation:
Assignment
Weight
Discussions (8)
10%
Exercises (8)
25%
Labs (3)
25%
Quizzes (5)
10%
Exams (2)
30%
Total
100

Discussions

Participation in class discussions is expected to be thoughtful and well-informed. For each module, respond to a discussion question posted by the instructor no later than Thursday 11:59 PM EST/EDT of the respective module. Finally, post responses to at least two classmates no later than Sunday 11:59 PM EST/EDT.

Exercises

For each module, you will complete a series of problems from the textbook. The assigned problems are located in the module content. Submit each Exercise to the Assignment folder no later than Sunday 11:59 PM EST/EDT in which it is due.

Labs

There are a total of 3 labs in this course, occurring in Modules 2, 3, and 5. Details for each lab are located in the module content. Submit each Lab to the Assignment folder no later than Sunday 11:59 PM EST/EDT in which it is due.

Quizzes

There are a total of 5 quizzes in this course, occurring in Modules 1, 2, 4, 5, and 7. The quizzes consist of multiple-choice questions. Complete each quiz no later than Sunday 11:59 PM EST/EDT in which it is due.

Exams

There are a total of 2 exams in this course, a Midterm and Final, occurring in Modules 4 and 8. The exams consist of multiple-choice questions. You will have the full week to complete each exam. Download each exam from the module content. Submit each exam to the Assignment folder no later than Sunday 11:59 PM EST/EDT in which it is due. 

Grading Scale:
Grade
Score (%)
A
94-100
A-
90-93
B+
87-89
B
84-86
B-
80-83
C+
77-79
C
74-76
C-
70-73
D+
67-69
D
60-66
F
0-59

Assessment of the Learning Outcomes:

Learning Outcome
Assessment Method(s)
1
Quiz;Exercise;TestQuestion
2 Exercise; Quiz; Lab
3 Quiz; Lab
4 Lab
5 Exercise; Quiz
6 Discussion Question3

Course Schedule:

Module 1

General Overview and Algorithm Analysis

Objectives

When you complete this module, you should be able to:
  • Discuss the mathematical foundations of algorithm analysis.
  • Explain the basics of recursion and describe C++ important features.
  • Explain how to estimate and manage the execution time of a program.
Assignments
Items to be Completed:
Due No Later Than:
Post an introduction to the class
Thursday 11:59 PM EST/EDT
Read the assigned materials
Post an initial response to the discussion question
Thursday 11:59 PM EST/EDT
Post responses to at least two classmates
Sunday 11:59 PM EST/EDT
Submit Exercise 1
Sunday 11:59 PM EST/EDT
Complete Quiz 1
Sunday 11:59 PM EST/EDT

Module 2

Lists, Stacks, and Queues

Objectives

When you complete this module, you should be able to:
  • Explain the concept of ADT.
  • Explain and compare the list, stack, and queue ADTs.
  • Develop and solve problems using ADTs.
  • Summarize the applicability of ADTs.
Assignments
Items to be Completed:
Due No Later Than:
Read the assigned materials
Post an initial response to the discussion question
Thursday 11:59 PM EST/EDT
Post responses to at least two classmates
Sunday 11:59 PM EST/EDT
Submit Exercise 2
Sunday 11:59 PM EST/EDT
Submit Lab 1
Sunday 11:59 PM EST/EDT
Complete Quiz 2
Sunday 11:59 PM EST/EDT4

Module 3

Trees

Objectives

When you complete this module, you should be able to:
  • Explain the basics of a tree.
  • Explain binary trees.
  • Apply the binary search tree data structures.
Assignments
Items to be Completed: Due No Later Than:
Read the assigned materials
Post an initial response to the discussion question Thursday 11:59 PM EST/EDT
Post responses to at least two classmates Sunday 11:59 PM EST/EDT
Submit Exercise 3 Sunday 11:59 PM EST/EDT
Submit Lab 2 Sunday 11:59 PM EST/EDT

Module 4

Hashing and Priority Queues

Objectives

When you complete this module, you should be able to:
  • Explain and compare several ways to implement hash tables and priority queues.
  • Compare the various implementations of hash tables and hash tables with binary search trees.
  • Analyze the various applications of hash tables and priority queues.
Assignments
Items to be Completed:
Due No Later Than:
Read the assigned materials
Post an initial response to the discussion question
Thursday 11:59 PM EST/EDT
Post responses to at least two classmates
Sunday 11:59 PM EST/EDT
Submit Exercise 4
Sunday 11:59 PM EST/EDT
Complete Quiz 3
Sunday 11:59 PM EST/EDT
Submit the Midterm Exam
Sunday 11:59 PM EST/EDT

Module 5

Sorting

Objectives

When you complete this module, you should be able to:
  • Analyze the various sorting algorithms – O(N2 ), O(N Log N), (N log N).
  • Analyze the execution time complexity of the sorting algorithms.
  • Show the applications of sorting algorithms.
Assignments
Items to be Completed:
Due No Later Than:
Read the assigned materials
Post an initial response to the discussion question
Thursday 11:59 PM EST/EDT
Post responses to at least two classmates
Sunday 11:59 PM EST/EDT
Submit Exercise 5
Sunday 11:59 PM EST/EDT
Submit Lab 3
Sunday 11:59 PM EST/EDT
Complete Quiz 4
Sunday 11:59 PM EST/EDT5

Module 6

Disjoint Sets

Objectives

When you complete this module, you should be able to:
  • Explain the equivalence relation concept.
  • Explain the data structure to solve the relation concept problem.
  • Explain an application of the disjoint sets class.
Assignments
Items to be Completed:
Due No Later Than:
Read the assigned materials
Post an initial response to the discussion question
Thursday 11:59 PM EST/EDT
Post responses to at least two classmates
Sunday 11:59 PM EST/EDT
Submit Exercise 6
Sunday 11:59 PM EST/EDT

Module 7

Graph Algorithms

Objectives

When you complete this module, you should be able to:
  • Analyze the common graph problems.
  • Explain and analyze the algorithms to solve several common graph problems.
  • Analyze the depth-first search algorithm as it relates to graphproblems.
Assignments
Items to be Completed:
Due No Later Than:
Read the assigned materials
Post an initial response to the discussion question
Thursday 11:59 PM EST/EDT
Post responses to at least two classmates
Sunday 11:59 PM EST/EDT
Submit Exercise 7
Sunday 11:59 PM EST/EDT
Complete Quiz 5
Sunday 11:59 PM EST/EDT

Module 8

Algorithm Design Techniques

Objectives

When you complete this module, you should be able to:
  • Explain the general approaches to algorithm designs (greedy, divide and conquer, dynamic programming, randomized algorithms, and backtracking algorithms).
  • Explain several specific examples of the design techniques.
  • Analyze the algorithms with respect to time and space.
Assignments
Items to be Completed:
Due No Later Than:
Read the assigned materials
Post an initial response to the discussion question
Thursday 11:59 PM EST/EDT
Post responses to at least two classmates
Sunday 11:59 PM EST/EDT
Submit Exercise 8
Sunday 11:59 PM EST/EDT
Complete the Final Exam
Sunday 11:59 PM EST/EDT