Algorithm Analysis (CSC 301 2015F) : EBoards

CSC301.01 2015F, Class 41: Wrapup

Overview

• Preliminaries.
• Upcoming Work.
• Extra Credit.
• Questions.
• Course goals.
• An inventory of learning outcomes.

Preliminaries

• Everyone who has made reasonable effort will pass.
• I will let you know your likely grade a week before I submit them. You can argue for higher or lower.
• We need a grader for CSC 301 next semester. Is anyone interested?
• We also need more individual tutors for next semester.

Upcoming Work

• Exam 2 due class time Friday.
• Final exam next Tuesday at 2pm, probably here.

Extra Credit

• CS Extras Thursday - Summer Opportunities in CS.
• Kington Inside the Loop talk tomorrow 11am or 2pm in JRC 101.
• Composing class concert tonight, Sebring-Lewis
• Symphonic Band Sunday at 2 in Sebring-Lewis

An inventory of learning outcomes

Habits of thought in dealing with algorithm design

• Find potential algorithms to solve a problem
• Work though examples
• Try to find a counter-example
• Try to prove it correct
• Analyze it
• Do it all over again ("can I do better")

Approaches to Algorithm Design

• Use one of the main techniques
• Greed
• Divide and Conquer
• Dynamic Programming
• Turn the problem into a graph and solve a problem on that graph.
• Think about what structures might help, or what new structures you might design.
• Change the requirements
• Use randomness

"The Literature" - Classic algorithms, ADTs, and Data Structures

Algorithms

• Dijkstra's algorithm for shortest path in directed graphs with non-negative edge weights. Greedy algorithm, choosing the nearest node at each step.
• Floyd-Warshall. All-pairs shortest path. Has a distance matrix that we enhance by allowing paths to go through more and more nodes. Clever use of data structure. Effectively a dynamic programming algorithm.
• Prim's Algorithm for MSTs.
• BFS and DFS.
• Sorting
• Quicksort
• Bucket sort
• Merge sort (we knew already)
• Clever approaches to merge sort
• Heap sort
• Ford-Fulkerson Max Flow
• Kruskal's algorithm for MST's
• Pattern Matching algorithms
• Using hash functions & The cool hash function
• Knuth-Morris-Pratt
• (less intelligent approaches)
• Minimum stamps
• Approximate string matching using dynamic programming
• Knapsack
• Kth-largest

Data Structures

• Self-balancing trees.
• Red-Black
• 2-3-4 trees
• Generalized 2-3-4 trees (B-trees)
• AVL trees (kinda)
• Tries
• Hash Tables and the design of hash functions
• Union-Find
• Heaps
• Implementations of Graphs
• Edge lists

Abstract Data Types

• Set
• Queue and Stack
• Dictionary
• Priority Queues
• Graphs

Everything else

• The formal definition of Big-O
• How to use the formal definition of Big-O to figure out implications of Big-O (e.g. if f(x) is in O(cg(x)), then f(x) is in O(g(x))).
• Laugh at what you do; sometimes even laugh at Dad jokes.
• P vs. NP
• Proof Techniques (or some practice)
• Authority
• Waving hands
• Induction (normal, strong, structural)