프로그램/공부

1개월차 로드맵(주차별)

smokylatte 2025. 8. 11. 18:08

**1개월차(4주)**는 C#/.NET의 기초 체력을 탄탄히 만드는 달이야.
목표는 “언어 기본기 + 컬렉션/LINQ + 비동기 + 예외 + 테스트 + 도구(클리/디버깅/코드스타일)”까지 한번에 잡는 것. 아래 계획을 그대로 따라오면 돼.


1개월차 로드맵(주차별)

1주차 — C# 문법 기초와 CLI 감각 익히기

핵심 개념

  • C# 기본 문법(타입, 변수, 연산자, 분기/반복, 메서드), 값/참조 타입 감각 잡기. C# 가이드는 여기서 바로 시작! (Microsoft Learn)
  • dotnet CLI로 프로젝트 만들고 빌드/실행/테스트까지 한 번에. (Microsoft Learn)

읽을 자료(짧게 훑기)

  • “A tour of C#” 인터랙티브 튜토리얼(브라우저에서 바로 실행). (Microsoft Learn)
  • C# 초보자용 러닝 경로(Part 1). (Microsoft Learn)

실습

  1. 터미널만으로 콘솔 앱 2개 만들기:
dotnet new console -n Basics && cd Basics
dotnet run
  1. 미니 과제 3종
    • 숫자·문자열·날짜 다루기 유틸(입출력 포함)
    • 간단 계산기(예: 평균, 표준편차)
    • 문자열 파서(쉼표 구분 라인 → 숫자 배열 변환)

출력물

  • Basics 리포지토리 + README(실행 방법/예제 입력·출력).
  • Git 기본 명령으로 버전 관리 시작(init, add, commit, log). Pro Git은 북마크! (Git)

2주차 — OOP/제네릭/컬렉션 제대로 이해하기

핵심 개념

  • 클래스/구조체/레코드, 캡슐화·불변성, 인터페이스, 제네릭의 필요성.
  • 컬렉션(List/Dictionary/Queue/Stack 등) 특성 비교·선택 기준. (Microsoft Learn)
  • 예외의 철학과 기본 문법(try/catch/finally/throw), 언제 예외를 쓰고 피해야 하는지. (Microsoft Learn)

읽을 자료

실습

  • 성적부 라이브러리” 만들기
    • Student, Course, GradeBook<T> 제네릭 클래스 설계
    • 평균/상위 N%/과락 판단 메서드
    • 잘못된 입력에 대한 예외 던지기(의미있는 예외 타입 선택)

출력물

  • GradeBook 클래스라이브러리 + 콘솔 데모.
  • “예외 정책” 섹션이 있는 README(언제 예외를 던지고, 어떤 메시지를 쓰는지).

3주차 — LINQ로 데이터 다루기 + 파일 I/O

핵심 개념

  • LINQ 두 가지 문법(쿼리식 vs 메서드 체이닝)과 표준 연산자(Where/Select/GroupBy/Join/OrderBy…). 컴파일러가 쿼리식을 메서드 호출로 번역한다는 점 이해. (Microsoft Learn)
  • 다양한 데이터 소스에 동일 패턴으로 질의한다는 LINQ 철학. (Microsoft Learn)

읽을 자료

실습

  • CSV 파서 & 리포트” 콘솔 앱
    • students.csv(이름, 과목, 점수) 읽기 → LINQ로 통계(평균, 탑 3, 과목별 분포)
    • 결과를 정렬/그룹핑해서 표 형태로 출력(+ JSON 파일로 저장)
    • 잘못된 레코드는 예외검증 실패로 기록하고 계속 처리

출력물

  • CsvReport 앱 + 샘플 CSV/JSON 결과 파일.

4주차 — 비동기(async/await) + 단위테스트(xUnit) + 디버깅

핵심 개념

  • async/await + Task/Task<T> 모델: I/O 바운드(비동기 API await), CPU 바운드(Task.Run) 구분하기. (Microsoft Learn)
  • C# 비동기 프로그래밍 개요(공식 가이드의 ‘아침식사’ 예제 참고). (Microsoft Learn)
  • xUnit + dotnet test로 단위 테스트 작성. (Microsoft Learn, xunit.net)
  • VS Code/Visual Studio에서 디버깅(브레이크포인트, 스텝 인/아웃, 워치, 콜스택). (Microsoft Learn)

실습

  • 웹 다운로더” 콘솔 앱
    • URL 목록을 비동기 병렬로 다운로드(최대 동시 개수 제한, 취소 토큰 적용)
    • 예외/시간초과 처리(재시도 최대 N회)
    • 진행률 로그 출력
  • 단위 테스트
    • 순수 함수(예: 통계 계산) 테스트 5~8개
    • 예외를 기대하는 테스트(잘못된 입력 시)
    • 비동기 메서드 테스트(Timeout 시나리오 포함)

출력물

  • Downloader 앱 + Downloader.Tests 프로젝트.
  • 디버깅 스크린샷(브레이크포인트/변수 조사) 2~3장 저장. VS Code와 Visual Studio 둘 다 가이드 있음. (Microsoft Learn)

주간 루틴(권장 스케줄, 하루 60–90분)

  • Day 1–2: 개념 읽기 → 작은 코드 조각 실험(콘솔 앱/스크립트).
  • Day 3–4: 주간 미니 프로젝트 구현(테스트 포함).
  • Day 5: 리팩터링 + README 문서화 + dotnet test/dotnet format로 마무리.
    • dotnet format은 .editorconfig 기반으로 스타일을 맞춰 줌. SDK 내장 분석기와 함께 쓰면 좋아. (Microsoft Learn)

체크리스트(1개월차 완료 기준)

  • dotnet new/run/build/test를 설명 없이도 사용 가능. (Microsoft Learn)
  • List/Dictionary 차이와 선택 기준을 설명하고 예제로 시연 가능. (Microsoft Learn)
  • LINQ로 필터/투영/그룹핑/조인 최소 10개 쿼리를 자연스럽게 작성. (Microsoft Learn)
  • async/await로 I/O 바운드 작업을 병렬 처리하고 취소/예외를 올바르게 처리. (Microsoft Learn)
  • 예외 사용 원칙(정말 예외적인 상황에만, 의미있는 메시지/타입, finally 처리)을 이해하고 준수. (Microsoft Learn)
  • xUnit로 순수 함수/예외/비동기 테스트 작성 가능. (Microsoft Learn)
  • VS Code 또는 Visual Studio에서 브레이크포인트·콜스택·워치 사용 가능. (Microsoft Learn)

보너스(있으면 좋은 것들)

  • nullable reference types 켜고 경고 없애기(널 안정성 훈련). (Microsoft Learn)
  • C# 최신 문법은 “What’s new in C# 12”에서 궁금한 것만 골라 맛보기(필수 아님). (Microsoft Learn)
  • CLI 앱을 제대로 만들고 싶다면 System.CommandLine도 체험(옵션 파싱/도움말 자동 생성). (Microsoft Learn)

바로 써먹는 명령 모음

# 새 콘솔/테스트 프로젝트
dotnet new console -n Lab.Console
dotnet new xunit -n Lab.Tests

# 솔루션에 추가하고 참조 연결
dotnet new sln -n Lab && dotnet sln add **/*.csproj
dotnet add Lab.Tests reference Lab.Console

# 빌드/실행/테스트/포맷
dotnet build
dotnet run --project Lab.Console
dotnet test
dotnet format

자주 막히는 포인트 & 팁

  • 비동기 오해: CPU 바운드는 Task.Run, I/O 바운드는 API 자체가 async이어야 진짜 비동기다. 무조건 Task.Run이 답은 아님. (Microsoft Learn)
  • LINQ 성능: 체이닝은 읽기 좋지만, 큰 컬렉션에서 불필요한 중간 ToList() 호출은 피하자(지연 평가 개념 이해). (Microsoft Learn)
  • 예외 남발 금지: 흐름 제어로 예외를 쓰지 말고, “정상/예상 가능한 상황”은 조건/반환값으로 처리. 모범사례 참고. (Microsoft Learn)
  • 디버깅 습관: Print 디버깅에만 의존하지 말고 브레이크포인트/콜스택/워치를 생활화. 공식 튜토리얼로 손에 익혀 두자. (Microsoft Learn)

 

'프로그램 > 공부' 카테고리의 다른 글

Chat GPT와 함께 공부하기  (0) 2025.08.11