개발/개발 공부

밑바닥부터 만드는 컴퓨팅 시스템으로 학습하기

codesparkling 2025. 4. 4. 17:01

부스트캠프 멤버십 때, 마스터로 활동하시는 준일님께서 이런 책도 있다고 소개해주셨다.그 주 주말에 교보문고에서 읽어보고 샀는데 아직 거의 손을 대지 못했다. 부스트캠프 활동이 끝나고 Denamu 프로젝트도 긴 호흡으로 전환되었고, 신입 공채도 슬슬 줄어들고 있어서 시간이 조금씩 나는 것 같아 오늘부터 3달 정도의 커리큘럼으로 책을 읽어보려고 한다.
학부생 때 컴퓨터 구조 강의를 들었지만 그게 무려 8년 전의 일이라 기억이 잘 나지 않아 더더욱 CS 지식에 절실했다. (심지어 군대가기 전이라 더 기억이 안난다.)
해당 커리큘럼은 클로드를 이용해서 월~금 학습, 주말은 복습 및 보완으로 계획했다.
1주차는 오늘부터 일요일까지 빠르게 쳐내려고 한다.

커리큘럼

1개월차: 컴퓨터 하드웨어의 기초

1주차: 불 논리와 기본 게이트

  • : 1장 이론 학습 - 불 논리, 불 함수 개념 이해
  • : 1장 이론 학습 - 논리 게이트와 HDL 소개
  • : 프로젝트 01 시작 - 기본 논리 게이트(NOT, AND) 구현
  • : 프로젝트 01 계속 - OR, XOR 게이트 구현
  • : 프로젝트 01 완성 - 멀티플렉서, 디멀티플렉서 구현
  • 주말: 휴식 또는 미완성 부분 보완, 1장 내용 복습

2주차: 불 연산

  • : 2장 이론 학습 - 이진수 표현, 2의 보수법
  • : 2장 이론 학습 - 가산기 아키텍처, ALU 설계
  • : 프로젝트 02 시작 - 반가산기, 전가산기 구현
  • : 프로젝트 02 계속 - 증분기 구현
  • : 프로젝트 02 완성 - ALU 구현 및 테스트
  • 주말: 휴식 또는 미완성 부분 보완

3주차: 메모리

  • : 3장 이론 학습 - 순차 논리, 플립플롭
  • : 3장 이론 학습 - 레지스터, RAM 구조
  • : 프로젝트 03 시작 - 1비트 레지스터 구현
  • : 프로젝트 03 계속 - 16비트 레지스터, RAM8 구현
  • : 프로젝트 03 완성 - RAM64, RAM512, RAM4K 구현
  • 주말: 휴식 또는 미완성 부분 보완

4주차: 기계어와 어셈블리

  • : 4장 이론 학습 - 기계어 개념, Hack 컴퓨터 명령어 집합
  • : 4장 이론 학습 - 어셈블리 언어 소개, 심볼
  • : 프로젝트 04 시작 - 간단한 어셈블리 프로그램 작성
  • : 프로젝트 04 계속 - 산술 연산 어셈블리 코드 작성
  • : 프로젝트 04 완성 - I/O 처리 어셈블리 코드 작성
  • 주말: 1개월 학습 내용 총 복습, 미완성 부분 보완

2개월차: 컴퓨터 아키텍처와 가상 머신

5주차: 컴퓨터 아키텍처 설계

  • : 5장 이론 학습 - 폰 노이만 아키텍처, CPU 설계 원리
  • : 5장 이론 학습 - 제어 유닛, 명령어 실행 주기
  • : 프로젝트 05 시작 - CPU 구현
  • : 프로젝트 05 계속 - 메모리 매핑 구현
  • : 프로젝트 05 완성 - 전체 컴퓨터 통합 및 테스트
  • 주말: 휴식 또는 미완성 부분 보완

6주차: 어셈블러 개발

  • : 6장 이론 학습 - 어셈블러 설계, 2단계 변환
  • : 6장 이론 학습 - 심볼 테이블, 변환 알고리즘
  • : 프로젝트 06 시작 - 기본 어셈블러 구현 (심볼 없음)
  • : 프로젝트 06 계속 - 심볼 처리 기능 추가
  • : 프로젝트 06 완성 - 전체 어셈블러 테스트
  • 주말: 휴식 또는 미완성 부분 보완

7주차: 가상 머신 I

  • : 7장 이론 학습 - 가상 머신 개념, 스택 기반 연산
  • : 7장 이론 학습 - VM 명령어 집합, 메모리 세그먼트
  • : 프로젝트 07 시작 - 산술 논리 VM 명령어 구현
  • : 프로젝트 07 계속 - 메모리 접근 VM 명령어 구현
  • : 프로젝트 07 완성 - 전체 VM 트랜슬레이터 테스트
  • 주말: 휴식 또는 미완성 부분 보완

8주차: 가상 머신 II

  • : 8장 이론 학습 - 프로그램 제어, 분기문, 함수 호출
  • : 8장 이론 학습 - 함수 호출 프로토콜, 재귀
  • : 프로젝트 08 시작 - 분기 명령어 구현
  • : 프로젝트 08 계속 - 함수 호출/리턴 명령어 구현
  • : 프로젝트 08 완성 - 전체 VM 테스트, 재귀 함수 실행
  • 주말: 2개월 학습 내용 총 복습, 미완성 부분 보완

3개월차: 고수준 언어와 운영체제

9주차: 고수준 언어

  • : 9장 이론 학습 - Jack 언어 소개, 구문
  • : 9장 이론 학습 - 객체 지향 특성, API
  • : 프로젝트 09 시작 - Jack 언어로 간단한 프로그램 작성
  • : 프로젝트 09 계속 - 더 복잡한 Jack 프로그램 작성
  • : 프로젝트 09 완성 - 미니 게임이나 애플리케이션 개발
  • 주말: 휴식 또는 미완성 부분 보완

10주차: 컴파일러 I

  • : 10장 이론 학습 - 컴파일러 구조, 어휘 분석
  • : 10장 이론 학습 - 구문 분석, LL 파싱
  • : 프로젝트 10 시작 - 토크나이저 구현
  • : 프로젝트 10 계속 - 구문 분석기 구현
  • : 프로젝트 10 완성 - 구문 트리 XML 출력 테스트
  • 주말: 휴식 또는 미완성 부분 보완

11주차: 컴파일러 II

  • : 11장 이론 학습 - 코드 생성, 심볼 테이블
  • : 11장 이론 학습 - 표현식 컴파일, 제어 흐름
  • : 프로젝트 11 시작 - 표현식 코드 생성
  • : 프로젝트 11 계속 - 제어 흐름 코드 생성
  • : 프로젝트 11 완성 - 전체 컴파일러 테스트
  • 주말: 휴식 또는 미완성 부분 보완

12주차: 운영체제

  • : 12장 이론 학습 - OS 역할, Jack OS 아키텍처
  • : 12장 이론 학습 - 메모리 관리, 수학 라이브러리
  • : 프로젝트 12 시작 - 수학 라이브러리, 문자열 처리 구현
  • : 프로젝트 12 계속 - 메모리 관리, 배열 구현
  • : 프로젝트 12 완성 - 입출력 루틴, 그래픽 기능 구현
  • 주말: 3개월 전체 내용 최종 복습 및 종합 프로젝트 완성

학습 마무리 (추가 1주)

  • 미완성된 프로젝트 보완
  • 전체 시스템 통합 테스트
  • 커스텀 프로그램 개발 시도
  • 학습 내용 총정리 및 회고