User:Graveca/Computing
Appearance
My Computing syllabus
Core Maths
[edit]- Binary, binary maths, Two's complement
- Boolean algebra, De Morgan's law
- Discrete Maths, Calculus
- Linear Algebra, Slope
- Prime number, prime factorisation, Generating primes
- Probability theory, Statistics, Combinatorics
- Information theory, NP complexity
Hardware
[edit]- CPU architecture, Intel Sandy Bridge, AVX, TSE
- Linux
- Networking, TCP/IP, Packet switching, Bandwidth & Latency
- Virtualization, Docker
- Grid computing, Cloud computing
- SIMD
- Context switching
- Flip flops, NAND, NOR
Data Structures
[edit]- Primitive types
- Arrays, Strings
- Sets, Queues, Stacks
- Lists, Linked lists
- Hash tables, Hash maps, Hashing algorithms
- Graphs, Red-Black Trees, Tries, Heaps
- Trees, Binary trees, Binary search trees, AVL Trees, Red Black Trees
- Image and Video representation
Algorithms
[edit]- Sort - Quicksort, Mergesort, Bubblesort
- Search - Binary search, Deterministic search, Probabilistic search
- DFS, BFS, Dijkstra's
- Divide and Conquer, Greedy
- Pattern matching, Regular expressions
- Compression, RLE, Huffman coding
- Data mining, Big data, Time series
- Map reduce, Page Rank
Complexity
[edit]- Big Oh complexity, See http://bigocheatsheet.com/
Name | Data structure | Best | Average | Worst |
---|---|---|---|---|
Quicksort | Array | O(n log(n)) | O(n log(n)) | O(n^2) |
Mergesort | Array | O(n log(n)) | O(n log(n)) | O(n log(n)) |
Bubblesort | Array | O(n) | O(n^2) | O(n^2) |
Bucketsort | Array | O(n+k) | O(n+k) | O(n^2) |
Design and Architecture
[edit]- SOA, Client-server architecture
- OO - Abstraction, Encapsulation, Inheritance, Polymorphism
- UML, UX, HCI
- Dependency injection, Spring
- Design patterns, Singleton, Visitor, Decorator
- Anti patterns
- Databases, Indexes, Stored procedures
- Distributed caching
- IPC, SOAP, RMI, REST, MQ
- BPM
- Temporal data, Bitemporal_data, Ticking data
- Structured data, Unstructured data
- SQL, NoSQL, Column databases
Coding
[edit]Main concepts
[edit]- Data hiding, Coupling and cohesion
- Idempotency, Referential transparency, Side effects
- Syntactic sugar
- Memoisation
- Floating point representation
- GPU, OpenCL, OpenGL
- Short circuit evaluation, Guards
Technique
[edit]- Dynamic binding, Late binding, Double dispatch
- Bit manipulations
- Recursion and Dynamic programming, Stop conditions
- Caching, Lazy caching
- Batching
- Mocking
- Scripting - Perl, Python, Bash
- Continuous integration
Java
[edit]- Bytecode
- JVM memory model, Stack, Heap
- Garbage collection
- Reflection
- Object - equals, hashcode, toString
- Profiling tools, JProifiler, Static analysis tools, FindBugs
C++
[edit]- STL, Smart pointers
- Boost
- Multiple inheritance, Diamond problem
- Linking
- Virtual functions, VTable
Scala
[edit]- Collections
- Functional, Partials, Currying
- Actors
- Patterns - Cake, Pimp
Concurrency
[edit]- Speedup
- Critical sections, Actor systems, Non-blocking algorithms
- Process, Thread
- Deadlock, Livelock, Starvation, Race condition
- Immutability
- Synchronized, Fair locking, Semaphores, Double-checked locking
- java.util.concurrent utilities, Barriers, Futures
- Thread pools, Executor service, PriorityQueue, BlockingQueue
- CAS, Atomics
- Volatile, Wait & Notify
Problem Solving
[edit]- Code golf
- Code jams, Topcoder
- Logic and reasoning problems
- Probability problems
- Numerical methods problems
- Skyline problem, Towers of Hanoi, Travelling salesman
Project Delivery
[edit]- Waterfall model, Requirements analysis, Prototyping
- Agile, Scrum
- Change management, Source control
- Testing - Functional, System, Unit, Regression, Performance, Stress, Volume, Smoke, BDD