Computer Science and Programming
Resources include both Computer science and Computer programming and others like tools, self care, etc.
First steps
Computer Science
- CS50: Introduction to Computer Science — free course on edx, self paced. Languages include C, Python, SQL, and JavaScript plus CSS and HTML
- MIT: Introduction to Computer Science and Programming Using Python — free course on edx, self paced
- Learn Computer Science Online — Java and Kotlin, interactive, includes exercises and discussion forum
Python
- Python Programming — provided by University of Helsinki, introduction to Programming with Python, includes both text and video materials
- Think Python — gives you a solid foundation to programming, teaches debugging right the beginning, interesting exercises, etc
- Foundations of Python Programming — project based interactive course
- The Python Coding Book — friendly, relaxed programming book for beginners
- Python resources for everybody — my collection of comprehensive resources for Python
Webdev
- freeCodeCamp — JavaScript, Responsive Web Design, Libraries, etc
- The Odin Project — HTML/CSS, JavaScript, Ruby on Rails, Node.js, etc
- CS50's Web Programming — design and implementation of web apps with Python, JavaScript, and SQL using frameworks like Flask, Django, and Bootstrap
- Learn HTML and CSS and JavaScript — learn to build your very first web pages and the basics of JavaScript by solving interactive coding challenges and building fun projects
- Codepip — learn web development by playing games
Programming for kids
- Scratch Programming Playground — graphical programming environment
- Awesome Programming for Kids — curated list of resources for teaching kids programming
- Book for parents and kids — for parents who know how to code and for kids who don't, but especially for parents and kids who can spend 30 minutes per day, every day
Guides
- Teach Yourself Computer Science — Programming, Computer Architecture, Algorithms and Data Structures, Math for CS, Operating Systems, Computer Networking, Databases, Languages and Compilers, Distributed Systems
- Path to a free self-taught education in Computer Science — Introduction to Programming and Computer Science, math, tools, systems, theory, applications, security
- What every computer science major should know
- learn-anything mind maps: computer science and programming
Stories
FAQ and Tips
- How to teach yourself hard things
- Techniques for Efficiently Learning Programming Languages
- Organizational Skills Beat Algorithmic Wizardry
- Things you might encounter in your programming journey
- If you want to learn you'll need to be willing to look stupid
- What is 'foo', 'bar' and 'baz' I see in code examples?
- What is XY problem?
- What's this buzz about FizzBuzz?
Squash those pesky bugs
- english.stackexchange: Origin of "bug" in reference to software
- Rubber duck debugging
- What does debugging a program look like?
- Debugging code is like detective work
- How to debug small programs
- Problem solving skills
- Debugging guide
- stackoverflow: bug stories
FAQ on stackexchange
Given links are sorted by votes, do explore other tabs as well.
Practice makes perfect
- I know how to program, but I don't know what to program
- Curated list of Project Based Learning — web applications, bots, data science, machine learning, etc
- Build your own X — cli, database, neural network, OS, text editor, etc
- Learning by converting code from one language to another
- Write a command-line utility
Practice sites
- Exercism, Edabit — these are all beginner friendly and difficulty levels are marked
- Codewars, Adventofcode, Projecteuler — more challenging
- Checkio, Codingame, Codecombat — gaming based challenges
- Interactive learning tools — CSS, JavaScript, TypeScript, React, Python, Git, SQL, Regex and more
- /r/dailyprogrammer — not active currently, but there's plenty of past challenges with discussions
- List of Logic and Coding Games
Resource lists
- awesome-awesomeness — A curated list of awesome awesomeness
- awesome — Curated list of awesome lists
- AwesomeSearch — search awesome lists
- Curated Programming Resources — annotated list of resources
- Awesome Courses — List of awesome university courses for learning Computer Science
- List of Computer Science courses with video lectures
- Every Programmer Should Know — A collection of (mostly) technical things every software developer should know
- Professional Programming — collection of learning resources for curious software engineers
- Awesome Interviews — lists of technical interview questions
- Awesome Podcasts — Podcasts for software engineers
- Awesome Algorithms — awesome places to learn and/or practice algorithms
- Data Structure Visualizations — cs.usfca.edu, visualgo
- selfcare.tech — self-care resources for developers & others
Books
- Recommended reading for developers
- Programming book list by Dan Luu
- What Books Should Everyone Read?
- Books every software engineer should read
- Programming Language Theory books and resources
- Free programming books
Cheatsheets
- Awesome Cheatsheet — Platforms, Programming Languages, Editors, Databases, etc
- learnxinyminutes — whirlwind tour of programming languages, concepts and tools
- tldr-pages — collaborative cheatsheets for console commands
- devhints — cheatsheets for various programming languages and tools
Style guides
- Awesome Guidelines — programming style, practices, and methods for each aspect of a program
- Awesome Style Guide — Programming Languages, Architecture, Platforms, Frameworks
Toolset
IDE and Text Editors
- IDEs for various languages by Jetbrains — has both community and enterprise versions
- KDevelop — cross-platform IDE for C, C++, Python, QML/JavaScript and PHP
- VSCodium — community-driven, freely-licensed binary distribution of VSCode
- Vim, Emacs, Geany, GNOME Text Editor, Sublime Text — text editors with support for syntax highlighting and other features
- Awesome Online IDE — list of awesome online development environments
Version control
- Git — open source distributed version control system
- Collaborate: github, gitlab
- Git and GitHub curated resources
- wikipedia: Version control
Miscellaneous
- Awesome Dev Env — curated list of tools, resources and workflow tips
- free-for-dev — list of SaaS, PaaS and IaaS offerings
- Public APIs — list of free APIs for use in software and web development
- Jupyter — interactive computing across dozens of programming languages
- Compiler Explorer — interactive compiler, code to asm for various programming languages and platforms
Forums
Read instructions provided by respective forums before asking a question. Try solving it yourself before asking — searching online, reading manuals, ask a colleague, etc. See also how to ask smart-questions.
- /r/programming/ — for discussion and news about computer programming
- stackoverflow and stackexchange — for Q&As
- /r/learnprogramming/ — for Q&As and discussion, beginner friendly
- lobste.rs — computing-focused community centered around link aggregation and discussion
- /r/ProgrammerTIL/
- /r/webdev/
- /r/cscareerquestions/ — discuss careers in Computer Science, Computer Engineering, Software Engineering, and related fields