Welcome to BLEU, a geeks community where we share
- Our Learning journey together
- Progress in our tracks
- Our over-engineered, sick projects
Whether you're just beginning your journey, grinding to become a professional software engineer, or enhancing your knowledge, BLEU is a place for you.
Join our Discord community to connect with like-minded individuals, participate in study groups, and share your progress. BLEU is more than just a learning resource—it's a community dedicated to Building, Learning, Exploring, and Uniting.
This repository offers a study plan not a curriculum, we are still studying and figuring it out. This study plan will improve and change as time goes as we learn, so, You can join us on our learning journey and contribute also to this study plan.
This schedule is for nerds who want to challenge themselves and push boundaries. This schedule till now is a bit toxic and unrealistic, but it's just a deadline which will be altered over the time; We're still figuring it out.
- Video Lectures: Harvard CS50 (Introduction to Computer Science)
- Books: "How to Find Fulfilling Work" by Roman Krznaric
- Focus: Explore different paths within computer science, identify your interests, and get a general overview of the field. Search around your passion to find what excites you.
- Additional Resources:
- CS50 Official Website
- Choosing a Career in Tech
- "Designing Your Life" by Bill Burnett & Dave Evans
- Project: Work through CS50 problems and projects to build foundational skills. Choose a project aligned with your interest, and learn how to use Git by pushing your project to GitHub. This will allow you to explore your passion while learning essential programming and version control skills.
- Books:
- Open Data Structures
- Neet Code Roadmap
- "Dive into design patterns"
- Additional Resources:
- Focus: Revise advanced DSA concepts and core computer programming principles like OOP and Design Patterns.
- Project: Implement advanced data structures and algorithms in your preferred language and upload them to GitHub.
- Books:
- Nand2Tetris (First 6 chapters and projects)
- "Computer Systems: A Programmer's Perspective" (First 6 chapters)
- Focus: Understand the fundamental building blocks of computers.
- Project: Simulate a simple von Neumann architecture.
- Books:
- "Modern Operating Systems" (Reference)
- "OS Three Easy Pieces"
- "Linux Kernel Development"
- Focus: Learn how operating systems manage hardware resources and processes.
- Project: Add features to a small kernel.
- Reference Book: "Compilers: Principles, Techniques, and Tools" (The Dragon Book)
- Book: Crafting Interpreters
- Project: Develop a simple compiler for a toy language.
- Video Lectures: UC Berkeley CS186 (Database Systems) on YouTube
- Reference Book: "Database Management Systems" by Ramakrishnan
- Additional Resources:
- "Fundamentals of Database Systems" by M. T. Özsu and P. Valduriez
- "Red Book: SQL Server Query Processing Internal Architecture"
- Project: Design and implement a mini-Database Management System (DBMS).
- Book: "Computer Networking: A Top-Down Approach"
- Focus: Understand network protocols, layers, and security principles.
- Project: Build a simple network protocol analyzer.
- Book: "Designing Data-Intensive Applications" by Martin Kleppmann
- Video Lectures: MIT 6.824 Distributed Systems course on YouTube
- Research Papers: MIT Distributed Systems Research Group publications here.
- Project: Choose one of the following:
- Develop a real-time analytics platform.
- Build a scalable data pipeline.
- Algorithms: Use this online resource for additional practice problems in Algorithms.
- 3Blue1Brown: Enhance your understanding of mathematical concepts relevant to computer science with these engaging video lectures.
- Plan Your Learning: Treat learning as a part of your daily routine. Each week, set clear, achievable goals, breaking down course content into bite-sized tasks. Dedicate focused blocks of time for lectures, readings, and hands-on practice.
- Resource Review: Before each weekly sync-up, dive into the materials. Annotate, highlight key concepts, and pinpoint areas where you need more clarity. This proactive approach ensures you're prepared to maximize your learning sessions.
- Build Continuously: Embrace a project-oriented mindset. Keep a rolling list of projects aligned with your interests and career goals. Continuously building alongside the curriculum not only sharpens your skills but also bridges the gap between theory and practice.
- Use Version Control: Adopt version control, such as Git, as a non-negotiable part of your workflow. This not only tracks your project's evolution but also simplifies collaboration and enables you to recover from mistakes effortlessly.
- Document & Share: Keep a detailed development log. Reflect on your progress, note the challenges, and document your solutions. Sharing this journey with the community not only helps others but also solidifies your own learning.
- Consistency is Key: Just like a real developer, make problem-solving a daily habit. Regularly engage with coding challenges on platforms like LeetCode, Codeforces, or HackerRank. This consistent practice builds your problem-solving muscle, crucial for a developer's toolkit.
- Explore Multiple Solutions: Don’t settle for the first solution that works. Experiment with different approaches, and critically assess their efficiency and trade-offs. This exploration mirrors the real-world scenarios you'll face as a developer.
- Active Participation: Come prepared to your weekly group discussions. Bring questions that stem from your learning and project experiences, and be ready to share insights. Engaging deeply with your peers is a hallmark of a successful developer.
- Diverse Perspectives: A real developer knows the value of multiple viewpoints. Listen to your peers, challenge ideas constructively, and collaborate to deepen your understanding of the material.
- Open-Source Your Work: Embrace the spirit of open source. Share your projects on GitHub, contributing to a wider community. Building in public not only showcases your work but also invites feedback and collaboration.
- Contribute to the Community: Take an active role in the BLEU community. Help others by answering questions, sharing your experiences, and mentoring peers. In doing so, you reinforce your own knowledge and build lasting connections.
- Don’t forget to use our hashtag #300_days_of_BLEU to share your journey and connect with the community!