Skip to content

Latest commit

 

History

History
167 lines (164 loc) · 4.23 KB

File metadata and controls

167 lines (164 loc) · 4.23 KB

Computer science fundamentals

  • Basics
    • Variables
    • Conditionals
    • Loops
    • Functions
  • Data Structures
    • Array
    • Stack
    • Queue
    • LinkedList
    • Dictionary
    • Tree (binary, self balancing, B+)
    • Heap
  • Algorithms
    • Linear search
    • Binary search
    • Graph Theory
      • BFS
      • DFS
      • Bellman-Ford
      • Dijkstra
      • Floyd-Warshall
      • Kruskal
      • Prim
      • Min cut/max flow
      • Spanning trees
      • Eulerian vs Hamiltonian cycles/circuits
      • Weighted graphs
      • Directed acyclic graphs (DAGs)
    • Sorting (bubble, heap, merge, quick, topological, etc...)
    • Math intensive (machine learning)
    • Dynamic programming (memoization)
    • Greedy algorithms
    • more …
  • Recursion
  • Print vs. return
  • Boolean operations
  • Time complexity (big O, etc.)
  • Computational complexity (P vs. NP, etc...)

Software Engineering

  • OOP
    • Polymorphism
    • Classes/Encapsulation
    • Inheritance
    • etc (add more here)
    • pass by value vs pass by reference
    • overloading vs overriding
  • Design Patterns
    • Creational
      • Abstract Factory
      • Builder
      • Factory Method
      • Prototype
      • Singleton
    • Structural
      • Adapter
      • Bridge
      • Composite
      • Decorator
      • Facade
      • Flyweight
      • Proxy
    • Behavioral
      • Chain of Responsibility
      • Command
      • Interpreter
      • Iterator
      • Mediator
      • Memento
      • Observer
      • State
      • Strategy
      • Template Method
      • Visitor
  • Functional programming
    • Higher order functions
    • Pure functions
    • Functors
    • Composition
    • Currying
  • API’s vs Framework vs Library
    • opnionated vs nonopinionated
  • SQL vs NoSQL databases
    • Fundamentals of each
    • When to use which
    • Database indexing
  • Basics of the internet
    • Packets and routing
    • DNS
    • IP
    • HTTP
      • Https?
    • Concept of a URL/URI
    • TCP/UDP
    • Ports
    • “THE CLOUD!”
    • How web browsers work
      • what happens when you hit "enter" into the search bar
    • Web sockets/PubSub pattern
  • Software architecture patterns
    • MVC
    • MVP
    • MVVM
    • VIPER
  • Asynchronous programming
  • Imperative vs. Declarative programming
  • Higher order functions (functional programming)
  • Static vs dynamic languages (c, java, etc... vs js, python, ruby, etc...)
  • REST/RESTful APIs
  • JSON
  • Basics of Web Frameworks
    • Concept of routing
    • ORMs/ODMs
  • Multithreading/Concurrency
  • System design
    • experts, add some stuff here
  • Principles
    • SOLID Fundamentals
      • Single Responsibility
      • Open/Closed
      • Liskov Substitution
      • Interface Segregation
      • Dependency Inversion
    • Command-Query Separation
    • YAGNI (You Aren't Gonna Need It)
    • DRY (Don't Repeat Yourself)
    • C fundamentals (pointers, memory management, etc...)
    • Compiler, assembler, machine language (GCC, LLVM, clang)
    • Caching
    • File storage
    • OS Design/Architecture
    • Web servers
    • Load balancers
    • Shell
    • Benchmarking (throughput vs latency)
  • SOLID Fundamentals
  • Agile development
  • Test Driven Development
  • Build Automation
    • Apache Maven
  • Continous Integration / Continous Development
    • Jenkins
      • automating software deployment
    • Webhooks (Can also be apart of Bitbucket Integration)
  • Bitbucket Integration
    • JIRA Tickets
  • Command line basics
  • Computer security
    • Basic exploits (e.g. buffer overflow, etc.)
    • Symmetric encryption (e.g. private key encryption)
    • Asymmetric encryption (e.g. RSA cryptosystem)
    • Digital signatures

Things we have all or will all experience

  • JavaScript fatigue
  • Having 60 tabs open at once
  • Refreshing Stack Overflow
  • That one friend who is the “idea guy”
  • Communicating ideas properly
  • Being able to help with a field not uniquely your own (ex:) Developer -> Devops
  • Dependency hell
  • Fundamental stuff eventually blowing up
  • Having a sense of humor, but a thick skin too

Taken from Sudotoons.