Information Technology 302

I. Course Title: Algorithms and Optimization

II. Course Number: ITEC 302

III. Credit Hours: 3 credits

IV. Prerequisites: ITEC 301 (Grade of “C” or better)

V. Course Description: 

The course will explore advanced data structures and optimization strategies. Includes data structures, concepts and algorithms used in the solution of numeric and nonnumeric problems; applications to data management systems, file organization, information retrieval, list processing and programming languages.

VI. Detailed Description of Content of the Course:

Topics include:

  1. Self-balancing Trees
  2. Hash Tables
  3. Priority Queues and Heaps
  4. Sorting (Quick and Merge)
  5. Algorithm Design Techniques (Divide and Conquer, Greedy, Branch and bound, Memoization, Dynamic Programming)
  6. Graph Algorithms (Searching, Minimum Spanning Trees, Shortest Paths)
  7. Algorithmic complexity including the concept of NP-completeness

VI. Detailed Description of Conduct of Course:

Programming projects are assigned to give students experience in implementing existing algorithms. Students are also given several problems for which they are required to design and implement efficient algorithms.

VII. Goals and Objectives of the Course:

Students who complete the course will be able to:

  1. Use appropriate data structures for storing and searching data.
  2. Apply appropriate algorithmic design methods from among divide and conquer, greedy and dynamic programming to design and implement solutions to various problems (e.g., string matching).
  3. Apply graph theory to design and implement solutions to various problems.
  4. Recognize, and identify the significance of, polynomial vs. exponential algorithms.

VIII. Assessment Measures:

Students will be evaluated based on several programming assignments, and at least two examinations.

Review and Approval

August 2020