Skip to content

Welcome to BLEU! We’re a community dedicated to helping each other become real software engineers through our collaborative study plan. Join us to enhance your skills, work on challenging projects, and share your learning journey. Build with us and in public, connect with fellow learners, and use #300_days_of_BLEU to share your progress!

Notifications You must be signed in to change notification settings

BLEU-IO/CS-Study-Plan

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

55 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Table of Contents:


BLEU - Building Learning Exploring Uniting

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.

Discord

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.


Schedule - For Hardcore Software Engineers

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.

0-Overview & Choose Your Path

  • 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:
  • 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.

1-Programming


2-Computer Architecture

  • 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.

3-Operating Systems

  • 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.

4-Languages and Compilers

  • Reference Book: "Compilers: Principles, Techniques, and Tools" (The Dragon Book)
  • Book: Crafting Interpreters
  • Project: Develop a simple compiler for a toy language.

5-Databases

  • 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).

6-Computer Networking

  • Book: "Computer Networking: A Top-Down Approach"
  • Focus: Understand network protocols, layers, and security principles.
  • Project: Build a simple network protocol analyzer.

7-Distributed Systems

  • 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.

Supplemental Resources

  • 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.

Cultivating a Successful BLEU Lifestyle

Learning Queue

  • 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.

Project Queue

  • 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.

Problem-Solving Queue

  • 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.

Discussion

  • 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.

Building in Public & Helping Others

  • 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.

Join the Conversation

  • Don’t forget to use our hashtag #300_days_of_BLEU to share your journey and connect with the community!

About

Welcome to BLEU! We’re a community dedicated to helping each other become real software engineers through our collaborative study plan. Join us to enhance your skills, work on challenging projects, and share your learning journey. Build with us and in public, connect with fellow learners, and use #300_days_of_BLEU to share your progress!

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published