This repository is a personal, structured training ground for key Computer Science topics, implemented hands-on in JavaScript. It covers fundamental data structures, memory management principles, asynchronous and reactive programming, functional abstractions (like monads and functors), parser combinators, and more.
Each file in this repo focuses on a particular topic from CS theory, implemented in code to reinforce conceptual understanding and algorithmic thinking.
Core Data Structures & Memory Mechanics.js
- Stack & Heap explanation with simulation
- Primitive vs reference types in memory
- Manual object lifecycle examples
- Low-level mechanics behind arrays and objects in JS
Dubly Linked List & Array Buffer.js
- Manual implementation of a doubly linked list
- Memory-efficient representation using
ArrayBufferandDataView - Binary-level memory manipulation and pointer logic in JavaScript
Container Types.js
- Implementation and distinction between Option (Maybe), Result, Either containers
- Inspired by functional programming languages like Haskell and Rust
- Examples of error handling, chaining, and immutability
Asynchronous Iterators & Generators. Reactive Programming technique.js
- Custom implementation of asynchronous iterables
- Reactive event streams and pipeline composition
for-await-of, push-pull paradigms, and operator chaining
Generators, Parsers, Parser Combinators (compositions).js
- Token stream parsing using generators
- Simple parser combinators from scratch
- Composition-first design (map, flatMap, sequence, alt)
- Great intro to building language processors or DSLs
Monads & Functors.js
- Pure JS implementation of monads, functors, and applicatives
- Identity, Maybe, IO-like examples
- Composition through
map,chain,flatMap - Comparison with traditional imperative patterns
No external dependencies are required. You can simply clone and explore the .js files.
git clone https://github.com/andreipaliy/Computer-Science-Course-Training.git
cd Computer-Science-Course-Training