User:Graveca/Computing

My Computing syllabus

Core Maths

 * 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

 * 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

 * 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

 * 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

 * Big Oh complexity, See http://bigocheatsheet.com/

Design and Architecture

 * 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

Main concepts

 * Data hiding, Coupling and cohesion
 * Idempotency, Referential transparency, Side effects
 * Syntactic sugar
 * Memoisation
 * Floating point representation
 * GPU, OpenCL, OpenGL
 * Short circuit evaluation, Guards

Technique

 * 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

 * Bytecode
 * JVM memory model, Stack, Heap
 * Garbage collection
 * Reflection
 * Object - equals, hashcode, toString
 * Profiling tools, JProifiler, Static analysis tools, FindBugs

C++

 * STL, Smart pointers
 * Boost
 * Multiple inheritance, Diamond problem
 * Linking
 * Virtual functions, VTable

Scala

 * Collections
 * Functional, Partials, Currying
 * Actors
 * Patterns - Cake, Pimp

Concurrency

 * 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

 * Code golf
 * Code jams, Topcoder
 * Logic and reasoning problems
 * Probability problems
 * Numerical methods problems
 * Skyline problem, Towers of Hanoi, Travelling salesman

Project Delivery

 * Waterfall model, Requirements analysis, Prototyping
 * Agile, Scrum
 * Change management, Source control
 * Testing - Functional, System, Unit, Regression, Performance, Stress, Volume, Smoke, BDD