diff --git a/Backend Engineer/Learning Materials/01 Web Basics.md b/Backend Engineer/Learning Materials/01 Web Basics.md new file mode 100644 index 0000000..7e62c3f --- /dev/null +++ b/Backend Engineer/Learning Materials/01 Web Basics.md @@ -0,0 +1,68 @@ +# General Basics (Internet and Web Foundation) + +## Overview + +This section covers foundational knowledge about how the internet works, including HTTP/HTTPS protocols, domain +names, hosting, DNS, web browsers, and internet security. Mastering these topics will provide a strong base for +backend development. + +## Topics Covered + +### 1. How the Internet Works + +- Packets and protocols (TCP/IP). +- IP addressing and routing. +- Networking layers (OSI model). + +### 2. HTTP/HTTPS + +- HTTP methods: GET, POST, PUT, DELETE. +- Status codes: 200, 404, 500, etc. +- Headers and cookies. +- SSL/TLS basics for HTTPS. + +### 3. Domain Names and Hosting + +- How domain names are resolved. +- Types of hosting: Shared, VPS, Dedicated, Cloud. +- Domain registration process. + +### 4. DNS Basics + +- What is DNS and how it works. +- Common DNS records: A, CNAME, MX, TXT. + +### 5. OWASP + +- What is the Open Worldwide Application Security Project (OWASP), and why is it important. +- Common security issues (OWASP TOP 10) and how to prevent them. + +## Suggested Learning Resources + +### Articles and Tutorials + +- [`How the Internet Works - Mozilla`](https://developer.mozilla.org/en-US/docs/Learn/Common_questions/How_does_the_Internet_work) +- [`HTTP Made Really Easy`](http://www.jmarshall.com/easy/http/) +- [`What is DNS? Basics for Beginners`](https://www.freecodecamp.org/news/what-is-dns-for-beginners/) +- [`Understanding DNS`](https://www.cloudflare.com/en-gb/learning/dns/what-is-dns/) +- [`OWASP`](https://en.wikipedia.org/wiki/OWASP) + +### Videos + +- [`How the Internet Works in 5 Minutes`](https://www.youtube.com/watch?v=7_LPdttKXPc) +- [`HTTP 1 Vs HTTP 2 Vs HTTP 3! by ByteByteGo`](https://www.youtube.com/watch?v=ai8cf0hZ9cQ) +- [`SSL, TLS, HTTPS Explained`](https://www.youtube.com/watch?v=j9QmMEWmcfo) +- [`Domain Name System (DNS) 101 Miniseries`](https://www.youtube.com/playlist?list=PLTk5ZYSbd9MhMmOiPhfRJNW7bhxHo4q-K) +- [`OWASP TOP 10 - EXPLAINED WITH EXAMPLES - 2024`](https://www.youtube.com/watch?v=Gb7RDognNcc) + +## Hands-On Practice + +- Use [`nslookup`](https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/nslookup) or + [`dig`](https://linux.die.net/man/1/dig) to query DNS records. +- Explore your browser's developer tools (network tab). +- Practice sending HTTP requests with tools like [`Postman`](https://www.youtube.com/watch?v=LdmzhlGfgN4) or curl. + +## Next Steps + +Once you’ve mastered these basics, move on +to [General Software Engineering Skills](General%20Software%20Engineering%20Skills.md). diff --git a/README.md b/README.md index a889b97..12a6f9f 100644 --- a/README.md +++ b/README.md @@ -1,124 +1,33 @@ -# .NET & Basic Algorithms Roadmap 🚀 +# .NET Backend Engineer Roadmap -## Introduction - -Welcome to the Learning Roadmap for .NET and Basic Algorithms! 🌟 This roadmap is designed for individuals who are -beginning their journey in software development and are keen to gain a solid foundation in both .NET, a widely used -framework for building a variety of applications and basic algorithms, which are fundamental to effective -problem-solving in programming. - -This roadmap will guide you through a structured path 🛣️, starting from the basics of .NET, covering essential -programming concepts, and then progressing to fundamental algorithms. Each stage will be equipped with resources 📚, -practical exercises, and projects to reinforce your learning and help you apply theoretical knowledge in real-world -scenarios. - -Whether you're a student 👩‍🎓👨‍🎓, a budding software developer, or even an experienced programmer looking to refresh your -skills in .NET and algorithms, this roadmap aims to provide a comprehensive learning experience to boost your software -engineering prowess 💪. +Welcome to the **.NET Backend Engineer Roadmap**, a structured guide for aspiring and current backend developers to +master essential skills in .NET development. This roadmap is designed to help you progress from foundational concepts to +advanced topics, ensuring a solid understanding of backend development with a focus on the .NET ecosystem. ## Overview -This roadmap is structured to take you through a comprehensive learning journey in .NET and basic algorithms. It is -divided into several stages, each focusing on different aspects of .NET and foundational algorithmic concepts. The goal -is to build a strong foundation in both areas, enabling you to develop efficient and effective software solutions. - -### Stage 1: Introduction to .NET - -🌱 We start with the basics of .NET, understanding the framework, its components, and how it fits in the software -development ecosystem. You'll get familiar with the .NET runtime, libraries, and the C# programming language. Exploring -advanced topics like object-oriented programming, LINQ, and asynchronous programming. Parallelly, you'll learn about -.NET Core, the cross-platform, open-source version of .NET. - -### Stage 2: Basic Algorithms and Data Structures - -📊 This stage introduces you to the world of algorithms. Starting with basic data structures like arrays, lists, and -trees, you'll learn how to implement and apply fundamental algorithms, including sorting, searching, and basic graph -algorithms. - -### Stage 3: Applying Algorithms in .NET - -🛠 In this practical stage, you'll apply your algorithmic knowledge using C# and .NET. This will include building small -projects and solving problems that require algorithmic thinking, reinforcing your understanding of both .NET and -algorithms. - -## Stage 0: Tools & IDEs - -- **IDE:** [Rider](https://www.jetbrains.com/help/rider/First_Steps.html) fast & powerful cross-platform .NET IDE - -## Stage 1: Introduction to .NET 🌱 - -- **Objective:** The goal of this stage is to introduce learners to the .NET and the C# programming language. It focuses - on building a strong foundation in the basics of .NET, understanding its architecture, and getting comfortable with C# - syntax and basic programming concepts. - -- **Topics:** - - Introduction to .NET: Understand the architecture, components, and the ecosystem of the .NET. - - Getting Started with C#: Learn the basic syntax of C#, including variables, types, control structures, and basic - I/O operations. - - Introduction to Object-Oriented Programming: Get a brief introduction to object-oriented programming (OOP) - principles in the context of C#. - - .NET CLI and Project Structure: Familiarize yourself with the .NET Command Line Interface (CLI) and understand the - standard project structure in a .NET application. -- **Resources:** - - [CodeAcademy (FREE | ~20hrs)](https://www.codecademy.com/learn/learn-c-sharp): beginner-friendly course - focusing on basic programming concepts in C#. - - [Introduction to C# (Alternative to CodeAcademy)](https://learn.microsoft.com/en-us/dotnet/csharp/tour-of-csharp/tutorials/): - interactive tutorials for beginners to learn C# basics directly in their browser. It covers fundamental concepts - like data types, control flow, and the List collection type, with practical, hands-on coding examples. - - [C# Tutorial](https://www.w3schools.com/CS/index.php): W3Schools offers a comprehensive C# tutorial that covers - the language's basics to advanced concepts. - - [What is .NET](https://dotnet.microsoft.com/en-us/learn/dotnet/what-is-dotnet) - - [.NET CLI (video)](https://www.youtube.com/watch?v=RQLzp2Z8-BE) - - [.NET CLI Documentation](https://learn.microsoft.com/en-us/dotnet/core/tools/) - - [Refactoring](https://refactoring.guru/refactoring) - - [GoF patterns](https://refactoring.guru/design-patterns/csharp). DO NOT TRY TO REMEMBER ALL OF THEM. JUST READ - ACROSS TO KNOW WHERE TO SEARCH IN CASE OF NEED. - - [Scaler Blogs](https://www.scaler.com/blog/dot-net-developer-skills/). Navigate your tech career with expert-crafted roadmaps and insights. - -## Practice and Projects - -### Assignment 1: Tic-Tac-Toe with Leaderboard - -- Objective: Develop a Tic-Tac-Toe. The game should feature a leaderboard to track wins, losses, and draws. - -- Requirements: - - Gameplay: Implement the classic 3x3 grid gameplay. - - Player Input: Allow two players to input their moves. - - Win Logic: Include logic to determine the winner or a draw. - - Leaderboard: - - Store the results of each game (win/loss/draw) for each player in a file. - - Display the leaderboard at the beginning or end of each game session. - - File Operations: - - Use file handling to read and write leaderboard data. - - Ensure data persistence across game sessions. - - Additional Challenges: - - Implement an AI opponent. - - Add an option to reset the leaderboard. - -### LINQ Practice - -For a comprehensive list of [LINQ](./Practice/LINQ.md) practice tasks, refer to the LINQ Tasks File. This resource provides a variety of -scenarios to apply LINQ in practical, real-world examples. - -## Assessment - -TBA - -## Additional Resources +This roadmap is organized into progressive stages, starting with the basics and building up to complex, real-world +scenarios. By following this roadmap, you will gain: -### Algorithms - - [Grokking Algorithms An Illustrated Guide For Programmers and Other Curious People](https://www.amazon.com/Grokking-Algorithms-illustrated-programmers-curious/dp/1617292230) +- A strong foundation in internet and software engineering fundamentals. +- Expertise in ASP.NET Core and its ecosystem. +- Proficiency in databases, logging, testing, and real-time communication. +- Hands-on experience with modern practices like CI/CD, microservices, and cloud computing. -## Community and Support 🌐 +## Prerequisites -Join our vibrant and supportive .NET community! Whether you're a newbie or a seasoned developer, find camaraderie, insights, and help in our group. 🤝 +### **C# Knowledge** -Telegram Group: Connect in real-time, share your .NET experiences, and get support. Everyone's welcome! Join us on Telegram 💬👥 -Let's grow together in the world of .NET! Your questions, contributions, and enthusiasm drive our community forward. 🚀🌟 +- Understand C# syntax, data types, and control structures. +- Object-oriented programming concepts: classes, inheritance, polymorphism, and interfaces. +- LINQ for querying collections. +- Exception handling and debugging in C#. +- TPL (Task, Thread, lock) in C#. -## Feedback 📝 +## Roadmap Structure -Your thoughts and suggestions are invaluable to us! 🌟 If you have any feedback, ideas, or experiences you'd like to share about the .NET Roadmap, please let us know. +### [`01 Web Basics (Internet and Web Foundation)`](Backend%20Engineer/Learning%20Materials/General%20Basics.md) -Share Your Thoughts: Whether it's a suggestion for improvement, a success story, or a challenge you faced, your input helps us grow and improve. 🚀 -We're committed to making this roadmap as effective and user-friendly as possible. Your feedback is a crucial part of this journey! 💬👍 +- Understanding how the internet works. +- HTTP/HTTPS methods, headers, and status codes. +- Domain names, hosting, DNS, and web browsers. diff --git a/Assignments/Assignment1/Ai/AiProcessor.cs b/archived/Assignments/Assignment1/Ai/AiProcessor.cs similarity index 100% rename from Assignments/Assignment1/Ai/AiProcessor.cs rename to archived/Assignments/Assignment1/Ai/AiProcessor.cs diff --git a/Assignments/Assignment1/Assignment1.csproj b/archived/Assignments/Assignment1/Assignment1.csproj similarity index 100% rename from Assignments/Assignment1/Assignment1.csproj rename to archived/Assignments/Assignment1/Assignment1.csproj diff --git a/Assignments/Assignment1/Cli/CliEngine.cs b/archived/Assignments/Assignment1/Cli/CliEngine.cs similarity index 100% rename from Assignments/Assignment1/Cli/CliEngine.cs rename to archived/Assignments/Assignment1/Cli/CliEngine.cs diff --git a/Assignments/Assignment1/Cli/Commands/ExitCommand.cs b/archived/Assignments/Assignment1/Cli/Commands/ExitCommand.cs similarity index 100% rename from Assignments/Assignment1/Cli/Commands/ExitCommand.cs rename to archived/Assignments/Assignment1/Cli/Commands/ExitCommand.cs diff --git a/Assignments/Assignment1/Cli/Commands/ICommandDefinition.cs b/archived/Assignments/Assignment1/Cli/Commands/ICommandDefinition.cs similarity index 100% rename from Assignments/Assignment1/Cli/Commands/ICommandDefinition.cs rename to archived/Assignments/Assignment1/Cli/Commands/ICommandDefinition.cs diff --git a/Assignments/Assignment1/Cli/Commands/LeaderboardCommand.cs b/archived/Assignments/Assignment1/Cli/Commands/LeaderboardCommand.cs similarity index 100% rename from Assignments/Assignment1/Cli/Commands/LeaderboardCommand.cs rename to archived/Assignments/Assignment1/Cli/Commands/LeaderboardCommand.cs diff --git a/Assignments/Assignment1/Cli/Commands/PlayCommand.cs b/archived/Assignments/Assignment1/Cli/Commands/PlayCommand.cs similarity index 100% rename from Assignments/Assignment1/Cli/Commands/PlayCommand.cs rename to archived/Assignments/Assignment1/Cli/Commands/PlayCommand.cs diff --git a/Assignments/Assignment1/Core/AiOpponentStrategy.cs b/archived/Assignments/Assignment1/Core/AiOpponentStrategy.cs similarity index 100% rename from Assignments/Assignment1/Core/AiOpponentStrategy.cs rename to archived/Assignments/Assignment1/Core/AiOpponentStrategy.cs diff --git a/Assignments/Assignment1/Core/BaseStrategy.cs b/archived/Assignments/Assignment1/Core/BaseStrategy.cs similarity index 100% rename from Assignments/Assignment1/Core/BaseStrategy.cs rename to archived/Assignments/Assignment1/Core/BaseStrategy.cs diff --git a/Assignments/Assignment1/Core/GameField.cs b/archived/Assignments/Assignment1/Core/GameField.cs similarity index 100% rename from Assignments/Assignment1/Core/GameField.cs rename to archived/Assignments/Assignment1/Core/GameField.cs diff --git a/Assignments/Assignment1/Core/GameMode.cs b/archived/Assignments/Assignment1/Core/GameMode.cs similarity index 100% rename from Assignments/Assignment1/Core/GameMode.cs rename to archived/Assignments/Assignment1/Core/GameMode.cs diff --git a/Assignments/Assignment1/Core/GameProcessor.cs b/archived/Assignments/Assignment1/Core/GameProcessor.cs similarity index 100% rename from Assignments/Assignment1/Core/GameProcessor.cs rename to archived/Assignments/Assignment1/Core/GameProcessor.cs diff --git a/Assignments/Assignment1/Core/GameResult.cs b/archived/Assignments/Assignment1/Core/GameResult.cs similarity index 100% rename from Assignments/Assignment1/Core/GameResult.cs rename to archived/Assignments/Assignment1/Core/GameResult.cs diff --git a/Assignments/Assignment1/Core/IGameStrategy.cs b/archived/Assignments/Assignment1/Core/IGameStrategy.cs similarity index 100% rename from Assignments/Assignment1/Core/IGameStrategy.cs rename to archived/Assignments/Assignment1/Core/IGameStrategy.cs diff --git a/Assignments/Assignment1/Core/Leaderboard.cs b/archived/Assignments/Assignment1/Core/Leaderboard.cs similarity index 100% rename from Assignments/Assignment1/Core/Leaderboard.cs rename to archived/Assignments/Assignment1/Core/Leaderboard.cs diff --git a/Assignments/Assignment1/Core/LeaderboardRecord.cs b/archived/Assignments/Assignment1/Core/LeaderboardRecord.cs similarity index 100% rename from Assignments/Assignment1/Core/LeaderboardRecord.cs rename to archived/Assignments/Assignment1/Core/LeaderboardRecord.cs diff --git a/Assignments/Assignment1/Core/MoveDescriptor.cs b/archived/Assignments/Assignment1/Core/MoveDescriptor.cs similarity index 100% rename from Assignments/Assignment1/Core/MoveDescriptor.cs rename to archived/Assignments/Assignment1/Core/MoveDescriptor.cs diff --git a/Assignments/Assignment1/Core/PlayerDescriptor.cs b/archived/Assignments/Assignment1/Core/PlayerDescriptor.cs similarity index 100% rename from Assignments/Assignment1/Core/PlayerDescriptor.cs rename to archived/Assignments/Assignment1/Core/PlayerDescriptor.cs diff --git a/Assignments/Assignment1/Core/PlayersProvider.cs b/archived/Assignments/Assignment1/Core/PlayersProvider.cs similarity index 100% rename from Assignments/Assignment1/Core/PlayersProvider.cs rename to archived/Assignments/Assignment1/Core/PlayersProvider.cs diff --git a/Assignments/Assignment1/Core/TicTacToeProcessor.cs b/archived/Assignments/Assignment1/Core/TicTacToeProcessor.cs similarity index 100% rename from Assignments/Assignment1/Core/TicTacToeProcessor.cs rename to archived/Assignments/Assignment1/Core/TicTacToeProcessor.cs diff --git a/Assignments/Assignment1/Core/TwoPlayersStrategy.cs b/archived/Assignments/Assignment1/Core/TwoPlayersStrategy.cs similarity index 100% rename from Assignments/Assignment1/Core/TwoPlayersStrategy.cs rename to archived/Assignments/Assignment1/Core/TwoPlayersStrategy.cs diff --git a/Assignments/Assignment1/Core/UserInputProvider.cs b/archived/Assignments/Assignment1/Core/UserInputProvider.cs similarity index 100% rename from Assignments/Assignment1/Core/UserInputProvider.cs rename to archived/Assignments/Assignment1/Core/UserInputProvider.cs diff --git a/Assignments/Assignment1/Program.cs b/archived/Assignments/Assignment1/Program.cs similarity index 100% rename from Assignments/Assignment1/Program.cs rename to archived/Assignments/Assignment1/Program.cs diff --git a/Assignments/Assignment1/docs/injections.png b/archived/Assignments/Assignment1/docs/injections.png similarity index 100% rename from Assignments/Assignment1/docs/injections.png rename to archived/Assignments/Assignment1/docs/injections.png diff --git a/Assignments/Assignment1/docs/usings.png b/archived/Assignments/Assignment1/docs/usings.png similarity index 100% rename from Assignments/Assignment1/docs/usings.png rename to archived/Assignments/Assignment1/docs/usings.png diff --git a/Assignments/Assignment1/readme.md b/archived/Assignments/Assignment1/readme.md similarity index 100% rename from Assignments/Assignment1/readme.md rename to archived/Assignments/Assignment1/readme.md diff --git a/Assignments/Assignments.sln b/archived/Assignments/Assignments.sln similarity index 100% rename from Assignments/Assignments.sln rename to archived/Assignments/Assignments.sln diff --git a/Assignments/school-diary-system.md b/archived/Assignments/school-diary-system.md similarity index 100% rename from Assignments/school-diary-system.md rename to archived/Assignments/school-diary-system.md diff --git a/Practice/LINQ.md b/archived/Practice/LINQ.md similarity index 100% rename from Practice/LINQ.md rename to archived/Practice/LINQ.md diff --git a/Practice/README.md b/archived/Practice/README.md similarity index 100% rename from Practice/README.md rename to archived/Practice/README.md diff --git a/archived/README.md b/archived/README.md new file mode 100644 index 0000000..e69de29