Skip to content

GautierBlandin/knowledge-base

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 

Repository files navigation

Knowledge Base

I created this as a compilation of most of the self-learning I'm doing in order to provide recruiters with a clear overview of my areas of competence and other students with links to quality learning material.

Every item in the list links to the resources I used to understand it and to the notes and flashcards that I wrote for the item. If applicable, my implementations or related projects are linked too.

Philosophy


I believe that in order to solve problems efficiently, precise and detailed knowledge of the techniques and technologies available for a given propblem space is required. In the case of computer science, it means knowing both the fundamentals of software building (SOLID Principles, datastructures and algorithms, how to do good testing, design patterns...) and having an in-depth knowledge of the nitty-gritty of the syntax and the frameworks to be used.
This represents a lot of informations that needs not only to be acquired and understood, but retained over time in order to easily be able to apply them to concrete problems. This is why I dedicate time everyday to reading on and practising new skills, and also why I use modern tools (most notably RemNote) to keep remembering what I learn over time.

How I learn in practice


I learn a lot doing practical projects, which can be work projects, school projects, or personal projects. When I solve a problem using a method that I find to be interesting, or that taught me some new syntax, I make a note about it. This is how I build my knowledge about LaTeX over time, or how I learn to use programming languages such as Javascript or Python. That approach has two benefits :
  • I only learn things that I actually use, because I learn them as I go
  • I remember the skill when I need it again, so I don't have to relearn over and over again

Although practical knowledge is both important and necessary (what good is knowledge if you can't apply it?), I do believe that theory also has its place, as in a lot of situations, what you can do in practice will be limited by your knowledge about what your possibilites are. For example, you could spend your whole life writing cumbersome for-loops in javascript when you could use simpler methods such as array.map, simply because you've never read about them. This is why I spend at least one hour everyday reading material on theoretical knowledge, on a variety of subjects, such as software building fundamentals, mathematics, frameworks documentation and concepts, etc. I take notes in the form of questions/answers that enter my knowledge base and let me remember the key ideas that I've read.

Overview

Computer Science

Programming Principles
Time & Space Complexities
Datastructures
Algorithms
Graph Theory
Programming Techniques

Mathematics

Probabilities & Statistics
Linear Algebra

Web Development

Front-end development
Back-end development
NodeJs
Web Standards

Programming languages

Javascript
Typescript
Python
Markup Languages
Presentation Languages

Details

Computer Science

Programming Principles

SOLID Principles
DRY / AHA
Design Patterns

Times & Space Complexity

Datastructures

Algorithms

Sorting Algorithms

Graph Theory

Unfortunately, the main resource that I used to learn this section is a paid one, so I cannot link free resources as I do in most other sections. It is an excellent Udemy Course by William Fiset, and I can only recommend it.

Programming Techniques :

Mathematics

Probabilities & Statistics

The only resource used for this section is the excellent book Introduction to Probability by D. Bertsekas and K. Tsitsiklis which is available here. Because of that, only my notes and flashcards are going to be linked.

  • Sample Space and Probability
    • Sets
    • Probabilitic Model
    • Conditional Probabilities
    • Bernoulli trials
    • Counting
  • Discrete Random Variables
    • Basic Concepts
    • Common Discrete Random Variables
    • Expectation, Mean and Variance
    • Functions of Random Variables
    • Joint PMFs
    • Conditional PMFs
  • General Random Variables
    • Continuous Random Variables
    • Expectation and Variance
    • Common Continuous Random Variables
    • Normal Random Variable
    • Cumulative Distribution Functions
  • Further Topics on Random Variables
    • Derived Distributions
    • Convolution
    • Covariance and Correlation
    • Conditional Expectation and Variable Revisited
    • Transforms
    • Transforms of Common Random Variables
    • Sum of a Random Number of Random Variables
  • Limits Theorems
    • Bernoulli & Poisson Process
    • Markov & Chebyshev Inequalities
    • Weak Law of Large Numbers
    • Convergence of Random Variables
    • Central Limit Theorem
    • Strong Law of Large Numbers
  • Markov Chains
    • Discrete-Time Markov Chains
    • Markov Chain Decomposition
    • Steady-State Behavior
    • Absorption Probability and Expected Time to Absorption
    • Continuous Markov Chain
    • Continuous Steady State

Linear Algebra

The main resource used as of 15/02/2022 for this subsection is the book "A First Course in Linear Algebra" by Robert A. Beezer, which is downloadable for free here. Linked below are all the notes that I took and learned while reading the book.

  • Linear Equations
    • System of Linear Equations
    • Matrices Associated with a System of Equations
    • Reduced Row Echelon Form
    • Types of Solution Sets
    • Homogeneous Systems of Equations
    • Non Singular Matrices
  • Vectors
    • Vector Operations
    • Linear Combinations
    • Spanning Sets
    • Linear Independence
    • Linearly Dependent Sets, Spans
    • Orthogonality
  • Matrices
    • Definitions and Operations
    • Matrix Multiplication
    • Hermitian Matrices
    • Matrix Inverses and Systems of Linear Equations
    • Matrix Inverses and Nonsingular Matrices
    • Unitary Matrices
    • Column/Row Spaces and Systems of Equations
    • Four Natural Subsets
  • Vector Spaces
    • Vector Space Definition
    • Properties of Vector Spaces
    • Subspaces
    • Spanning Sets
    • Dimension
    • Properties of Dimension
  • Determinant
    • Elementary Matrices
  • Summary Theorem

Web Development

Front-End Development

Back-End Development

NodeJs

Web Standards

  • HTTP Codes
  • OAuth 2.0
    • (paid) Good Udemy Course on OAuth 2.0 by Aaron Parecki
    • Flashcards & Notes. They include :
      • OAuth 2.0 terminology (Resource owner, user agent, client, authorization server, resource server)
      • Confidential/Public client
      • Front channel/back channel
      • Authorization Code flow
      • Authorization Code flow for a Single Page Application
      • Json Web Token format

Programming Languages

Javascript

Typescript

Python

Markup Languages

Presentation Languages

  • LaTeX :
  • PlantUML :
    • Flashcards & Notes. They include :
      • UML Definition
      • Class diagrams definitons and PlantUML Syntax

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published