# CSC 301.01, Class 41: Wrapup

*Overview*

- Preliminaries
- Notes and news
- Upcoming work
- Extra credit
- Questions

- More about the final
- Some learning goals/outcomes

### News / Etc.

- Please attend Friday’s class.
- I’ve posted a sample final.

### Upcoming work

- Homework 10 due TONIGHT.

### Extra Credit (Academic/Artistic)

### Extra credit (Peer)

- Pub-free quiz, TONIGHT.

### Extra Credit (Misc)

### Other good things

- Musical this weekend.
- More music stuff.

### Questions

- Should I submit really old extra credit writeups that are sitting on my computer?
- It couldn’t hurt.
- Will you be available next week?
- I should be sitting in my office much of the day on Monday and Tuesday.

## More about the final

- Goal: A chance for you to demonstrate what you’ve learned/mastered. (See below.)
- Often, more “can you read and apply/critique an algorithm” than “can you design one”?
- We’ll look quickly at the sample final.

## Some learning goals/outcomes

*Note: In spite of what I said about EOCEs, we’re really doing this
because I think it’s useful to step back and look at what you learned
(or might have learned).*

Big picture:

- Skills and strategies for designing algorithms and data structures.
- Increased knowledge of “the literature” of common algorithms and data structures.
- Other related stuff

### Habits of thought in dealing with algorithm design

- Consider approaches
- Develop a 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
- Exhaustive search (and dynamic programming)
- Turn the problem into an already solved problem

- Plus …
- Drawing pictures can help
- Modify an existing algorithm
- Introduce randomness
- Restrict the input
- Accept approximations

### “The literature” - Classic (and not so classic) algorithms and data structures

#### Algorithms

- Rabin-Karp - Substring matching based on hashing
- Shortest path - Solve the more general problem: Find the shotest path from s to every node. (Dijkstra’s)
- Prim - Minimum spanning tree (builds connected)
- Kruskal - Minimum spanning tree (builds disconnected)
- Ford-Fulkerson - Max flow
- Maximum bipartite
- Heap sort and other sorting algorithms
- Min stamps
- Approximate matching
- 0-1 knapsack
- Plus many many more.
- Heapsort

#### ADTs

- Lists
- Dictionary/Map
- Set
- Graph
- Tree

#### Data Structures

- Skip list
- Trie (there are multiple implementations of tries, but we
usually use tries as a way to achieve an ADT or other goal)
- Used for those weird suffix tree things useful for pattern matching
- Dictionaries

- Balanced search trees
- Red-black trees
- 2:3 trees
- B tree (generalized 2:3 trees)

- Heaps
- Hash tables
- Union-find
- Different implementations of graphs
- Adjacency list
- Adjacency matrix

### Other stuff

- Formalized asymptotic analysis - Big O, Big Omega, Big Theta
- A bit of amortized analysis

- Techniques for solving recurrence relations.
- Master theorem
- Recurrence trees
- Repeated expansion

- Way too many summations and rules for summations.
- Program verification
- Memory/state models
- Loop invariants

- Proof, informal and formal
- Induction (strong and weak)
- Constructive
- Contradiction
- …

- Counter-examples (covered earlier, but …)
- Practice with (stupid) hackerrank approaches
- Practice with C and GNU code conventions