Skip to content

Latest commit

History

82 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Resources

A collection of resources built by members of the Code Society, now accessible as a website for a better experience.

Add an item to the list

To add an item to the list, follow this guide

Learning

NameDescription
Becoming a self-taught coder for freeComprehensive guide on how to teach yourself programming for free
Developer RoadmapsCommunity-created roadmaps, articles, resources, and journeys to help you choose your path and grow in your career.
Embedded Engineering RoadMapThis roadmap is designed to help beginners aspiring to build a career as an Embedded Engineer/Developer, as well as assist current practitioners in expanding their skills.
Open-Source RoadmapTools and resources to help you get started with open source.
What is Embedded Systems & RoadmapThis course is an hour-long presentation that dives into the details of 𝘄𝗵𝗮𝘁 𝗘𝗺𝗯𝗲𝗱𝗱𝗲𝗱 𝗘𝗺𝗯𝗲𝗱𝗱𝗲𝗱 𝗦𝘆𝘀𝘁𝗲𝗺𝘀 𝗶𝘀 𝗮𝗻𝗱 𝘁𝗵𝗲 𝗿𝗼𝗮𝗱𝗺𝗮𝗽 𝘁𝗼 𝗴𝗼𝗶𝗻𝗴 𝗮𝗯𝗼𝘂𝘁 𝗹𝗲𝗮𝗿𝗻𝗶𝗻𝗴 𝗶𝘁. The presentation is fast-paced and focused on how one can become an Embedded Systems Software Engineer.
Missing CS SemesterThe Missing Semester of Your CS Education is a free, practical course from MIT that teaches essential command-line tools, scripting, debugging, and other real-world skills often overlooked in formal computer science curricula.

Programming Languages

Assembly

NameDescription
The Netwide Assembler (NASM)Tutorial to learn NASM Assembly Language
Learn NASMThis manual documents NASM, the Netwide Assembler: an assembler targeting the Intel x86 series of processors, with a portable source.
ARM AssemblyThis resource provides exercises and lessons to introduce ARM assembly, covering key concepts and practical applications for both bare metal programming and interfacing with Linux systems.
Azeria ARM AssemblyThis ARM assembly basics tutorial series serves as a primer for ARM exploit development, covering topics like data types, registers, instruction sets, memory operations, branching, and functions, focusing on ARM 32-bit architecture and examples compiled on ARMv6.
Assembly Language Programming with ARMLearn assembly language programming with ARMv7 in this beginner's course.
Inline ASMIntroduction on how to use inline assembly language in C code.
ARM Assembly instruction SetsA completely description of the ARM ASM instruction set.

C

NameDescription
C by exampleThis guide offers a user-friendly exploration of C and C++, highlighting their features and key differences in a progressive format, serving as an introduction or refresher without substituting for an in-depth study.
C Programming A Modern ApproachA comprehensive and accessible guide that blends theory with practical examples to teach foundational concepts and advanced techniques in the C programming language.
Memory AllocationAn introduction to the basics of memory allocation.
Modern CThe C programming language, widely used in modern devices, is often misunderstood despite its ubiquity. This book aims to improve knowledge of C by organizing content into levels based on familiarity, focusing on unique C concepts and practices.

C++

NameDescription
Learn C++An easy to follow guide to starting off in C++
Core GuidelinesRecommended guidelines for modern C++
CPP ReferenceHelpful reference material for the C++ and its standard library
Modern C++The purpose of this book is to offer a quick start for modern C++. Of course, advanced readers can also use this book to review and examine themselves on modern C++.

Golang

NameDescription
Go By ExampleExplore Go, a language for fast, reliable software, through official documentation and Go by Example's hands-on programs.

Python

NameDescription
PythonPython official website
Getting startedOffical Python getting started guide
Learn PythonAn easy-to-follow guide to starting off in Python
Virtual environmentVirtual environment
Python TutorialFree open source site towards learning Python

Rust

NameDescription
Interactive Book to kearn RustInteractive book to learn about the Rust programming language.
Rust CookbookCookbook for Rust programmers, new and experienced, to learn about the Rust crate ecosystem.

Javascript

NameDescription
Learn JavaScript OnlineFree open-source site for learning modern JavaScript through lessons and practical methods

Elixir

NameDescription
ElixirElixir official website
Elixir SchoolGood starting point to learn and master Elixir
Unofficial Style guideUnofficial Elixir style guide
Code Smells in ElixirUnderstanding code smells in elixir functional language.

Libraries and Frameworks

NameDescription
PhoenixFull-Stack Web framework
AbsintheGraphQL library

Computer Science

Data Structure

NameDescription
Think Data Structure using JavaLearn Data Structure concepts such as Array, LinkeList, HasMap, etc using Java.
Open Data Structure (available in Java, C++, and Pseudocode)Open Data Structures covers the implementation and analysis of data structures for sequences (lists), queues, priority queues, unordered dictionaries, ordered dictionaries, and graphs.

Algorithms

NameDescription
Algorithms using PseudocodeThe textbook is based on lecture notes created for algorithms classes at the University of Illinois, stemming from a major revision in 2016 to adapt to changes in the undergraduate theory curriculum, particularly emphasizing fundamental content for the new required junior-level theory course.
Algorithms for Competitive ProgrammingAlgorithms for competitive programming, covering topics like data structures, sorting, searching, dynamic programming, and graph algorithms.
Algorithms for Modern Hardware“Algorithms for Modern Hardware” by Sergey Slotin is a high-performance computing book for performance engineers, algorithm researchers, and advanced computer science students.

Programming Patterns and Design

NameDescription
Game Programming PatternsUsing Games as a reference point, this ebook covers tons of useful programming patterns
Gang of Four (GoF) Design patternsDetailed description and examples of multiple design patterns
Clean CodePrincipales, patterns and practices of writing clean code
Clean ArchitectureBuilding clean software architecture
Fundamentals of Software Architecture: An Engineering ApproachLearn software architecture principles
Software Architecture: The Hard Parts: Modern Tradeoff Analysis for Distributed ArchitecturesLearn in-depth analysis of software architectures
Model-View-ControllerExplanation of the Model-View-Controller (MVC) architecture
The Non-Designer's Design BookThis book is written for all the people who need to design pages, but have no background or formal training in design.
Software Design PatternDesignPatternsMastery offers a comprehensive collection of books on software design patterns for developers and architects.
Pattern of SoftwareThe essays in this book originated as columns for the Journal of Object-Oriented Programming, modeled after Samuel Johnson’s The Rambler.
Design PatternRefactoring.Guru is a comprehensive resource that explains design patterns, refactoring techniques, and principles of clean code with clear examples and practical guidance for software developers.

Cryptography / Security

NameDescription
SHA256Algorithm.comA technical resource explaining the SHA-256 cryptographic hash algorithm, its mechanics, and applications in data security and blockchain technology.
Standford Cryptography IFree online course from Stanford University covering the inner workings of cryptographic systems, secure communication, and real-world applications.
Cryptography Course by Dan BonehFree lectures and textbook for a comprehensive cryptography course, including security proofs and exercises.

Development

Interpreters

NameDescription
Crafting InterpretersA deep dive into writing tree walking and bytecode interpreters
Make a Lisp (MAL)A step-by-step tutorial into making a list processing interpreter

Compilers

NameDescription
Basic of Compiler DesignAn introduction to compiler design by Torben Ægidius Mogensen.

Development Tools

NameDescription
GitDistributed version control system
Github for BeginnerGithub for Getting Started Guide
Git TutorialsFree open source site for learning Git basics and advanced patterns
Modern CMakeModern CMake is a clean, powerful, and elegant solution to many build system problems, allowing developers to focus on coding rather than dealing with unmaintainable build files.

Embedded Development

NameDescription
Embedded Systems SecurityEmbeddedSecurity.io provide a beginners resource on embedded systems security
Putting the “You” in CPUCurious exactly what happens when you run a program on your computer? Read this article to learn how multiprocessing works, what system calls really are, how computers manage memory with hardware interrupts, and how Linux loads executables.
Practical Guide to Bare Metal C++This document introduces several concepts that can be used in bare-metal development, as well as shows how they can be implemented using features of the latest (at the time of writing) C++11 standard.
Bare-metal C programming on ARMThis ebook is aimed at people who have an interest in low-level programming and in seeing how to build a system from the ground up. Topics covered include system startup, driver development, and low-level memory management.
Intro to ARM Cortex-MAn introduction to ARM Cortex-M controllers, covering their key characteristics, advantages, and applications. Followed by a comprehensive overview of the programmers' model.
RTEMSThe document presents RTEMS features, installation, and example application building.

Web development

 NameDescription
How to GraphQLFree open source tutorial to learn GraphQL
REST API Best practicesBest practices for REST API design
The Copenhagen BookThe Copenhagen Book is a free, open-source guide for implementing authentication in web applications.

Software Development

NameDescription
How to build good softwareA guide to building good software
Professional Software DevelopmentAlmost everything you’ll need to know to “hit the ground running.”
What every CS major should knowA guide to the basics of computer science
About Warning & UndoNever use a warning when you mean undo, a guide to error handling
Free Software, Free SocietyA collection of writings essays by Richard Stallman. It introduces the subject of the history and development of the GNU Project and the Free Software Foundation, explains the author's philosophical position on the Free Software movement, and deals with the topics of software ethics, copyright, and patent laws, as well as business practices in application to computer software.
Element of ProgrammingThis book applies the deductive method to programming, presenting mathematical theories, algorithms, and theorems. It emphasizes the importance of precise code for computers and is intended for those seeking a deeper understanding of programming.
Coding and Comment StyleThe MIT Communication Lab’s "Coding and Comment Style" page provides guidelines for writing clear, maintainable code by emphasizing thoughtful naming, structure, and context, and advises using comments only to add necessary context or explain non-obvious choices

Other Resources

Operating Systems

NameDescription
RTOSHow-to articles about using real-time operating systems in embedded systems.
ZephyrOSThe Zephyr OS is based on a small-footprint kernel designed for use on resource-constrained and embedded systems: from simple embedded environmental sensors and LED wearables to sophisticated embedded controllers, smart watches, and IoT wireless applications.
FreeRTOSA free-use Real Time Operating system widely used and supports many platforms.
FreeRTOS on STM32Getting started with FreeRTOS in STM32 with Code Examples.
Operating Systems: Three Easy PiecesThe book is centered around three conceptual pieces that are fundamental to operating systems: virtualization, concurrency, and persistence.

Databases

 NameDescription
SQL BoltFree open source site towards learning SQL
PostgreSQLThe World's Most Advanced Open Source Relational Database.
ITTIA Embedded SQLThe ITTIA DB SQL™ documentation provides how-to guidance and reference information for embedded systems to stream, manage, and analyze data, with an emphasis on time series. This documentation is for software developers who seek to embed a silent database inside applications.

DevOps

 NameDescription
EDX Learn DevOpsA site where there's a curated list of high-level courses towards DevOps that you can enroll in

ML / DL / AI

NameDescription
Learn DeeplearningFree open source blog style tutorial on Deeplearning
Deep Learning for Coders with Fastai and PyTorchA free book (supplement for the below course) designed for people with some coding experience, who want to learn how to apply deep learning and machine learning to practical problems.
Practical Deep LearningA free course designed for people with some coding experience who want to learn how to apply deep learning and machine learning to practical problems.
Learn Machine LearningA free 10-hour machine learning course for beginners on the freeCodeCamp.org YouTube channel.

Engineering

NameDescription
Shape UpShape Up will help you break free of “best practices” that aren’t really working, think deeper about the right problems, and start shipping meaningful projects your team can celebrate.
Build your Virtual MachineTutorial on writing a virtual machine to run assembly language programs for a deeper understanding of computers and programming languages.
Probability for Computer ScienceChris Piech wrote this book for Stanford’s CS109 course, Probability for Computer Scientists, originally designed by Mehran Sahami.

About

A collection of resources for various programming and software development subjects!

Resources

Contributing

Stars

7 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages