Nomi / CS-Learning-Resources

My curated list of resources for learning materials for Computer Science.
0 stars 0 forks source link

Computer Science Learning Resources

My curated list of Computer Science learning resources. [ Note (after writing more than half of the layout): I probably should've just used latex to avoid the numbering. :'( ]

Table of Contents (WORK IN PROGRESS / tbd / broken)

Title Subsections
1 General Course Websites
2 tbd
3 Programming Languages, Frameworks, and Technologies

0 - Similar Resources

  1. r/learnprogramming (reddit) FAQ: Includes a list similar to this one.
  2. Michael0x2a's Curated Programming Resources (GitHub): A list similar to this list.

1 - General Resources

1.1 - Practice\Exercise Resources

  1. Exercism - "A great site for learning any of 59 different programming languages, all for free. Some languages have more, longer and better tutorials than other languages, but at least the main languages are pretty filled. The learning is challenge-focused, which each lesson being a certain topic (e.g. "Tuples" or "Expression Bodied Members", and then you have to write functioning code using it to pass to more advanced lessons." - From a Reddit thread "Exercism is great, I recommend it for new starts at my company for learning golang." - Also from a Reddit Thread

    1.2 - Courses

    Free:

  2. The Odin Project: Full-Stack Web Development.

    Paid:

  3. Fireship
  4. tbd: tbd

2 - Design Patterns, Refactoring, Programming Principles, etc.

Free:

  1. Refactoring Guru: Refactoring, Design Patterns, SOLID principles, and other smart programming topics. {I recommend.}

  2. A Solid Guide to SOLID Principles | Baeldung

  3. TDD (Test Driven Development) | AgileAlliance: (probably should've been in the Project Management and Development Methodologies section)

  4. DRY (Don’t Repeat Yourself) Principle in Java with Examples - GeeksforGeeks

  5. What are microservices?: Microservices Architecture

  6. Basic Principles of OOPS (Object-Oriented Programming) - InterviewBit

  7. The Interpreter Pattern Revisited - YouTube

  8. Strategy Pattern | Set 1 (Introduction) - GeeksforGeeks

Paid:

  1. tbd: tbd

3 - Programming Languages, Frameworks, and Technologies

Programming and scripting languages, Markup languages etc.*

3.1 - C# (.NET)

A.K.A. C Sharp.

3.1.1 Interview Resources

  1. tbd: tbd

    3.1.2 Learning Materials

    Free:
  2. C# docs - get started, tutorials, reference. | Microsoft Learn

  3. .NET documentation | Microsoft Learn: (Covers what .NET Framework and .NET Core concepts. They are now both combined and simply called .NET)

  4. Entity Framework documentation hub | Microsoft Learn

  5. ASP.NET Core Blazor | Microsoft Learn

  6. Nick Chapsas' YouTube Channel: He makes some great, informative videos on various topics such as C#, .NET, etc. Some quite advanced. I recommend periodically checking up because he also covers new features in new releases and shares some nifty tips. {I recommend.}

  7. Restful API In .NET Core Using EF Core And Postgres (c-sharpcorner.com): A tutorial (the title explains what it is about).

  8. Building REST APIs with .NET 5, ASP.NET Core, and PostgreSQL | End Point Dev: Tutorial for what the title says.

  9. Tim Corey's YouTube Playlists: Teaches various topics such as .NET (WebAPIs), Blazor, etc. Recommend starting here: Start Here - YouTube (Seems to be more beginner friendly).

  10. Implementing the Repository and Unit of Work Patterns in an ASP.NET MVC Application (9 of 10) | Microsoft Learn

  11. Note from Reddit about starting a C# web development career

  12. TimCo Retail Manager Course Introduction - A full start to finish course - YouTube

Paid:
  1. Courses by Nick Chapsas - Dometrain

  2. tbd: tbd

3.2 - C++ (incl. STL, Boost, etc.)

3.2.1 Interview Resources

  1. tbd: tbd

    3.2.2 Learning Materials

  2. cppreference.com: Almost like C++ documentation. {I recommend.}

  3. The C++ Annotations (rug.nl): Not for beginners, but a good resource for those who know a few things about programming (in a C-like language). [Some topics included are: STL (Standard Template Library), Multi-threading, etc.] {I recommend.}

  4. Boost C++ Libraries - Documentation: Documentation for the nifty collection of libraries called "Boost". This probably isn't something you should learn, but instead keep it in mind and then use the relevant parts as needed whenever (and if ever) you end up needing to use one of the libraries included in Boost. The number and topics of the libraries are truly vast (from multi-threading to arbitrary precision arithmetic and so on). {I recommend.}

  5. The Cherno (YouTube): One of the best C++ teachers. I have learned the most nifty tricks from there. (Includes related topics such "Dear ImGUI", GameDev, Game Engine Dev, and general CS concepts). {I recommend.}

  6. (r/learnprogramming (reddit) - C++ FAQ

  7. https://learncpp.com/

  8. The C++ Standard Template Library (STL) (geeksforgeeks)

  9. https://www.gamedesigning.org/learn/c-plus-plus/

  10. C9 Lectures: Stephan T. Lavavej - Standard Template Library (STL) | Microsoft Learn

  11. C++ FAQ - The Definitive C++ Book Guide and List - Stack Overflow

  12. Stroustrup's FAQ section on learning C++

  13. NOTE: a note regarding the fitness of refactoring guru for C++ (the gist of it: it's mostly good, but at least the templates section doesn't mention concept of C++ templates at all).

3.3 - C

  1. tbd: tbd

    3.4 - Python

  2. tbd: tbd

  3. ArjanCodes - YouTube: Saw it being recommended online.

  4. tbd: tbd.

    3.5 - JavaScript and TypeScript (incl. nodejs/node.js, express, etc.)

    3.5.1 Interview Resources

  5. tbd: tbd

    3.5.2 Learning Materials

  6. JavaScript | MDN (mozilla.org)

  7. Miss Xing - YouTube: Teaches Spring, Hibernate, MongoDB, JavaScript, Node.js, Express, Mongoose, and MORE. Also saw it being recommended by someone over at Reddit for Spring Boot (link to thread)).

  8. tbd: tbd

    3.6 - Rust

    Free:

  9. Rust Documentation (rust-lang.org): The official documentation for Rust. Contains knowledge not only about Rust language but also about a vast array of related topics such as Cargo, rustdoc (their documentation tool), rustc (compiler), etc. It also contains references and such for the Rust language apart from the book meant to learn Rust. It is THE One-stop shop for Rust. {I recommend.}

  10. Rust exercises (on Exercism.com): Exercises for Rust language.

3.Jon Gjengset - YouTube: Saw him being recommended online. Particularly, the course/playlist linked was -Crust of Rust - YouTube. Apparently, "John Gjengset’s Rust videos are fantastic for learning about intermediate-advanced Rust concepts." and "John Gjengset’s Rust videos are fantastic for learning about intermediate-advanced Rust concepts.".

  1. mre/idiomatic-rust: 🦀 A peer-reviewed collection of articles/talks/repos which teach concise, idiomatic Rust. (github.com)

  2. Let's Get Rusty's Cheat Sheet: Cheat sheet created by a YouTuber "Let's Get Rusty". Not sure about how good it is, just know that it exists and seems useful/nifty (only had one glance at it).

  3. tbd: tbd

Paid:

  1. Rust in Action: Seems to be recommended because of its projects (e.g. CPU emulator, OS kernel, grep clone, memory scanner, DNS resolver, etc.)

    3.7 - Kotlin (Android dev, Spring, SpringBoot, etc.)

  2. Get started with Kotlin | Kotlin Documentation (kotlinlang.org): Official docs. Apart from just the language itself, it also includes tutorials for Spring, SpringBoot, Android/iOS dev, etc.

  3. Learning materials overview | Kotlin Documentation (kotlinlang.org)

  4. Learn Kotlin for Android Development

  5. Kotlin for C# Developers: CodeMash | Pluralsight

  6. Spring Boot Reference Documentation

  7. Spring Framework Documentation :: Spring Framework

  8. tbd: tbd

    3.8 - Java (incl. Spring, SpringBoot, Hibernate, etc.)

  9. Note from Reddit about best ways to learn Java

  10. Spring Boot Reference Documentation

  11. Spring Framework Documentation :: Spring Framework

  12. Spring Tutorial | Baeldung

  13. Learn Spring Boot | Baeldung

  14. Amigoscode - YouTube: Teaches Java, Python, Spring, Spring Boot, Algorithms, Microservices, Kubernetes, Postgre, etc. Saw it being recommended by someone over at Reddit for Spring Boot (link to thread)).

  15. Miss Xing - YouTube: Teaches Spring, Hibernate, MongoDB, JavaScript, Node.js, Express, Mongoose, and MORE. Also saw it being recommended by someone over at Reddit for Spring Boot (link to thread)).

  16. Chad Darby | Popular Java Spring Instructor - Best Seller | Udemy: Seems like his course(s) for Spring, Hibernate, and Spring Boot course is regarded pretty well (especially for beginners). At least in one of the Reddit threads I researched. (Paid though) Link to said Reddit thread

  17. Learn Java (reddit.com): Look at the "Free Tutorials" sidebar and the "Community Resources" thread.

3.9 - XML, YAML, JSON, etc.

  1. tbd: tbd

4 - Purely UI Framworks [GUI/Frontends]

4.1 - Dear ImGUI (C++)

  1. Dear ImGUI - GitHub Repository (includes Docs and examples)

  2. Make your own GUI apps in C++ (with ImGui and Vulkan) - on The Cherno's YouTube channel: Uses ImGUI, Vulkan, and Walnut.

  3. Make your own GUI apps in C++ (with ImGui and Vulkan) - on The Cherno's YouTube channel

  4. The Cherno (YouTube)

4.2 - Qt

  1. tbd: tbd

    4.3 - WinForms, WinAPI, WPF, etc.

  2. tbd: tbd

    4.4 - HTML and CSS, etc.

  3. MDN Web Docs (mozilla.org)

  4. tbd: tbd

    4.5 - React

  5. MDN Web Docs (mozilla.org)

  6. tbd: tbd

    4.6 - ReactNative

  7. MDN Web Docs (mozilla.org)

  8. tbd: tbd

5 - Database

5.1 - Relational/SQL Databases

5.1.1 - Non-specific resources:

  1. tbd: tbd

  2. Databases | Course | Stanford Online

  3. tbd: tbd

    5.1.2 - MS SQL Server

  4. tbd: tbd

    5.1.3 - PostgreSQL

  5. PostgreSQL: Tutorials & Other Resources: Various resources (and various types of resources). Would recommend AT LEAST checking it out. {I recommend.}

  6. tbd: tbd

  7. Amigoscode - YouTube: Teaches Java, Python, Spring, Spring Boot, Algorithms, Microservices, Kubernetes, Postgre, etc. Saw it being recommended by someone over at Reddit for Spring Boot (link to thread)).

  8. tbd: tbd

5.1.4 - SQLite

5.2 - NoSQL Databases

5.2.1 - Non-specific resources:

  1. tbd: tbd

    5.2.2 - MongoDB

  2. tbd: tbd

  3. Miss Xing - YouTube: Teaches Spring, Hibernate, MongoDB, JavaScript, Node.js, Express, Mongoose, and MORE. Also saw it being recommended by someone over at Reddit for Spring Boot (link to thread)).

  4. 5.3 - NewSQL???

  5. tbd: tbd

6 - Other Technical Programming Topics

6.1 - POSIX/Linux/Unix Programming

(should I just use the language specific pages for this???)

  1. tbd: tbd

    6.2 - Embedded Systems

    (should I just use the language specific pages for this???)

  2. tbd: tbd

    6.3 - DevOps and related things

    6.3.1 - GitHub Actions

  3. tbd: tbd

    6.3.2 - Docker and Kubernetes

  4. Docker Docs: How to build, share, and run applications | Docker Documentation

  5. Kubernetes Documentation | Kubernetes

  6. Amigoscode - YouTube: Teaches Java, Python, Spring, Spring Boot, Algorithms, Microservices, Kubernetes, Postgre, and MORE. Saw it being recommended by someone over at Reddit for Spring Boot (link to thread)).

  7. (1) What are some really good courses for Docker & Kubernetes? : devops (reddit.com)

  8. tbd: tbd

6.3.3 - CI/CD

  1. tbd: tbd

    6.3.4 - Other DevOps

  2. tbd: tbd

    6.4 - Computer Vision and Image Processing

    (including related AI concepts)

  3. tbd: tbd

    6.5 - Natural Language Processing

    (including related AI concepts)

  4. tbd: tbd (NLTK book?, affine?)

    6.6 - Artifical Intelligence (AI)

    (excluding AI concepts mentioned elsewhere in this section)

  5. Stanford CS229: Machine Learning Course, Lecture 1 - Andrew Ng (Autumn 2018) - YouTube
  6. tbd: tbd

    6.7 - Cloud

    6.7.1 - Microsoft Azure

  7. tbd: tbd

    6.7.2 - Amazon Web Services (AWS)

  8. tbd: tbd

7 - Documentation Tools

7.1 - Doxygen (C++/C, etc.)

(Main: C++ | Others: C, Objective-C, C#, PHP, Java, Python, Fortran)

  1. tbd: tbd

    7.2 - JSDoc (JavaScript)

    (JavaScript)

  2. tbd: tbd

    7.3 C# XML Documentation

    (C#)

  3. tbd: tbd

    7.4 Docstrings (Python)

    (Python)

  4. Python Docstrings (With Examples) (programiz.com)
  5. tbd: tbd

8 - Compilation, etc.

8.1 - Compilation Helper Tools:

8.1.1 - Makefile

  1. tbd: tbd

    8.1.2 - CMake

  2. tbd: tbd

    8.2 - Compilers

    8.2.1 - C/C++

  3. tbd: tbd(guides and stuff about clang, gcc, etc. (e.g. clang vs gcc), cross-compilation, etc.)

    8.3 - Misc.

    8.3.1 - General Compilation principles

  4. tbd: tbd(jit? jvm? llvm?)

9 - Debugging, Performance Profiling, etc.

(Is this section even needed????)

9.1 - C/C++

  1. tbd: tbd (valgrind, gdb, other c++ tools, etc.?)

    9.2 - C

  2. tbd: tbd

10 - Git (VCS)

10.1 - git

  1. Git - Documentation (git-scm.com): Official Git documentation.

  2. Pro Git official book (git-scm.com)

  3. Git workflow. Branch Naming conventions | by Codylillyw | Medium

  4. Oh My Git!: A Git based video game to help practice Git. {I recommend.}

  5. Learn Git Branching: An interactive online tool to help you practice/learn git branching. {I recommend.}

  6. Foundations | The Odin Project: Just the "Git Basics" section {I recommend.}

10.2 - GitHub specific things

  1. tbd: tbd

11 - [Tools] Operating Systems (incl. shell scripting, etc.)

11.1 - Linux

  1. tbd: tbd (archlinux, man pages,etc??)

    11.2 - Windows

  2. tbd: tbd

12 - [Tools] Editor/IDE

12.1 - VSCode

12.1.1 - General, Configuration, etc.

  1. tbd: tbd

    12.1.2 - Tips and Tricks

  2. VS Code Path Trick w/ JavaScript #Shorts - YouTube
  3. tbd: tbd

    12.1.3 - Extensions

  4. tbd: tbd

    12.2 - Visual Studio

  5. tbd: tbd

13 - Important Concepts (General, non-technical)

13.0 - Misc.

13.1 - Algorithms and Data Structures

  1. tbd: tbd (e.g. link to masterdrive pdf)
  2. Lecture 1: Algorithmic Thinking, Peak Finding - YouTube (MIT OpenCourseWare)
  3. 13.2 - Algorithms and Computability

  4. tbd: tbd

    13.3 - Project Management and Development Methodologies

    (Agile, UML, etc.)

  5. tbd: tbd

    13.4 - Linear Algebra

  6. Lec 1 | MIT 18.06 Linear Algebra, Spring 2005 - YouTube (MIT OpenCourseWare)

    13.5 Probability and Statistics

  7. 1. Probability Models and Axioms - YouTube (MIT OpenCourseWare)

14 - Important Concepts (General, Technical)

1. tbd: tbd

15 - Full Curriculum Computer Science Online Courses (Free, Unsupervised)

  1. OSSU Computer Science - A full, long-term curriculum for CS starting from zero.

  2. Teach Yourself CS - a full CS curriculum similar to OSSU.

Appendix

Reddit Note C# (C Sharp) 1

Link: (Best place/resources to learn C# for backend development? : csharp (reddit.com)

Content:

My first job out of school, which I held for like 3 years, was all .net framework shitty wpf desktop and console apps. It was horrible, and I had similar feelings of being "stuck" due to having no .net core/web experience to speak of. The good news is that it really should not take much effort to get the hang of backend .net core since you already know c#. You can realisticly even learn it on the job if you can just get past the interviews.

I'd recommend just familiarizing yourself with all of the components of .net core webapi and some of the jargon. Just enough to be comfortable talking about them in an interview and you should be good.

Examples: What an http request is, and really just knowing what the difference between the 'GET' and 'POST' methods is since the other methods are used so infrequently Know the common debugging tools: swagger + postman (or insomnia) What controllers are What middleware is The concept of dependency injection, and what it means to register a service with a DI container The difference between the dependency injection life cycles (singleton vs transient vs scoped)
What JWT auth is What an orm is. If you haven't used an orm before just tell the interviewers you always used dapper, because you can probably learn it in 30 seconds by looking at one example. What deployments and CI/CD pipelines are.

Before I started at my first backend web dev job I was kind of afraid I get exposed for bs-ing my way through the interview, but I picked it up quickly and now I look back and laugh at the fact I was even worried.

Reddit Note Java 1

URL: Best Fastest way to learn Java for a job? : learnjava (reddit.com)

Content:

It seems that you are looking for resources for learning Java.

In our sidebar ("About" on mobile), we have a section "Free Tutorials" where we list the most commonly recommended courses.

To make it easier for you, the recommendations are posted right here:

Also, don't forget to look at:

If you are looking for learning resources for Data Structures and Algorithms, look into:

"Algorithms" by Robert Sedgewick and Kevin Wayne - Princeton University

Your post remains visible. There is nothing you need to do.

I am a bot and this message was triggered by keywords like "learn", "learning", "course" in the title of your post.

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.