이 글은 Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass에 제출하는 내용입니다.
"컴퓨터 과학이란 천문학이 망원경에 관한 것이 아닌 것과 같다."
— Edsger W. Dijkstra
제가 만든 것 (What I Built)
문제점: 추상적인 유리 뒤에 갇히다 (Trapped Behind Abstract Glass)
소프트웨어 개발자, 컴퓨터 과학 학생, 기술 애호가로서 우리는 수천 시간을 고해상도 모니터 뒤에 격리되어 보냅니다. 우리는 추상적인 LeetCode 알고리즘을 풀고, 분산 아키텍처를 디버깅하며, 가상의 데이터베이스를 최적화하는 데 몰두하지만, 컴퓨터 과학의 핵심 공리가 실제 세계 시스템, 물리학, 인간 행동 관찰에서 영감을 받았다는 사실을 자주 잊습니다.
마지막으로 IDE를 벗어나 물리적인 대기열을 관찰하거나, 실제 병목 현상을 추적하거나, 정렬되지 않은 서가 선반이 선형 검색(linear search)을 어떻게 반영하는지 목격한 것이 언제였나요?
CodeWalk 소개 🌱
CodeWalk는 개발자들에게 노트북을 닫고, 스마트폰을 치우고, 물리적 세계로 나가 기초 컴퓨터 과학 개념이 작동하는 것을 관찰하도록 도전하는 오픈 소스, 로컬 우선(local-first)의 동반 애플리케이션입니다.
다음과 같은 것들을 연구할 때 유용합니다:
- 자료 구조 및 알고리즘 (Data Structures & Algorithms): 빵집 카운터에서의 FIFO 대기열(Queue), 트레이 반납 스테이션의 LIFO 스택(Stack), 또는 거리 주소 번호에 걸친 이진 검색(Binary Search).
- 시스템 및 아키텍처 (Systems & Architecture): 차선 합류 지점에서의 병목 현상, 혹은 보행자 횡단보도에서의 우선순위 스케줄링(Priority Scheduling).
- AI 및 데이터 원칙 (AI & Data Principles): 과일 진열대의 이상 감지(Anomaly Detection) 또는 통근 흐름의 표본 추출 편향(Sampling bias).
화면 사용 시간을 최소화하도록 설계되다
CodeWalk는 화면이 전체 경험에서 가장 짧은 부분이 되도록 의도적으로 아키텍처가 설계되었습니다.:
- 개념 및 시간 선택: 컴퓨터 과학(CS) 범주를 하나 고르고 야외 활동 시간을 설정합니다 (5분, 10분 또는 15분).
- 물리적 미션 받기: 오픈 웨이트 Google Gemma 모델이 안전하고 목표 지향적인 실제 관찰 과제를 생성해 줍니다.
- "휴대폰을 치우세요": 앱은 주변 환경 카운트다운 모드로 전환되어 휴대폰을 주머니에 넣고, 밖에 나가서 주변을 둘러보라는 알림을 줍니다.
- 관찰 기록: 책상으로 돌아와 본 것을 타이핑합니다.
- 실세계에서 CS 이론 매핑: Gemma가 관찰 내용을 분석하고, 원리를 포착했는지 평가하며, 각 물리적 주체를 소프트웨어/하드웨어 대응물에 매핑하고, 다음 야외 산책을 제안해 줍니다.
데모
🚶 현장 테스트 스토리 (실외 적용)
CodeWalk를 실제 환경에서 테스트하기 위해 **개념: 큐(Queue) (FIFO)**를 선택하고 10분 타이머를 설정하여 근처 길 모퉁이의 커피숍으로 걸어갔습니다.
앱은 저에게 다음과 같이 지시했습니다:
"근처 커피숍 카운터나 버스 정류장으로 걸어가세요. 적절한 거리를 두고 서서, 휴대폰을 치우고 10분 동안 사람들이 도착하고 떠나는 것을 관찰하세요. 주목할 점: 새로운 사람이 어디에 합류하나요? 주문이 시간이 더 오래 걸리면 무슨 일이 일어나나요?"
저는 휴대폰을 주머니에 넣고 계산대에서 15피트 떨어진 벤치에 앉아 관찰했습니다:
- 고객들은 엄격하게 뒤쪽(꼬리 부분)부터 합류했습니다 (tail에서 enqueueing).
- 계산원은 앞에서 한 번에 하나의 거래를 처리했습니다 (head에서 dequeueing).
- 한 고객이 다섯 가지 맞춤 음료로 복잡한 주문을 하자, 그들 뒤의 줄은 2명에서 9명으로 불어났습니다—이는 Head-of-Line (HoL) Blocking과 싱글 스레드 백프레셔(backpressure)가 생생하게 물리적으로 구현된 모습이었습니다!
제가 돌아와 메모를 제출하자, CodeWalk는 다음과 같이 알려주었습니다:
⚠️ [IMG:N] 형식 토큰은 이미지 placeholder 입니다. 번역하지 말고 원래 위치에 그대로 유지하세요.
- 판단:
STRONG_MATCH (95% 신뢰도)
- 실제 세계 매핑:
줄 서 있는 고객들 → 버퍼/큐 요소(Buffer / Queue elements)
계산대 → 싱글 컨슈머 스레드(Single Consumer thread)
복잡한 5가지 음료 주문 → Head-of-Line Blocking을 유발하는 고지연 작업(High-latency task causing Head-of-Line blocking)
- CS 학습 포인트: 네트워크 패킷 라우팅 및 FIFO 큐에서, 선두 패킷이 처리 지연을 겪으면 페이로드 크기와 관계없이 모든 후속 패킷의 처리가 중단되는 현상(head-of-line blocking)이 발생합니다.
🖥️ 애플리케이션 흐름 및 인터페이스