A collection of resources built by members of the Code Society, now accessible as a website for a better experience.
To add an item to the list, follow this guide
| Name | Description |
|---|---|
| Becoming a self-taught coder for free | Comprehensive guide on how to teach yourself programming for free |
| Developer Roadmaps | Community-created roadmaps, articles, resources, and journeys to help you choose your path and grow in your career. |
| Embedded Engineering RoadMap | This 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 RoadMap | Tools and resources to help you get started with open source. |
| What is Embedded Systems & RoadMap | This 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. |
| Name | Description |
|---|---|
| The Netwide Assembler (NASM) | Tutorial to learn NASM Assembly Language |
| Learn NASM | This manual documents NASM, the Netwide Assembler: an assembler targeting the Intel x86 series of processors, with a portable source. |
| ARM Assembly | This 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 Assembly | This 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 ARM | Learn assembly language programming with ARMv7 in this beginner's course. |
| Inline ASM | Introduction on how to use inline assembly language in C code. |
| ARM Assembly instruction Sets | A completely description of the ARM ASM instruction set. |
| Name | Description |
|---|---|
| C by example | This 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 Approach | A comprehensive and accessible guide that blends theory with practical examples to teach foundational concepts and advanced techniques in the C programming language. |
| Memory Allocation | An introduction to the basics of memory allocation. |
| Modern C | The 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. |
| Name | Description |
|---|---|
| Learn C++ | An easy to follow guide to starting off in C++ |
| Core Guidelines | Recommended guidelines for modern C++ |
| CPP Reference | Helpful 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++. |
| Name | Description |
|---|---|
| Go By Example | Explore Go, a language for fast, reliable software, through official documentation and Go by Example's hands-on programs. |
| Name | Description |
|---|---|
| Python | Python official website |
| Getting started | Offical Python getting started guide |
| Learn Python | An easy-to-follow guide to starting off in Python |
| Virtual environment | Virtual environment |
| Python Tutorial | Free open source site towards learning Python |
| Name | Description |
|---|---|
| Interactive Book to kearn Rust | Interactive book to learn about the Rust programming language. |
| Rust Cookbook | Cookbook for Rust programmers, new and experienced, to learn about the Rust crate ecosystem. |
| Name | Description |
|---|---|
| Learn Javascript Online | Free open-source site for learning modern Javascript through lessons and practical methods |
| Name | Description |
|---|---|
| Elixir | Elixir official website |
| Elixir School | Good starting point to learn and master Elixir |
| Unofficial Style guide | Unofficial Elixir style guide |
| Code Smells in Elixir | Understanding code smells in elixir functional language. |
| Name | Description |
|---|---|
| Phoenix | Full-Stack Web framework |
| Absinthe | GraphQL library |
| Name | Description |
|---|---|
| Think Data Structure using Java | Learn 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. |
| Name | Description |
|---|---|
| Algorithms using Pseudocode | The 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 Programming | Algorithms 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. |
| Name | Description |
|---|---|
| Game Programming Patterns | Using Games as a reference point, this ebook covers tons of useful programming patterns |
| Gang of Four (GoF) Design patterns | Detailed description and examples of multiple design patterns |
| Clean Code | Principales, patterns and practices of writing clean code |
| Clean Architecture | Building clean software architecture |
| Fundamentals of Software Architecture: An Engineering Approach | Learn software architecture principles |
| Software Architecture: The Hard Parts: Modern Tradeoff Analysis for Distributed Architectures | Learn in-depth analysis of software architectures |
| Model-View-Controller | Explanation of the Model-View-Controller (MVC) architecture |
| The Non-Designer's Design Book | This book is written for all the people who need to design pages, but have no |
| background or formal training in design. | |
| Software Design Pattern | DesignPatternsMastery offers a comprehensive collection of books on software design patterns for developers and architects. |
| Pattern of Software | The essays in this book originated as columns for the Journal of Object-Oriented Programming, modeled after Samuel Johnson’s The Rambler. |
| Name | Description |
|---|---|
| Crafting Interpreters | A deep dive into writing tree walking and bytecode interpreters |
| Make a Lisp (MAL) | A step-by-step tutorial into making a list processing interpreter |
| Name | Description |
|---|---|
| Basic of Compiler Design | An introduction to compiler design by Torben Ægidius Mogensen. |
| Name | Description |
|---|---|
| Git | Distributed version control system |
| Github for Beginner | Github for Getting Started Guide |
| Git Tutorials | Free open source site for learning Git basics and advanced patterns |
| Modern CMake | Modern 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. |
| Name | Description |
|---|---|
| Embedded Systems Security | EmbeddedSecurity.io provide a beginners resource on embedded systems security |
| Putting the “You” in CPU | Curious 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 ARM | This 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-M | An introduction to ARM Cortex-M controllers, covering their key characteristics, advantages, and applications. Followed by a comprehensive overview of the programmers' model. |
| RTEMS | Document presents RTEMS features, installation, and example application building. |
| Name | Description |
|---|---|
| How to GraphQL | Free open source tutorial to learn GraphQL |
| REST API Best practices | Best practices for REST API design |
| The Copenhagen Book | The Copenhagen Book is a free, open-source guide for implementing authentication in web applications. |
| Name | Description |
|---|---|
| How to build good software | A guide to building good software |
| Professional Software Development | Almost everything you’ll need to know to “hit the ground running.” |
| What every CS major should know | A guide to the basics of computer science |
| About Warning & Undo | Never use a warning when you mean undo, a guide to error handling |
| Free Software, Free Society | A 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 Programming | This 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. |
| Name | Description |
|---|---|
| RTOS | How-to articles about using real-time operating systems in embedded systems. |
| ZephyrOS | The 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. |
| FreeRTOS | A free-use Real Time Operating system widely used and supports many platforms. |
| FreeRTOS on STM32 | Getting started with FreeRTOS in STM32 with Code Examples. |
| Operating Systems: Three Easy Pieces | The book is centered around three conceptual pieces that are fundamental to operating systems: virtualization, concurrency, and persistence. |
| Name | Description |
|---|---|
| SQL Bolt | Free open source site towards learning SQL |
| PostgreSQL | The World's Most Advanced Open Source Relational Database. |
| ITTIA Embedded SQL | The 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. |
| Name | Description |
|---|---|
| EDX Learn DevOps | A site where there's a curated list of high-level courses towards DevOps that you can enroll to |
| Name | Description |
|---|---|
| Learn Deeplearning | Free open source blog style tutorial on Deeplearning |
| Deep Learning for Coders with Fastai and PyTorch | A 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 Learning | A 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 Learning | A free 10-hour machine learning course for beginners on the freeCodeCamp.org YouTube channel. |
| Name | Description |
|---|---|
| Shape Up | Shape 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 Machine | Tutorial on writing a virtual machine to run assembly language programs for a deeper understanding of computers and programming languages. |
| Probability for Computer Science | Chris Piech wrote this book for Stanford’s CS109 course, Probability for Computer Scientists, originally designed by Mehran Sahami. |