Computer science study plan.
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.
 

2.8 KiB

Software Engineering

Software Engineering: The Basics

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

Five essential screening questions:

  • 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
    • Built-In Data Structures
      • Java Collections
      • C++ Standard Library
    • Sets
      • Disjoint Sets
      • Union Find
    • Advanced Tree Structures
      • Red-Black Trees
      • Splay Trees
      • AVL Trees
      • k-D Trees
      • Van Emde Boas Trees
      • N-ary, K-ary, M-ary Trees
      • Balanced Search Trees
      • 2-3 Trees, 2-4 Trees
    • Augmented Data Structures
  • Algorithms

    • NP, NP-Complete, 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