Skip to content

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

Notifications You must be signed in to change notification settings

Code-Society-Lab/resources

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

74 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

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

Name Description
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.

Programming Languages

Assembly

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.

C

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.

C++

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++.

Golang

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

Python

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

Javascript

Name Description
Learn Javascript Online Free open-source site for learning modern Javascript through lessons and practical methods

Elixir

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.

Libraries and Frameworks

Name Description
Phoenix Full-Stack Web framework
Absinthe GraphQL library

Computer Science

Data Structure

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.

Algorithms

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.

Programming Patterns and Design

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

Development

Interpreters

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

Development Tools

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

Embedded Development

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.

Web development

ย Name Description
How to GraphQL Free open source tutorial to learn GraphQL
REST API Best practices Best practices for REST API design

Software Development

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.

Other Resources

Operating Systems

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.

Databases

ย 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.

DevOps

ย Name Description
EDX Learn DevOps A site where there's a curated list of high-level courses towards DevOps that you can enroll to

ML / DL / AI

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.

About

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

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published