: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]] WIP - [[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