Links
Tooling
The operating system is a development environment.
- Minimal linux-based/FreeBSD/OpenBSD operating system
- A posix compliant shell (recommended), such as dash. Bash is good as well, albeit not stricly POSIX.
- C
- Make
- Git
- The UNIX core utilities
- tmux, mosh, vim, gdb, valgrind
Books used
- The C Programming Language K&R 2nd Edition
- Understanding and Using C pointers by Richard Reese
- Pointers on C, 1st Edition, by Kenneth Reek
- Practical C programming
- C in a nutshell
- 21st Century C
- Mastering Algorithms With C
- Numerical Recipes In C The Art Of ... 2nd edition, W. Press, S. Teukolsky, W. Vetterling, B. Flannery
- Algorithms + Data Structure = Programs
- The missing semester
Helpful External Resources
- Command line environment
- Course of Systems Programming by Notre Dame University
- Great practical ideas in Computer Science by CMU
- The UNIX philosophy
- The FreeBSD manual
- The Gentoo Handbook
- The Archwiki
- Some great Book List
- Programming Concepts to know
- Teach yourself CS
- MATLAB examples
- Diagrams of all sorts (ER, flowchart, UML)
- Minimalist graphics library
- Thinkpad wiki
- CLI design guidelines
The UNIX command line (shell scripting)
- Pure Shell Bible by Dylan Araps
- commandlinefu
- learning the shell
- Shell commands explained
- Terminals are sexy
- Various Linux tutorials
- cheat sheet shell
- cron jobs
- UNIX as IDE
Practice Regular Expressions
Latex and Markdown
- Free latex editor (although worse than the Make and Vi approach)
- Latex web editor
- Latex tutorial
- Markdown tutorial
- Latex Notes
- Handwritten formula classification to Latex
- Math Editor for Latex
- Latex AMS
- Latex AMS: short guide
- Latex to images
Make
- Makefile tutorial
- GNU Make documentation
- make
- Generic C Project template
- Simple Project Structure in C
- Simple Project Structure in Cpp
Git and Mercurial
Competitive Programming
- Learn C++
- C++ book list
- FANG interview questions
- Competitive Programmer's handbook
- Nice quora question
- Competitive programming algorithms (cp-algorithms.com)
- Programming Challenges, Skiena
- National University of Singapore book on Competitive Programming
- Practice: cses.fi
- Practice: codewars.com
- Practice: adventofcode.com
- Practice: Codeforces
- Practice: Codeforces ladder
- Practice: Project Euler
- Practice: AtCoder
- CS 97SI: Introduction to Programming Contests
Project based learning
- From the Transistor by George Hotz
- Aggregator of project tutorials
- Projects list for beginners
- Projects from Scratch
- Build your own X
- Shell
- Text Editor
- Interpreter
- Compiler
- Compiler 2
- Build System
- Database
- Building a Web Browser
- Physically based rendering book (Computer Graphics)
- Emacs
- SQLbolt
Where to find software
- Text Editors
- Suckless recommandations
- Good software according to cat-v.org
- Alternatives list
- Other list of recommandations
- Linux ricing guide
- Uses This
- Modern UNIX utilities
- "The Book of Secret Knowledge"
Java
- Which Open JDK distribution to pick up?
- Recommended JDK distribution: Amazon Corretto 8
- Maven Documentation
- Quick Maven Tutorial
- Java 8 standard API documentation
- Java 8 tutorial