Real-Time Backend
We created this program for those of you, who want to learn how to work with large amounts of information in real-time.
During the first semester, we focus on the essential fundamentals, such as basic concepts of math and programming, which are the same for all programs.
In the Math & Statistic course, students will learn about discrete mathematics and the basics of probability theory. Algorithms & Data Structures covers the basic algorithms on graphs, data structures, and recurrence relations. Also, during the first semester, students learn how to process and analyze data, and build simple models based on this data in the Data Science course. In the Advanced Programming Languages course, students will learn about programming languages and their fundamental differences.
During the second semester, in the Operating Systems course, students will learn about various operating systems and their features. Networks & Clouds course goes over the basics of networking and security. The Systems Architecture course will cover the features of system architecture for different operating systems.
Real-Time Backend is the major course of this program, where students will be offered a real-life project example to work with a large amount of data.
Semester 1
Math & Statistics
Number theory
Sets, functions, and sequences
Logic
Induction
Sequences
Combinatorics
Relations
Recurrence relations
Graphs (basics)
Counting techniques
Graphs and Numbers
Growth of Functions
The probability of an Event
Conditional probability
Discrete Random Variables
Continuous probability
Sampling Theory
Statistics
Algorithms and Data Structures
Graphs (basics)
BFS and DFS
Dynamic Programming
LIS, LCS and other 2D problems
Heaps
Dijkstra, Floyd, Bellman-Ford
DFS applications
Knapsack problem
Dynamic programming over subsets
Amortized Time Complexity (Queue via Stack)
Disjoint Set Union
Dynamic programming on a tree
Minimum Spanning Trees
Matching
Segment Trees
Binary Search Trees
LCA
What is NP and how is it useful?
Strings
Data Science
Basic tools for data analysis
Simple data collection and analysis
Data Types in Statistics
Visualization
Stat in Data Science
Probability and its applications
Estimation, Confidence Intervals
Hypothesis testing
Correlation and Dependence
Regression
Generalized linear model
Feature engineering (Linear Regression Deep Dive)
Decision Trees
ANOVA
Advanced Programming Languages
Grammars, Regular Expressions, Backus-Naur Form
Computation Models
Functional Programming
Clojure Programming Language (Basics, Concurrency, Actors, Refs, Atoms, Macros)
Compiling and linking
Monads
Custom hierarchies and multimethods in Clojure
Logical Programming
Prolog
LLVM (basics, garbage collection)
Constraint Programming
MiniZinc
Guiding the Search in Constraint Programming
Data Oriented Programming
Data storage and querying in XML ecosystem
Semester 2
Networks & Clouds
OSI, analogues, comparison
Data layers of OSI, REST/RPC/SOAP/GraphQL, solutions for this levels
SSH, Telnet, working remotely, solving OverTheWire: Bandit
Media layers
Clouds
Containerization
IoT, smart home, zigbee/bluetooth, wifi, making smart home ourselves
Systems Architecture
C++ - syntax, OOP basics, UB, numbers
RUST - syntax, programming paradigms, safe/unsafe, comparison with C++
Memory allocation, caching algorithms
Memory (its components), cache-friendly algorithms
Assembler (Instructions, RISC, CISC, x86, Intel, asm basics)
Syscalls
Processes, Scheduling
Threads, mutexes, condvars, atomics
Verilog
System limits - rlimit, cgoups, Linux namespaces, seccomp
Real-Time Backend (Architecture)
CAP. MapReduce
Storage. GFS
RPC. Models. Fault tolerance
Physical & logical time, clocks, ordering of events
Broadcast protocols
Consensus and transactions in distributed systems
Election
Consensus
FLP theorem
Raft algorithm
State machine replication
Distributed transactions
Atomic commit protocols
2-phase commit
Distributed File System (DFS)
Industrial Systems Design & System Design. Principles and main concepts. Technology overview
TinyUrl/Pastebin Design Design of industrial systems
Netflix/Youtube architecture
Development of a group project together with a team from the Real-Time Frontend specialty
Operating Systems
UNIX Filesystem basics
Processes and signals
Permissions, ownership, setuid executables
Basics of Bash scripting language
System calls
Usage of system calls in C language
Fork/exec technique
Signal handing in C
Virtual memory
chroot, Linux namespaces and containers
Sockets
Operating system internals