본문으로 건너뛰기
5분 AI.
GitHub 트렌딩 딥다이브 · 2026-10-28 · TrendShift

project-based-learning 딥다이브
— "강의를 보지 말고, 직접 만들면서 배워라" — 언어별로 정리된 '직접 만들기' 튜토리얼 대백과

문서·자료

빠른 판단

무엇
DB·셸·OS 등 프로그램을 직접 만드는 튜토리얼을 프로그래밍 언어별로 모은 학습 자료 목록
이럴 때
배우는 언어로 완성할 프로젝트를 정하고 구현 과정을 따라가며 실력을 쌓을 때

practical-tutorials/project-based-learning. "바닥부터 직접 만들며 배우는(build from scratch)" 프로그래밍 튜토리얼을 프로그래밍 언어별로 모아 둔 거대한 큐레이션 목록이다. 데이터베이스·셸·OS·Git·인터프리터·Redis 클론 같은 "네 손으로 직접 만드는 X" 튜토리얼이 22개 언어 섹션에 약 450개 링크로 정리돼 있다. 실행되는 앱이 아니라 단 하나의 README.md가 상품인 awesome 리스트로, "수동적 강의 시청"이 아니라 "능동적 만들기"가 더 잘 배운다는 철학에 베팅한 레포다. (저장소: practical-tutorials/project-based-learning · 형식 Markdown 큐레이션 · 라이선스 MIT)

목차
  1. 프로젝트 한줄 요약
  2. 왜 주목받는가
  3. 기술 스택 — 이 목록은 어떻게 만들어지나
  4. 아키텍처 — 목록은 어떻게 구성돼 있나
  5. 디렉토리 구조 해부
  6. 학습 포인트 (어떻게 활용하나)
  7. 시스템 요구사항
  8. 직접 해볼 수 있는 실습 과제
  9. 관련 기술 심화 학습 로드맵
  10. 핵심 키워드 사전
  11. 참고 링크

1프로젝트 한줄 요약

"이 레포 자체는 코드를 가르치지 않는다 — '무엇을 만들며 배울지'를 언어별로 안내하는 거대한 지도다."

한 줄로

project-based-learning은 "이 언어로 이런 걸 직접 만들어 봐"라는 튜토리얼 링크를 언어별로 모은 '만들며 배우기' 안내 지도다.

프로그래밍을 배울 때 강의 영상만 끝없이 보면, 다 본 뒤에도 정작 뭔가를 만들지 못하는 경우가 많습니다. 이 레포의 철학은 정반대입니다 — 처음부터 진짜 프로그램 하나를 만들어 보라는 것. "C로 텍스트 에디터 만들기", "Go로 블록체인 만들기", "Rust로 운영체제 만들기" 같은 실전 빌드 튜토리얼을 언어별로 분류해 한 페이지에 모아 두었습니다. 여러분은 자기 언어 · 자기 수준에 맞는 프로젝트를 골라, 링크를 따라가 끝까지 만들어 보면 됩니다. 다 만들고 나면 동작하는 결과물과 포트폴리오가 손에 남습니다.

용어
project-based learning (PBL, 프로젝트 기반 학습)
개념을 강의로 '듣는' 대신, 완성된 프로젝트를 직접 만들면서 그 과정에서 필요한 지식을 익히는 학습법입니다. 실제 버그와 싸우고 여러 기술을 엮다 보니 기억에 더 오래 남고, 끝나면 동작하는 결과물이 생깁니다. 수영을 책으로 배우지 않고 물에 들어가 배우는 것과 같습니다.
용어
awesome 리스트 · 큐레이션 목록
awesome 리스트는 어떤 주제에 대한 자료 링크를 사람이 직접 골라(curate) 정리한 목록입니다. 보통 README.md 하나에 카테고리별 링크로 정리되며, "awesome-*"라는 이름의 레포들에서 유래한 장르입니다. 품질의 비결은 자동 생성이 아니라 사람의 선별 + PR 검수에 있습니다.

이 저장소의 학습 콘텐츠는 README 링크 목록입니다. 별도의 튜토리얼 앱은 없지만 scripts/check_readme.py라는 실제 Python 검사 코드와 GitHub Actions가 있습니다. 문서 구조와 유지보수 자동화를 함께 읽어야 합니다.

2왜 주목받는가

"규모, 변치 않는 가치, 그리고 '만들며 배운다'는 강력한 철학 — 그래서 몇 년이 지나도 계속 트렌딩에 오른다."

먼저, '수동적 학습'의 함정

많은 입문자가 튜토리얼 영상·강의를 끝없이 봅니다. 보는 동안엔 다 아는 것 같지만, 막상 빈 에디터 앞에 앉으면 한 줄도 못 짜는 '튜토리얼 지옥(tutorial hell)'에 빠집니다. 지식이 '읽은 것'에 머물고 '해 본 것'이 되지 못했기 때문입니다.

함정
"강의를 많이 보면 실력이 는다"는 착각

수동적으로 보기만 하면 '익숙함'이 '능력'으로 착각됩니다. 정작 스스로 설계하고, 막히고, 디버깅하고, 여러 기술을 엮는 진짜 어려운 부분은 한 번도 겪지 않습니다. 그래서 강의 100개를 봐도 작은 앱 하나를 처음부터 못 만드는 일이 흔합니다.

해결
완성품 하나를 바닥부터 직접 만든다

이 레포의 처방은 단순합니다 — "진짜 프로그램 하나를 처음부터 끝까지 만들어 봐라." 데이터베이스·셸·인터프리터를 직접 구현하면, 그 내부 원리가 몸으로 이해됩니다. 막히고 고치는 과정 자체가 학습이고, 끝나면 동작하는 결과물 + 포트폴리오가 남습니다.

숫자와 영향력

지표값
튜토리얼 링크약 450개(다중 파트 시리즈 합치면 ~300개 주제)
언어 섹션22개 + Additional Resources
큰 섹션Python ~128 · C/C++ ~97 · HTML/CSS ~74 · Go ~33
라이선스MIT (자유롭게 포크·복사·재배포)

이 레포가 몇 년이 지나도 계속 트렌딩에 오르는 이유는, 내용이 '유행을 안 타는(evergreen)' 지식이기 때문입니다. "데이터베이스를 직접 만들어 보라"는 가치는 10년 전에도 지금도 유효합니다. 다만 외부 URL은 바뀌므로 현재는 정기 링크 검사와 수정 PR로 관리합니다. README가 "시작하려면 그냥 이 레포를 포크하세요"라고 안내해 입문자의 첫 포크·첫 PR 대상으로도 인기가 높습니다.

비유

이 레포 = 요리 학원이 아니라 '직접 만들어 볼 요리 레시피 색인'. 요리 영상을 100개 보는 것과, 레시피를 보며 실제로 한 끼를 만들어 보는 것은 다릅니다. 이 레포는 "오늘은 이 요리(프로젝트)에 도전해 봐"라며 잘 정리된 레시피 목록을 건네줍니다 — 칼질은 여러분이 직접 합니다.

3기술 스택 — 문서와 유지보수 자동화

학습 목록은 Markdown이며 자동화는 Python 3 표준 라이브러리와 GitHub Actions로 구성됩니다. 과거의 Travis·Ruby awesome_bot 설명은 현재 tree와 다릅니다.

구성현재 역할
scripts/check_readme.py하나의 README 파서로 문법·목차·중복 URL 검사, PR 추가 링크 검사, 전체 URL 상태와 수정 제안을 처리합니다.
validate-pr.ymlREADME·기여 가이드 PR에서 lint → 추가 줄 검사 → 추가 URL 접근 확인을 수행합니다. 자동 접근을 막는 도메인은 확인 불가로 남길 수 있습니다.
link-rot.yml월요일 06:17 UTC에 전체 링크를 검사하고 상태 파일·통합 이슈를 갱신합니다. 2회 연속 죽은 주요 링크나 정상 페이지로 이동한 URL은 수정 PR 대상으로 삼습니다.
stale-prs.yml90일 비활성 PR을 표시하고 이후 30일 뒤 닫습니다. 이슈는 자동 stale 대상에서 제외합니다.

CONTRIBUTING.md는 무료·공개 접근, 완성 결과물이 있는 프로젝트 튜토리얼, 중복 검색, 작성자와의 관계 공개를 요구합니다. 단축 URL과 유료·로그인·뉴스레터 가입 장벽이 있는 자료는 기여 조건에 맞지 않습니다.

# 기여 가이드에 명시된 로컬 검사 예시
python3 scripts/check_readme.py lint

이 명령은 사용자가 기여할 때의 절차입니다. 이번 분석에서는 외부 저장소의 검사·네트워크 자동화를 실행하지 않고 코드를 읽었습니다. 워크플로 설정이 존재한다는 사실과 최근 실행 성공 여부도 구분합니다.

4아키텍처 — 목록은 어떻게 구성돼 있나

"최상위 구분은 '프로그래밍 언어별'. 큰 언어는 다시 주제·프레임워크로 가지를 친다."

전체 구조 한 장

# Project Based Learning (제목 + 소개) │ ├── ## Table of Contents (언어별 앵커 목차) │ ├── ## C/C++ ~97개 ── ### Network programming │ └ ### OpenGL ├── ## Python ~128개 ── ### Web Scraping / Bots │ ├ ### Data Science / ML │ └ ### Deep Learning / OpenCV ├── ## HTML and CSS ~74개 ── ### Web Applications │ └ #### React / Angular / Vue / Node ├── ## Go ~33개 ├── ## Rust / Java / C# / Ruby / PHP / Dart / ... (총 22개 언어) │ └── ## Additional Resources (학습 플랫폼 모음)

책장을 언어별 칸으로 나눈 도서관을 떠올리면 됩니다. 최상위는 언어(##)로 나뉘고, 큰 언어는 다시 주제(###)로, JavaScript는 프레임워크(####)까지 가지를 칩니다.

실제 언어 섹션과 규모

언어대략 규모 · 특징
Python~128개. 웹 스크래핑·봇·데이터과학·ML·OpenCV·딥러닝까지 가장 풍부.
C/C++~97개. OS·DB·에디터 등 '바닥부터 시스템 만들기'의 보고. 네트워크·OpenGL 하위.
HTML/CSS~74개. 웹앱 + React/Angular/Vue/Node 프레임워크 하위 트리.
Go~33개. 블록체인·REST 서버·컨테이너 직접 만들기.
Rust~16개. OS·브라우저 엔진·NES 에뮬레이터.
그 외Java·C#·Ruby·PHP·Dart(Flutter)·Lua·Haskell·Clojure·Elixir·Kotlin·Swift… 총 22개 섹션.

항목의 '문법' — 목록의 한 줄은 어떻게 생겼나

# 단일 튜토리얼
- [Build Your Own Text Editor](https://...)   (제목+링크, 때로 (video) 태그)

# 다중 파트 시리즈는 부모-자식 들여쓰기
- Building Blockchain in Go
    - [Part 1](https://...)
    - [Part 2](https://...)
    ...

이렇게 일관된 한 줄 문법이 있어야 사람이 읽기 좋고, 동시에 check_readme.py의 공통 파서가 링크를 검사할 수 있습니다 — 구성과 자동화가 맞물려 돌아갑니다.

5디렉토리 구조 해부

project-based-learning/
├── README.md                     # 언어별 튜토리얼 목록, 676줄
├── CONTRIBUTING.md               # 기여 조건과 lint 절차
├── LICENSE.md
├── scripts/
│   ├── check_readme.py            # 공통 파서·lint·URL 검사·prune
│   ├── linkcheck-domains.txt      # 자동 접근 제한 도메인 정책
│   └── lint-allow-duplicates.txt  # 기존 중복 URL 예외
└── .github/
    ├── link-rot-state.json        # URL별 관측 상태
    ├── workflows/                # PR 검사·정기 검사·PR stale 관리
    └── ISSUE_TEMPLATE/           # 깨진 링크·자료 제안 양식

classify_line은 제목·단일 항목·시리즈·목차를 분류합니다. cmd_prune은 정확히 한 주요 항목과 대응되는 URL에 한정해 수정하고, 모호한 항목은 사람이 판단하도록 남깁니다. 문서 형식을 데이터 계약으로 만들면 lint와 정기 검사가 같은 해석을 공유할 수 있다는 점이 학습 포인트입니다.

6학습 포인트 (어떻게 활용하나)

"고르는 법은 셋 — 내 언어 섹션으로 가서, 관심 주제를 고르고, 다 만든 뒤 난이도를 올린다."

활용법

이 지도를 읽는 3단계

① 목차(ToC)에서 내 언어 섹션으로 점프 → ② 하위 주제(웹앱·ML·게임·시스템) 중 끌리는 것 선택 → ③ 깊게 배우고 싶으면 다중 파트 시리즈를 고른다. 하나를 끝까지 만든 뒤, 한 단계 어려운 프로젝트로 올라갑니다.

핵심은 '끝까지 완성'입니다. 절반만 따라 하면 튜토리얼 지옥과 다를 게 없습니다.

대표 예시 — 시스템

"바닥부터 인프라 만들기" (C/C++ · Rust · Go)

이 장르의 보석들입니다: 텍스트 에디터 만들기(C, kilo) · 셸 만들기(C) · 간단한 데이터베이스 만들기(C, db_tutorial) · 밑바닥부터 OS 만들기 · CHIP-8 에뮬레이터 · TCP/IP 스택을 코딩하자. Rust에선 순수 Rust로 OS 만들기(blog_os), 브라우저 엔진 만들기, Go에선 밑바닥부터 컨테이너 만들기가 유명합니다.

대표 예시 — 앱 · 데이터

"실용 앱 만들기" (Python · JS · Java)

Python: Flask로 마이크로블로그(Grinberg 메가 튜토리얼) · Django로 블로그 · 신경망 밑바닥부터 만들기 · 레딧 봇. JavaScript/웹: JavaScript30(30일간 30개) · 틱택토·할 일 목록. Java: 인터프리터 만들기(Crafting Interpreters) · HTTP 서버. 언어별로 결이 다릅니다 — 시스템 언어는 인프라, Python은 데이터/ML, JS는 웹앱.

왜 효과적인가

읽는 게 아니라 '재현'하니까

알려진 시스템(Git·Redis·셸·DB·OS)을 직접 다시 만들어 보면, 평소 블랙박스였던 내부가 환히 보입니다. "어떻게 동작하지?"라는 질문에 코드로 답해 본 사람은, 같은 도구를 쓸 때도 훨씬 깊이 이해합니다.

7시스템 요구사항

"레포 자체엔 요구사항이 거의 없다 — 브라우저, 그리고 고른 프로젝트의 언어 도구뿐."

항목요구사항
목록 읽기웹 브라우저만 있으면 됨. 설치 불필요.
튜토리얼 실습고른 프로젝트의 언어 도구체인만(예: 에디터 만들기→C 컴파일러, Flask 앱→Python+pip, blog_os→Rust 툴체인).
특별 하드웨어대부분 불필요. 일부 딥러닝 항목만 선택적으로 GPU가 도움.
기여(선택)기여 가이드의 lint는 Python 3 표준 라이브러리로 실행합니다. 튜토리얼 자체의 도구체인과는 별개입니다.

8직접 해볼 수 있는 실습 과제

"작은 앱 → 풀스택 → CLI 도구 → 인터프리터 → DB → OS 순으로 난이도를 올려 보자."

실습 1 난이도 ★☆☆ 입문

프런트엔드 워밍업

JavaScript30이나 틱택토 게임을 골라, 하루 만에 작고 완결된 앱 하나를 끝내 보세요. PBL의 리듬(끝까지 만들기)을 몸에 익히는 게 목표입니다.

실습 2 난이도 ★☆☆ 입문

풀스택 CRUD 앱

Python의 Flask 마이크로블로그(또는 Django 블로그)를 따라가며 라우팅·템플릿·DB·인증을 한 번에 배우세요. 첫 '진짜 웹앱' 경험으로 좋습니다.

실습 3 난이도 ★★☆ 중급

CLI 도구를 바닥부터

Go의 URL 단축기(Gin+Redis)나 C의 셸 만들기로, 다중 파트 시리즈를 읽고 따라가는 호흡을 익히세요.

실습 4 난이도 ★★☆ 중급

장난감 인터프리터/언어

Crafting Interpreters(Java 트리워커 → C 바이트코드 VM)나 Build Your Own Lisp로 파싱·AST·평가를 이해해 보세요.

실습 5 난이도 ★★★ 고급

장난감 데이터베이스/키-값 저장소

C의 Let's Build a Simple Database(db_tutorial)로 페이저·B-트리·영속성을 직접 구현하며 DB의 속을 들여다보세요.

실습 6 난이도 ★★★ 고급

시스템 캡스톤

순수 Rust로 OS(blog_os), C로 TCP/IP 스택, Go로 BitTorrent 클라이언트 중 하나로, 0에서 동작하는 저수준 시스템까지 완주해 보세요.

9관련 기술 심화 학습 로드맵

"이 목록을 4주 코스로 쓰는 한 가지 방법."

주차주제이 목록에서 고를 것
1주차완성의 감각작은 앱 1개 완주(JavaScript30/틱택토). "끝까지 만들기" 습관 만들기.
2주차풀스택 흐름Flask/Django 블로그 — 요청→DB→화면의 한 사이클 체득.
3주차언어·내부 원리인터프리터 또는 셸 만들기 — 파싱·실행 구조 이해.
4주차시스템 도전DB/네트워크 스택/OS 중 하나 — 저수준 내부까지 깊이 파기.

10핵심 키워드 사전

"학습 방법론 + 큐레이션 레포 용어를 한자리에."

용어의미
프로젝트 기반 학습(PBL)강의 시청 대신 완성 프로젝트를 직접 만들며 배우는 방법.
awesome 리스트한 주제의 자료를 사람이 골라 정리한 큐레이션 목록(보통 README 하나).
큐레이션 목록자동 생성이 아닌, 사람이 선별·검수한 모음. 품질은 유지보수자 + PR 리뷰에서.
"build your own X"알려진 시스템(Git·Redis·셸·DB·OS)을 직접 재구현해 내부 원리를 배우는 장르.
밑바닥부터(from scratch)편한 고수준 라이브러리에 기대지 않고 직접 구현하는 것(예: 라이브러리 없이 신경망).
다중 파트 시리즈여러 글로 나뉜 튜토리얼. README에선 부모 불릿 + 들여쓴 Part 링크로 표현.
링크 로트·prune시간이 지나 URL이 끊기는 현상과, 명확히 확인된 죽은 링크·이동 URL만 수정 PR로 제안하는 과정.
stale 봇현재 저장소에서는 비활성 PR을 표시·종료하는 자동화. 이슈는 자동 stale 대상에서 제외합니다.
튜토리얼 지옥강의만 끝없이 보고 정작 스스로 못 만드는 상태. PBL이 깨려는 함정.

11참고 링크

"형제 격인 '직접 만들기' 자료들과 함께 보면 좋다."