CSC 428 Part
Different programming paradigms, such as imperative and declarative; programming language syntax and semantics; expressions and assignment statements; control statements such as selection (two-way and multiple) and iterative statements (controlled by counter and logically); subprograms (functions and procedures).
Objects and classes; messages and methods; relationships (is-a, part-of, has-a); inheritance (including multiple inheritance); interface and implementation; implementation of classes, objects, and messages.
Linked lists, stacks and recursion; queues; trees (building, traversing, searching, implementing); binary trees.
CSC 438 Part
Advanced Data Structures
Indexing using hashing; priority queues; heaps; trees (binary search, balanced, suffix); AVL trees.
Basic algorithm analysis (O, o, ), priority queues and heaps (binary heaps, heap operations, d-heaps, leftist heaps, binomial queues); sorting algorithms (shell sort, insertion sort, quick sort, merge sort, bucket sort, external sorting); disjoint sets (dynamic equivalence problem, path compression, union/find algorithm); graph algorithms (topological sort, shortest path, Dijkstra’s algorithm, all-pairs shortest path, minimum spanning trees, depth-first search, undirected graphs, Euler circuits, directed graphs, strong components); NP completeness (definitions, example of NP-complete problem, difference between NP-complete and NP-hard problems); algorithm design (greedy algorithms such as scheduling problem, rational knapsack, Huffman codes), divide and conquer (closest-points problem, selection problem); dynamic programming and backtracking.