# ProjectGopher

### From charlesreid1

# Project Gopher

Organizing notes in preparation for 2019 technical interview.

Full list of topics: https://git.charlesreid1.com/cs/study-plan/src/branch/master/SoftwareEngineering.md

Top level topics:

- Algorithm complexity
- Sorting - know how to sort, know at least 2 O(n log n) sort methods (merge sort and quicksort)
- Hashtables - the most useful data structure known to humankind.
- Trees - this is basic stuff, BFS/DFS, so learn it.
- Graphs - twice as important as you think they are.
- Other Data Structures - fill up your brain with other data structures.
- Math - discrete math, combinatorics, probability.
- Systems - operating system level, concurrency, threads, processing, memory.

Links: Template:AlgorithmsFlag

# Week 1

Sorting:

# Week 2

## Week 2A

Code:

- Write simple code with correct syntax.
- Java
- Python

Strategy:

- Walk through the algorithm (coding it) on paper.
- Then code it on the computer. Note any errors and problems.

Arrays:

- Implement Fisher-Yates shuffle
- Implement any shuffle
- Find the nearest integer to X in the array (binary search + variations)
- Implement any sort algorithm (merge sort)
- Implement another sort algorithm (quick sort)
- The merge sort you used is recursive. Can you do it non-recursively?

Language-specific array basics:

- Java arrays class
- Creating arrays
- Accessing arrays (first, last, range)
- Basic info about arrays:
- Length
- Slice
- Reverse
- Sort (built-in)

Algorithm analysis:

- Review costs of each operation

## Week 2B

Code:

- Write simple code with correct syntax.
- Java
- Python

Strategy:

- Walk through the algorithm (coding it) on paper.
- Then code it on the computer. Note any errors and problems.

Lists: - definitions - abstract data type: methods - abstract data type: more ornate/fancy methods

Language-specific list basics: - Java built-in list types, and built-in methods - Python list basics

Language-specific implementations: - singular linked list - circular linked list - doubly linked list - array list - (have the basic list of methods for each of these types ready to go - how do they relate to the ADT above?)

Algorithms for each implementation of the types of lists above: - get, set - clear, clone - equals - addfront, addback - removefront, removeback

# Flags

Computer SciencePart of the 2017 CS Study Plan.
Python/Exceptions Python/Os (os module) Python/Splat Python/Comparators
Builtin features of Java: Java/Exceptions Java/Generics Java/Iterators Java/Comparators Java/Numeric Documentation: Javadocs Tools and functionality: Java/URLs External libraries: Apache Commons OOP: OOP Checklist
· Template:CSFlag · e |

See also: