:PROPERTIES:
:ID:       22737796-6D31-49D5-84F2-F7BC73E45144
:END:
#+title: Concepts
#+filetags: :technical:concepts:

In this node lies notes relating to theoretical concepts tying with maths and/or computer science. I will need to find a way to categorise different notes, but it's a wip.

* Mathematical Concepts

Part of being a software engineer is having a good grasp of mathematical concepts. Here are some notes on various mathematical concepts that I find useful.

- [[id:F32F8F09-3DEC-4FD1-8CFA-401A316E906B][XOR]]

* Core Programming Concepts

- [[id:6820973F-613E-441A-BC1D-8FE5CD9BD6F7][Solid Principles]]

- [[id:275988a8-59d8-40c8-a8b4-47118d6eb834][Big O Notation, Time and Space Complexity]]

- [[id:631b2086-4b8f-4fe3-829d-be1dc014e293][Design patterns]] 

- [[id:49b195c8-e116-40ca-86e8-62c65dbb5a4f][API Architecture]] WIP

Some core programming concepts that are essential for software development. The things I need to add here are:

* Concepts to learn and talk about (cs and maths)
- +xor+
- +big O notation+
- +time complexity+
- +space complexity+
- data structures
- algorithms
- design patterns
- functional programming
- object-oriented programming
- relational databases vs non-relational databases
- networking basics
- operating systems fundamentals
- concurrency and parallelism
- software development methodologies (Agile, Scrum, etc.)
- version control systems (Git, etc.)
- testing methodologies (unit testing, integration testing, etc.)
- security best practices
- cloud computing basics
- containerization (Docker, Kubernetes, etc.)
- DevOps practices
- CI/CD pipelines
- microservices architecture
- API design and development
- web development fundamentals (HTML, CSS, JavaScript)
- mobile app development basics
- machine learning basics
- data science fundamentals
- big data concepts
- blockchain basics
- cryptography fundamentals
- user experience (UX) design principles
- software architecture patterns (MVC, MVVM, etc.)
- debugging techniques
- performance optimization strategies
- software documentation best practices
- ethical considerations in software development
- emerging technologies in software development
- career development in software engineering
- soft skills for software engineers (communication, teamwork, etc.)
- project management basics for software projects
- open source contribution best practices
- remote work best practices for software engineers
- continuous learning strategies for software engineers
- data types
- bytes and bits
- number systems (binary, decimal, hexadecimal)
- logic gates
- set theory
- graph theory
- combinatorics
- probability theory
- statistics
- linear algebra
- calculus
- discrete mathematics
- compilers
- interpreters
- automata theory
- formal languages
- Turing machines
- computability theory
- MVPs and MVTs
  
