You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('') and can be up to 35 characters long.
131 lines
2.8 KiB
131 lines
2.8 KiB
5 years ago

## Software Engineering






### Software Engineering: The Basics






Topics to review so you don't get weeded out.






[Five essential screening questions](https://sites.google.com/site/steveyegge2/fiveessentialphonescreenquestions):



* Coding  writing simple code with correct syntax (C, C++, Java).



* Object Oriented Design  basic concepts, class models, patterns.



* Scripting and Regular Expressions  know your Unix tooling.



* Data Structures  demonstrate basic knowledge of common data structures.



* Bits and Bytes  know about bits, bytes, and binary numbers.






Things you absolutely, positively **must** know:



* 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.






### Software Engineering: The Full Topics List






A much longer and fuller list of topics:






* Algorithm complexity






* Data structures



* Arrays



* Linked lists



* Stacks



* Queues



* Hash tables



* Trees



* Binary search trees



* Heap trees



* Priority queues



* Balanced search trees



* Tree traversal: preorder, inorder, postorder, BFS, DFS



* Graphs



* Directed



* Undirected



* Adjacency matrix



* Adjacency list



* BFS, DFS



* BuiltIn Data Structures



* Java Collections



* C++ Standard Library



* Sets



* Disjoint Sets



* Union Find



* Advanced Tree Structures



* RedBlack Trees



* Splay Trees



* AVL Trees



* kD Trees



* Van Emde Boas Trees



* Nary, Kary, Mary Trees



* Balanced Search Trees



* 23 Trees, 24 Trees



* Augmented Data Structures






* Algorithms



* NP, NPComplete, Approximation Algorithms



* Searching



* Sequential search



* Binary search



* Sorting



* Selection



* Insertion



* Heapsort



* Quicksort



* Merge sort



* String algorithms



* String search methods



* String manipulation methos



* Recursion



* Dynamic programming



* Computational Geometry



* Convex Hull






* Object Oriented Programming



* Design patterns






* Bits and Bytes






* Mathematics



* Combinatorics



* Probability



* Linear Algebra



* FFT



* Bloom Filter



* HyperLogLog






* Systems Level Programming



* Processing and threads



* Caching



* Memory



* System routines



* Messaging Systems



* Serialization



* Queue Systems






* Scaling



* Parallel Programming



* Systems Deisng



* Scalability



* Data Handling






* Crypto and Security



* Information Theory



* Parity and Hamming Code



* Entropy



* Hash Attacks






* Unix



* Kernel Basics



* Command Line Tools



* Emacs/Vim






* Supplemental topics



* Unicode



* Garbage Collection



* Networking



* Compilers



* Compression



* Endianness



