Programming concepts

Programming resources #

Programming language theory #

  • Programming Concepts: Taught at UIC by John Bell, this web site contains course notes for general concepts in computer programming, independent of any particular language or implementation. Some sections contain links to language-specific implementation notes [Course]
  • Elements of programming: Decomposing programs into a system of algorithmic components [Link]
  • hacker-laws: Laws, Theories, Principles and Patterns that developers will find useful

Assembly #

Learning resources #

  • assemblyShenanigans: My attempt to teach others about microprocessors and programming in IA-32 and IA-64 assembly, and to spread the word of how awesome it is
  • assemblyTutorials: This project was put together to teach myself NASM x86 assembly language on Linux
  • optimization-manual: Contains the source code examples described in the “Intel® 64 and IA-32 Architectures Optimization Reference Manual”
  • asmdb: Instructions database and utilities for X86/X64 and ARM (THUMB/A32/A64) architectures
  • Assemblers Almanac: List of resources compiled from the Assembler’s Community server [GitLab]
  • OpenSecurityTraining Intel x86: [Link]
  • Instruction set reference
    • Intel® 64 and IA-32 Instruction Set Reference [Link]
    • X86 Opcode and Instruction Reference [Link]
  • Programmed Introduction to MIPS Assembly Language: Interactive first course in assembly language programming using the MIPS32 processor and the SPIM simulator [Link]
  • asmtutor: NASM Assembly Language Tutorials [Link]
  • Linux system call table for X86-64: [Link]
  • Learn x86-64 using Windows: [Link]
  • How to Learn x86 by Uni Of Virginia: [Link]

Tools #

  • rappel: A linux-based assembly REPL for x86, amd64, armv7, and armv8
  • ia32-doc: IA32-doc is a project which aims to put as many definitions from the Intel Manual into machine-processable format as possible

C #

Learning resources #

Learn by doing #

  • Write a Shell in C by Stephen Brennan: [Link]

Libraries and stuff #

  • STB: Single File Public Domain Libraries [GitHub]

C++ #

Learning resources #

  • CPPreference: The place to be if you need to look something up about C or C++ [Link]
  • LearnCPP: A good and extensive tutorial covering a lot of C++ features in a comprehensible way [Link]
  • The Definitive C++ Book Guide and List: StackOverflow
  • CppCon: All Cppcon talks [YouTube]
    • CppCon 2018: Matt Godbolt “The Bits Between the Bits: How We Get to main()": [YouTube]

Libraries and stuff #

  • json: Modern C++ JSON library: [GitHub]
  • Boost: Modern C++ library with lots of submodules useful for various stuff: [GitHub]

Go #

Learning resources #


Ruby #

Learning resources #


Python #

Learning Resources #


LISP #

Learning Resources #


Rust #

Learning resources #

  • rustlings: Small exercises to get you used to reading and writing Rust code!
  • rust-by-practice: Learning Rust By Practice, narrowing the gap between beginner and skilled-dev through challenging examples, exercises and projects
  • rust-cross: Everything you need to know about cross compiling Rust programs!
  • rust-ffi-examples: FFI examples written in Rust
  • min-sized-rust: How to minimize Rust binary size

Tools #

  • mrustc: Alternative rust compiler (re-implementation)

Libraries #

  • hyper: An HTTP library for Rust
  • juniper: GraphQL server library for Rust
  • actix-web: Actix Web is a powerful, pragmatic, and extremely fast web framework for Rust
  • warp: A super-easy, composable, web server framework for warp speeds.
  • reqwest: An easy and powerful Rust HTTP Client
  • iron: An extensible, concurrent web framework for Rust
  • thiserror: derive(Error) for struct and enum error types
  • rust-bindgen: Automatically generates Rust FFI bindings to C (and some C++) libraries
  • uniffi-rs: A multi-language bindings generator for Rust
  • ratatui: Rust library that’s all about cooking up terminal user interfaces (TUIs)
  • clap: A full featured, fast Command Line Argument Parser for Rust
  • rust-openssl: OpenSSL bindings for Rust
  • crossterm: Cross platform terminal library Rust
  • winapi-rs: Rust bindings to Windows API
  • curl-rust: Rust bindings to liburl
  • goblin: An impish, cross-platform binary parsing crate, written in Rust
  • malachite: An arbitrary-precision arithmetic library for Rust

Competitive Programming #

Learning Resources #


Miscellaneous #

  • Handmade.Network: Computers are amazing. So why is software so terrible?
  • free-programming-books: Freely available programming books
  • learnGitBranching: An interactive git visualization and tutorial. Aspiring students of git can use this app to educate and challenge themselves towards mastery of git!
  • regexlearn: Learn RegEx step by step, from zero to advanced.
  • Build your own X: Master programming by recreating your favorite technologies from scratch
  • Design resources for developers: Curated list of design and UI resources from stock photos, web templates, CSS frameworks, UI libraries, tools and much more
  • system-design-primer: Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards
  • free-for-dev: A list of SaaS, PaaS and IaaS offerings that have free tiers of interest to devops and infradev
  • discount-for-student-dev: This is list of discounts on software (SaaS, PaaS, IaaS, etc.) and other offerings for developers who are students

#