4 credit/unit hours – Four hours of lecture weekly; one term

This course teaches skills for solving complex problems. Discussions and hands-on labs focus on advanced data structures and algorithms for recursion, pointer variables, linked lists, stacks, queues, hash tables, collections, sorting and searching, and trees.

Learning Objectives

Upon completion of this course the student will be able to:

  • Analyze problems to determine most appropriate data structure;
  • Use an object-oriented or structured programming language for complex problem solving;
  • Develop well-written, secure, and documented programs that use recursion, dynamic memory allocation, and abstract data types;
  • Evaluate mathematical efficiency of algorithms and sorting and searching techniques;
  • Discuss the advantages and disadvantages of object-oriented languages compared to procedural programming languages;
  • Apply abstract data types to applications;
  • Use recursion to solve looping problems;
  • Discuss advantages of encapsulation and inheritance; and
  • Work in teams to develop large, complex programs

Main Topics

1.0 Introduction to Abstract Data Types (ADTs)
2.0 Recursion
3.0 Databases
4.0 Abstract Data Types – Implementations and Applications
5.0 Big-O Notation and Efficiency of Algorithms
6.0 Sorting Algorithms
7.0 Searching Algorithms
8.0 Object-Oriented Programming Topics
9.0 Advanced Sorting/Searching Techniques
10.0 Advanced Graphical User Interfaces (GUIs)