Java 강의를 수강한 뒤, 배운 개념을 하나의 작은 프로그램에 적용하고 직접 설명해 보는 공개 학습 저장소입니다.
이 저장소는 강의 예제 코드를 복사하는 대신 다음 과정을 반복합니다.
강의 수강 → 요구사항 분석 → 직접 설계 → 구현 → 실행 → 설명 → 회고
- 각 과정에서 배운 범위만 사용합니다.
- 정답 설계보다 선택한 이유를 설명하는 것을 중요하게 봅니다.
- 완성 코드를 먼저 보지 않고 요구사항에서 출발합니다.
- AI는 정답 생성기보다 질문자와 리뷰어로 사용합니다.
- 과정별 프로그램은 다른 과정에 의존하지 않고 독립적으로 실행할 수 있게 구성합니다.
| 순서 | 과정 | 상태 | 결과물 |
|---|---|---|---|
| 1 | Java 입문 | 준비 예정 | 추후 공개 |
| 2 | Java 기본편 | 과제 공개 | 모듈 의존성 규칙 시뮬레이터 |
| 3 | Java 중급 1편 | 준비 예정 | 기본편 결과물 개선 |
| 4 | Java 중급 2편 | 준비 예정 | 기본편 결과물 개선 |
| 5 | Java 고급 1편 | 준비 예정 | 추후 공개 |
| 6 | Java 고급 2편 | 준비 예정 | 추후 공개 |
| 7 | Java 고급 3편 | 준비 예정 | 추후 공개 |
현재는 Java 기본편 과제만 공개되어 있습니다. 준비되지 않은 과정은 빈 디렉터리를 만들지 않고, 실제 과제가 준비될 때 추가합니다.
- 이 저장소를 Fork하거나 Clone합니다.
- 과정 디렉터리의
README.md를 읽습니다. ASSIGNMENT.md의 요구사항만 보고 직접 설계합니다.- 제공된 시작 프로그램이 실행되는지 확인합니다.
- 강의 진도에 맞춰 기능을 단계적으로 구현합니다.
- 자신의 저장소에 커밋하고 학습 기록을 남깁니다.
git clone https://github.com/eselabkr/java-roadmap-lab.git
cd java-roadmap-lab/courses/02-java-basic
./run.shWindows에서는 다음 명령을 사용합니다.
git clone https://github.com/eselabkr/java-roadmap-lab.git
cd java-roadmap-lab\courses\02-java-basic
run.bat학습자마다 원본 저장소 안에 별도의 사용자 디렉터리를 만들지 않습니다. 각 학습자는 이 저장소를 자신의 GitHub 계정으로 Fork하고, 자신의 Fork에서 과제를 구현합니다.
eselabkr/java-roadmap-lab 공개 과제 원본
↓ Fork
사용자계정/java-roadmap-lab 사용자의 학습 저장소
Java 기본편의 실제 작업 위치는 다음과 같습니다.
courses/02-java-basic/
├── ASSIGNMENT.md 읽기 전용 과제 요구사항
├── LEARNING_LOG.md 자신의 학습 기록 작성
└── src/main/java/
├── lab/Main.java 프로그램 시작 지점
└── ... 자신이 설계한 패키지와 클래스
학습자는 courses/02-java-basic과 같은 새 과정 디렉터리를 다시 만들 필요가 없습니다. 기존 src/main/java 아래에 자신이 설계한 패키지와 클래스를 추가하고, lab.Main에서 프로그램을 실행할 수 있게 연결합니다.
권장 작업 흐름:
git clone https://github.com/사용자계정/java-roadmap-lab.git
cd java-roadmap-lab
git switch -c solve/java-basic
cd courses/02-java-basic
./run.sh과제를 완료하면 자신의 Fork에 브랜치를 Push합니다.
git push -u origin solve/java-basic개인 풀이를 원본 저장소의 main 브랜치에 합치지는 않습니다. 여러 사람이 함께 학습하더라도 각자 자신의 Fork 또는 브랜치에서 독립적으로 구현합니다.
Fork에 Push한 뒤 끝나는 것이 아닙니다. 학습자는 원본 저장소의 Issues에서 과제 제출 양식을 작성해 자신의 결과물을 제출합니다.
제출 정보:
- 학습자 GitHub 계정
- 과정 이름
- Fork 저장소 주소
- 풀이 브랜치 이름
- 검토할 커밋 주소
- 실행 여부와 완료 체크리스트
- 집중적으로 피드백 받고 싶은 부분
학습자 Fork에 구현 Push
→ 원본 저장소에서 과제 제출 Issue 작성
→ 운영자가 Fork의 지정 커밋 확인
→ Issue 댓글로 피드백
→ 학습자가 수정 후 새 커밋 주소 등록
이 저장소는 공개 저장소이므로 Fork도 공개되며, 운영자는 별도의 권한 없이 제출된 코드를 확인할 수 있습니다.
코드 줄 단위 리뷰가 필요한 경우에는 학습자가 Fork의 풀이 브랜치에서 원본 저장소 main을 대상으로 Pull Request를 열 수 있습니다. 이 Pull Request는 코드 리뷰 목적으로만 사용하고 원본 main에는 병합하지 않습니다. 리뷰가 끝나면 닫습니다.
정리하면 다음 두 방법을 사용합니다.
| 방법 | 용도 | 원본에 병합 |
|---|---|---|
| 제출 Issue | 일반적인 과제 제출과 피드백 | 하지 않음 |
| Review PR | 코드 줄 단위 상세 리뷰 | 리뷰 후 닫음 |
각 과정은 다음 형태를 따릅니다.
과정 디렉터리/
├── README.md 과정 안내와 실행 방법
├── ASSIGNMENT.md 정답 없는 요구사항
├── LEARNING_LOG.md 학습자가 작성하는 기록지
├── run.sh macOS/Linux 실행 스크립트
├── run.bat Windows 실행 스크립트
└── src/main/java/ 구현 코드
과정별 프로그램은 해당 디렉터리 안에서 독립적으로 컴파일하고 실행합니다. 빌드 도구 학습이 목적이 아닌 초기 과정에서는 JDK의 javac와 java만 사용합니다.
AI 사용을 금지하지 않습니다. 다만 구현하기 전에 최소한 다음 내용을 먼저 작성하는 것을 권장합니다.
- 해결하려는 요구사항
- 예상하는 객체와 책임
- 실행 결과 예상
- 현재 막힌 지점
좋은 요청 예시:
완성 코드를 작성하지 말고, 내 설계에서 캡슐화가 깨지는 부분을
질문으로만 지적해 주세요.
내가 먼저 실행 결과를 예상할 수 있도록 한 번에 한 질문씩 해 주세요.
완성된 구현을 그대로 생성해 달라는 요청은 학습 효과를 크게 낮출 수 있습니다.
- 과제 설명의 오류나 모호함은 Issue로 알려주세요.
- 완성한 과제는
과제 제출Issue 양식으로 제출하세요. - 과제 자체의 개선은 Pull Request로 제안할 수 있습니다.
- 개인 풀이 코드는 자신의 Fork에 보관합니다.
- 줄 단위 리뷰가 필요할 때만 Review PR을 열고 병합하지 않습니다.
- 질문할 때는 기대한 결과, 실제 결과, 직접 시도한 내용을 함께 작성해 주세요.
자세한 내용은 CONTRIBUTING.md를 참고하세요.
이 저장소는 김영한님의 Java 강의를 수강하며 학습자가 개념을 적용할 수 있도록 독자적으로 구성한 비공식 학습 프로젝트입니다.
- 강의 영상, 교안, 예제 코드 또는 해설을 포함하지 않습니다.
- 인프런 및 강사와 공식적인 관련이 없습니다.
- 강의 콘텐츠의 대체물이 아니며, 강의를 수강한 뒤 개념을 검증하는 보조 과제입니다.
저장소의 독자적인 문서와 시작 코드는 MIT License로 배포합니다. 강의 콘텐츠에 대한 권리는 각 권리자에게 있습니다.