Self-Learning
Since I left my job I decided to do full-time study to refresh my knowledge, learn new things and make some fun with pet projects.
These are the materials I use (the most enjoyable are highlighted):
Data Analysis and Machine Learning
- Artificial Intelligence by MIT
- Big Data Analysis with Scala and Spark by EPFL
- Enterprise Analytics with Apache Spark by DataStax
Other Materials
- Analyzing Data in the Internet of Things by Alice LaPlante
- K-means clustering: how it works by Victor Lavrenko
- K nearest neighbor (kNN): how it works by Victor Lavrenko
- What is a Genetic Algorithm by MATLAB
- Decision Tree 1: how it works (from Decision Tree) by Victor Lavrenko and Nigel Goddard
- Gradient Descent - Artificial Intelligence for Robotics by Udacity
- The Evolution of Gradient Descent by Siraj Raval
- Boosting by Georgia Tech
- Support Vector Machines (SVM) (1, 2, 3)
- Neural Networks (1, 2)
- Convolutional Neural Networks (1, 2, 3)
- Backpropagation in 5 Minutes by Siraj Raval
- Which Activation Function Should I Use? by Siraj Raval
- Second Order Optimization by Siraj Raval
- The Best Way to Prepare a Dataset Easily by Siraj Raval
- Dimensionality Reduction (1, 2, 3)
- Naïve Bayes by University of California, San Diego
Databases
- MongoDB for Node.js Developers by MongoDB University
- PostgreSQL Tutorials (1, 2) by Programming Guru
- Entity Attribute Value by SABZAL
- SQL Antipatterns Strike Back by Bill Karwin
Apache Cassandra
- Cassandra Tutorials by DataStax
- Data Modeling by DataStax
- A Look at the CQL Changes in 3.x by DataStax
- spark-cassandra-connector/doc by DataStax
Mathematics
- Lambda Calculus (1, 2, 3, 4, 5)
- Calculus Made Easy by Silvanus Thompson
- Single Variable Calculus by MIT
- Multivariable Calculus by MIT
- Probability and Statistics Courses (1, 2, 3, 4, 5, 6)
- Mathematics for Computer Science by MIT
Other Materials
- Indirect Proofs by Stanford
- Theoretical Computer Science Cheat Sheet by Stanford
- Sketching the Derivative of a Function by patrickJMT
- Vector and Parametric Equations of a Line (Line in 3 dimensions) (from Introduction to Multivariable Calculus (Calc 3)) by rootmath
- Gradient (1, 2) by Khan Academy
- Lagrange multipliers (1, 2, 3, 4) (from Multivariable calculus) by Khan Academy
- Expected Value by patrickJMT
- The Correlation Coefficient - Explained in Three Steps by Benedict K
- Marginal distribution and conditional distribution by Khan Academy
- The Law of Iterated Expectations: an introduction by Ben Lambert
- The Bayesian Trap by Veritasium
- Confidence Intervals (1, 2) by Statistics Learning Centre
- Chi-squared Test by Paul Andersen
- How to Determine the Statistical Significance of an A/B Test by Michael Aagaard
- Finite Math: Introduction to Markov Chains by Brandon Foltz
- Finite Math: Markov Chain Example - The Gambler’s Ruin by Brandon Foltz
Algorithms and Data Structures
- Introduction to Algorithms by MIT
- Design and Analysis of Algorithms by MIT
- Advanced Data Structures by MIT
Other Materials
- Time Complexity (Russian) (from Basic Algorithms for Middle School Students) by ITMO
- Time Complexity (Russian) (1, 2) (from ITMO’s Algorithms)
- Intro To Complexity Theory (Russian) by Dmitry Meleshko
- Recurrence Relations by Duke University (contains a typo on slide 7, case 1; try to find it ;))
- Bit manipulation by Gayle Laakmann McDowell
- Tries by Gayle Laakmann McDowell
- Binary Heaps by David Scot Taylor
- Counting sort by Arjun Tyagi
- Topological sort by Tushar Roy
- Lowest Common Ancestor Binary Search Tree by Tushar Roy
- Lowest Common Ancestor Binary Tree by Tushar Roy
- Kadane’s Algorithm (Max Sum Subarray) by CS Dojo
- Huffman Coding by Barry Brown
- Error Control and CRC by Ravindrababu Ravula
- Quick Sort by Yusuf Shakeel, Quicksort algorithm by MyCodeSchool
- Rabin Karp (substring search) by Tushar Roy
- Wildcard Matching Dynamic Programming by Tushar Roy
- Edit Distance - Dynamic Programming by CSBreakdown
- Convex Hull - Graham Scan (from Algorithms, Part I) by Princeton University
- N Queen Problem (Backtracking) by Yusuf Shakeel
- Greedy Coloring Algorithm by MathAfterMath
- Graph Colouring Problem - Backtracking by CSBreakdown
- Detect a loop in a linked list (Floyd’s Algorithm) by IDeserve
- Detect Cycle in Directed Graph Algorithm by Tushar Roy
- Fractional Knapsack Problem (Greedy Algorithm) by Yusuf Shakeel
- 0/1 Knapsack Problem (Dynamic Programming) by Tushar Roy
- 0/1 Knapsack problem (Branch and Bound) (1, 2) by Vikash Kumar
- Traveling Salesman Problem Visualization by poprhythm
- Hamiltonian Cycle of a Graph using Backtracking by IITian S. Saurabh
- Traveling Salesman (Branch and Bound) by Brian Ray
Cryptography
- Diffie-Hellman Key Exchange by Art of the Problem
- Elliptic Curve Cryptography Overview by John Wagnon
- Elliptic Curve Diffie Hellman by Robert Pierce
Software Design
- Functional Programming Principles in Scala by EPFL
- Functional Program Design in Scala by EPFL
- Functional Programming in Scala Capstone by EPFL
- Functional Programming in Haskell (Russian) by Denis Moskvin
- Introduction to programming with dependent types in Scala by Dmytro Mitin
- Design Patterns (Russian) by Sergey Nemchinsky
- Clean Code: A Handbook of Agile Software Craftsmanship by Robert Martin
System Design and Scalability
- CS75 Scalability by Harvard
- System Design by InterviewBit
- HighLoad++ Junior 2016 (Russian)
- HighLoad++ 2016 (Russian) (some videos)
- Berlin Buzzwords 2017 (some videos)
- Event Sourcing, Distributed Systems & CQRS by Sebastian Daschner
Parallel Programming
- Parallel Programming (Russian) by Evgeny Kalishenko
- Parallel Programming (JVM, Scala) by EPFL
- Rationales Behind C++ Atomics (Russian) by Egor Derevenetc
- Concurrent Programming with C++11 by Bo Qian
- JavaScript Promises by Google
- SPTCC 2017 by ITMO, MIT, EPFL and others
The Rust Programming Language
English
- Easy Way to Technical Writing by Polina Gantman
- Inside IELTS: Preparing for the Test with the Experts by FutureLearn
Interview
- Cracking the Coding Interview by Gayle Laakmann McDowell
- Mastering the Software Engineering Interview by University of California
Other
- Software Processes and Agile Practices by University of Alberta
- Structure and Interpretation of Computer Programs (lectures 9A—10B) by MIT
- 97 Things Every Programmer Should Know