2025년 1학기 — 오픈소스 협업과 도구, 자기주도 학습을 목표로 함.
키워드: Git, GitHub, Markdown, 라이선스, 협업문화(코드리뷰/PR), Haskell(기초)
- 과목정보: 인공지능학부 / 최광훈 교수님 / AI융합-301 / 화1·목1
- 수업방법: 플립러닝 — 사전 동영상 학습 → 10분 퀴즈 → 요약강의 → 연습문제
- 평가: 중간 30 · 기말 40 · 개별과제 20 · 출석/참여 10 (= 100)
- 수업목표(역량):
- 컴퓨팅 사고: 함수형 스타일 익히기
- 융합: LLM/ChatGPT로 새로운 프로그래밍 학습
- 글로컬/협업: Git/GitHub 활용, 영어 자료 읽기
- 참고: Haskell MOOC,
오픈소스SW YouTube 강의 목록
- 정의: 저작권자가 소스코드의 사용·복제·수정·배포를 모두 허용한 소프트웨어
- 철학/역사: Free Software(R. Stallman, FSF, GPL) vs Open Source(E.S. Raymond, OSI)
- 라이선스 예: GPL, LGPL, MIT, BSD, Apache 2.0, MPL
- 차이(상용 vs OSS): 상용은 EULA/로열티/바이너리 중심 ↔ OSS는 라이선스에 따라 소스 공개와 재배포 허용
- 사례/생태계: VS Code(MIT), 대기업 OSS 포털(Facebook/Google/Microsoft 등)
“People–Projects–Platform: 협업과 공유가 오픈소스의 성장 동력.”
참고: GitHub Octoverse
- VCS의 역할: 변경 이력 추적, 과거 버전 복원, 협업 충돌 최소화
- 기능: commit / diff / branch / merge / tag, 그리고 conflict 해결
- 종류: 중앙집중식(CVS, SVN) vs 분산형(Git, Mercurial, Darcs)
- 핵심 개념: Repository(저장소), checkout/fetch/pull, check-in/commit
- 정의: 분산 버전관리 — 로컬에서도 완전한 이력, time machine처럼 특정 시점 복원
- 핵심 구역: Workspace → Index(Stage) → Local Repo → Remote Repo
- 기본 명령어:
git init→ 저장소 초기화git add→ 스테이징git commit -m "msg"→ 이력 생성git push/git pull→ 원격 동기화git status,git log,git diff→ 상태/히스토리/변경점 확인
- GitHub란? Git 기반 원격 저장소 + 소셜 코딩 플랫폼(이슈/리뷰/PR)
Fork로 내 계정에 복사하고, 브랜치에서 작업 후 Pull Request로 원본에 제안!
- 실습 흐름(예):
- 원본 저장소 Fork →
git clone <내 포크> - 작업 브랜치 생성:
git checkout -b develop - 수정/커밋/푸시:
git add . && git commit -sm "feat: ..." && git push origin develop - GitHub에서 New Pull Request 클릭, 리뷰/토론 → 머지(Merge)
- 원본 저장소 Fork →
- 업스트림 반영:
git remote add upstream <원본>→git fetch upstream→git rebase upstream/<브랜치>
- Rebase vs Merge
- Merge: 병합 이력 보존(협업 기록 가시성 ↑)
- Rebase: 커밋 재배치로 히스토리 정리(개인 브랜치 정리용)
- 유용한 명령어:
git commit --amend(마지막 커밋 수정),git push --force(주의!)git reset(스테이징/커밋 되돌리기),git cherry-pick(특정 커밋만 적용)git blame <file>(라인 변경자 추적),git rebase -i(중간 커밋 편집)
- 협업 문화:
“커밋 단위로 리뷰하고 토론하면 버그를 일찍 잡고 품질을 끌어올릴 수 있다.”
- 정의/역사: 경량 마크업 언어(John Gruber & Aaron Swartz, 2004) — README, 위키, 블로그에 광범위 사용
- 주요 문법:
- Italic →
*text*/ Bold →**text** - 헤더 →
#,##,###… / 목록 →-,1. - 링크 →
[text](url)/ 이미지 → - 인용문 →
> quote/ 코드 →`inline`+ 코드블록
- Italic →
- 연습 자료:
