Note: explore more courses in dmitrysoshnikov.education school.
Overview lectures
- JavaScript. The Core: 2nd Edition
- JavaScript. The Core (older ES3 version)
- JS scope: static, dynamic, and runtime-augmented
Memory management
Programming Language Bundle
The bundle includes two courses related to building a programming language: Building a Parser from scratch and Building an Interpreter from scratch.Read more →
Building a Parser from scratch
Practical online course in which we build a Recursive-descent parser for a full programming language similar to JavaScript, from scratch.Read more →
– or –
|
Available coupons:
|
Course syllabus:
- Lecture 1: Tokenizer | Parser
- Lecture 2: Numbers | Strings
- Lecture 3: From State Machines to Regular Expressions
- Lecture 4: Statements and Statement list
- Lecture 5: Blocks: nested scopes
- Lecture 6: Different AST formats
- Lecture 7: Binary Expressions
- Lecture 8: Assignment Expression
- Lecture 9: Variable Statement
- Lecture 10: If-Statement
- Lecture 11: Equality | Logical
- Lecture 12: Unary Expression
- Lecture 13: Iteration Statement
- Lecture 14: Function Declaration
- Lecture 15: Member Expression
- Lecture 16: Call Expression
- Lecture 17: OOP | Classes
- Lecture 18: Final Executable
Parsing Algorithms
Online course devoted to the theory and techniques of syntactic analysis, where we build an parser for a programming language from scratch.Read more →
– or –
|
Available coupons:
|
Course syllabus:
- Lecture 1: Formal grammars, context-free
- Lecture 2: Grammar derivations
- Lecture 3: Ambiguous grammars
- Lecture 4: Syntax tool | Letter
- Lecture 5: Abstract Syntax Trees
- Lecture 6: Backtracking parser
- Lecture 7: Left-recursion and Left-factoring
- Lecture 8: Predictive Recursive descent parser
- Lecture 9: LL(1) parsing: First & Follow sets
- Lecture 10: Construction of LL(1) parsing table
- Lecture 11: LL(1) parsing algorithm
- Lecture 12: Back to practice: Statements | Blocks
- Lecture 13: Function Declarations
- Lecture 14: LR parsing: Canonical Collection of LR-items
- Lecture 15: LR parsing table: LR(0) and SLR(1)
- Lecture 16: CLR(1) and LALR(1) parsing tables
- Lecture 17: LR(1) parsing algorithm
- Lecture 18: Control structures: If-statement
- Lecture 19: Variables | Assignment
- Lecture 20: Function calls | Unary expression
- Lecture 21: Member expression | Iteration
- Lecture 22: OOP | Final parser
Building an Interpreter from scratch
Practical online course devoted to the semantics of programming languages, where we build an interpreter for a language similar to Python or JavaScript from scratch.Read more →
– or –
|
Available coupons:
|
Course syllabus:
- Lecture 1: Parsers, ASTs, Interpreters and Compilers
- Lecture 2: AST Interpreters and Virtual Machines
- Lecture 3: Compilers: AOT, JIT, Transpiler
- Lecture 4: Eva programming language
- Lecture 5: Self-evaluating expressions
- Lecture 6: Variables and Environments
- Lecture 7: Blocks: expression groups and Nested Scopes
- Lecture 8: Control flow: If and While expressions
- Lecture 9: Back to parsers: S-expression to AST
- Lecture 10: Built-in and Native functions
- Lecture 11: User-defined functions, Activation Records and Closures
- Lecture 12: Lambda functions and Functional programming
- Lecture 13: Call-stack and Recursive calls
- Lecture 14: Syntactic sugar: Switch, For, Inc, Dec operators
- Lecture 15: Object-oriented Eva: Classes
- Lecture 16: Class inheritance and Super calls
- Lecture 17: Code isolation: Modules and Imports
- Lecture 18: Final executable and further data structures
Garbage Collection Algorithms
Online course devoted to the Automatic memory management used in computer programs, know as the Garbage Collection. Read more →
– or –
|
Available coupons:
|
Course syllabus and previews:
- Lecture 1: Allocation types
- Lecture 2: Manual memory management
- Lecture 3: Object header
- Lecture 4: Virtual Memory and Memory Layout
- Lecture 5: Mutator, Allocator, Collector
- Lecture 6: Allocators: Free-list vs. Sequential
- Lecture 7: Semantic vs. Syntactic garbage
- Lecture 8: Tracing vs. Direct collectors
- Lecture 9: Mark-Sweep collector
- Lecture 10: Mark-Compact collector
- Lecture 11: Copying collector
- Lecture 12: Reference counting collector
- Lecture 13: Generational collector
- Lecture 14: Mark-Region CG: Immix collector
- Lecture 15: Parallel, Incremental, Concurrent GC
- Lecture 16: Tri-color abstraction
- Lecture 17: GC barriers
Automata: building a RegExp machine
Online course devoted to state machines, formal grammars, and regular expressions implementation, where we build a RegExp processor based on NFA and DFA. Read more →
– or –
|
Available coupons:
|
Course syllabus and previews:
- Lecture 1: RegExp history
- Lecture 2: Regular grammars
- Lecture 3: Finite Automata
- Lecture 4: Character and Epsilon NFA
- Lecture 5: Concatenation pattern: AB
- Lecture 6: Union pattern: A | B
- Lecture 7: Kleene closure: A*
- Lecture 8: Complex machines
- Lecture 9: Syntactic sugar
- Lecture 10: NFA optimizations
- Lecture 11: NFA acceptor
- Lecture 12: NFA table
- Lecture 13: RegExp-Tree tool
- Lecture 14: DFA table
- Lecture 15: DFA minimization
- Lecture 16: RegExp match
Written lectures for Finite Automata and RegExp class:
Parsing
- Syntax: language agnostic parser generator
- RegExp Tree: a regular expressions processor
- MIPS Assembly parser
- Rust LALR(1) parser generator
- hdl-js: HDL parser and Hardware simulator (online tool)
ECMA-262-3 in detail
- Chapter 1. Execution Contexts
- Chapter 2. Variable object
- Chapter 3. This
- Chapter 4. Scope chain
- Chapter 5. Functions
- Chapter 6. Closures
- Chapter 7.1. OOP: The general theory
- Chapter 7.2. OOP: ECMAScript implementation
- Chapter 8. Evaluation strategy
ECMA-262-5 in detail
- Chapter 1. Properties and Property Descriptors
- Chapter 2. Strict Mode
- Chapter 3.1. Lexical environments: Common Theory
- Chapter 3.2. Lexical environments: ECMAScript implementation
Notes
- Note 1. ECMAScript. Bound functions
- Note 2. ECMAScript. Equality operators
- Note 3. CoffeeScript. Scheme on Coffee
- Note 4. Two words about “hoisting”
- Note 5. ECMAScript: Unresolved references
- Note 6. ES6: Default values of parameters