Home - alexanderteplov/computer-science GitHub Wiki
Welcome
These comprehensive notes try to cover a wide area of computer science knowledge related to the Front-end.
Table of contents
Programming Paradigms
- OOP principles, pros/cons
- Functional programming pros/cons
- Functional Programming vs OOP paradigms, composition over inheritance
- Reactive programming pros/cons
Communication Protocols
- OSI Model
- ARP
- IP
- TCP and UDP
- HTTP (1.0,1.1,2,3), HTTPS
- WebSockets vs Polling
- REST
- API Documentation(Swagger, Open API, Postman)
- IPC, RPC, JSON-RPC, gRPC (protobuf)
- GraphQL
Security Basics
Performance Optimizations
- Critical Rendering Path (how the browser renders page)
- High performant animations
- Layout thrashing
- RAIL Model
- PRPL pattern
- Core Web Vitals (performance metrics)
- Performance measurement and profiling
- Network optimizations
- Web workers, Service workers, Worklets
- Memory leaks detection
- V8 hidden classes and inline caching techniques
- Event Loop
Web App Design and Framework
- SPA vs MPA pros/cons
- SSR vs CSR pros/cons
- Micro-frontends
- Monorepos
- PWA
- CSS methodologies
- Angular vs React
- How to choose next project framework?
React framework deep dive
- React Lifecycle
- React Patterns
- State management with React
- React Reconciliation algorithm
- React Fiber
- React application performance
JavaScript
Architecture
- What is Software Architecture?
- SOLID
- Separation of concerns
- Principle of Least Knowledge
- DRY
- KISS
- YAGNI
Patterns
Code quality
- Code quality
- Quality ladder
- Technical debt
- Common types of testing
- Testing pyramid
- F.I.R.S.T.
- Test coverage
- TDD vs BDD
- Snapshot testing
- Code smells