- 이 글은 실제로 존재하지 않지만, 소프트웨어 개발자들이 배워야 할 현실적이고 풍자적인 컴퓨터 과학 강의들을 제안
- 각 강의는 현대 개발 문화의 문제점이나 편향된 사고방식을 비판적으로 드러냄
- 예를 들어, 객체지향 패러다임에 대한 맹신, 명령줄 도구의 UX 무시, 느린 언어의 성능 오해 등을 다룸
- 또한 개발자들의 심리적 집착과 비생산적 습관을 다루는 과목도 포함
- 전체적으로 컴퓨터 과학 교육의 한계와 개발 문화의 자기반성 필요성을 유머러스하게 제시
CSCI 2100: 객체지향 프로그래밍을 잊기
- 이 과목은 객체 계층 구조에 속하지 않은 변수와 함수의 개념을 배우는 과정
- 객체지향 중심 사고에서 벗어나, 함수형 프로그래밍의 유연성과 단순함을 탐구
- “함수(function)”를 “메서드(method)”보다 더 일반적이고 재사용 가능한 개념으로 소개
- 선수 과목은 “추상 기본 클래스(abstract base class)”라는 용어를 사용한 어떤 수업이든 해당
-
객체지향 패러다임의 과도한 의존을 해체하고, 프로그래밍의 본질적 사고를 재정립하는 목적
CSCI 3300: 고전 소프트웨어 연구
- 역사적으로 중요한 소프트웨어 제품을 분석하고 토론하는 수업
- 다루는 예시로 VisiCalc, AppleWorks, Robot Odyssey, Zork, MacPaint 등이 포함
- 초점은 사용자 인터페이스(UI) 와 하드웨어 제약이 창의성에 미친 영향에 맞춰짐
- 과거의 제약 속에서 탄생한 혁신을 통해, 현대 소프트웨어 디자인의 근본 원리를 재조명
CSCI 4020: 느린 언어로 빠른 코드 작성하기
-
인터프리터 언어(Python 등) 로도 고성능 코드를 작성하는 방법을 다룸
- 고수준에서 성능 분석(performance analysis) 을 수행하고, C++ 수준의 효율성을 달성하는 전략을 탐구
- 코드의 취약성 감소와 개발의 즐거움 유지를 동시에 추구
- “느린 언어는 느리다”는 통념을 깨고, 언어 설계와 실행 환경의 최적화 가능성을 보여주는 강의
CSCI 2170: 명령줄 도구의 사용자 경험(UX)
- 명령줄 기반 프로그램의 사용자 경험 설계 원칙을 다루는 입문 과목
- 출력의 관련성, 가독성, 최소화를 핵심 주제로 함
- UNIX의 ‘ls’ 명령어를 사례로, 과도한 옵션과 복잡한 인터페이스 문제를 분석
- 명령줄 도구도 그래픽 UI처럼 사용자 중심 설계가 필요함을 강조
PSYC 4410: 프로그래머의 집착 심리
- 소프트웨어 개발자가 흔히 빠지는 비생산적 집착과 강박적 사고 패턴을 탐구
- 예: 코드 포매팅, 분류 체계(taxonomy), 타입 시스템, 과도한 파일 분할 등
- 낯선 시스템을 접했을 때 나타나는 즉각적 비판 반응(knee-jerk criticism) 을 심리학적으로 분석
- 개발자의 인지적 편향과 완벽주의 성향을 이해하고, 협업과 창의성의 균형을 모색하는 수업
전체 맥락
- 이 목록은 실제 강의 계획이 아니라, 컴퓨터 과학 교육과 개발 문화의 풍자적 비판으로 구성
- 각 과목은 기술 중심 사고의 맹점을 드러내며, 개발자에게 사고의 유연성과 자기 성찰을 촉구
- 2015년 게시물이지만, 오늘날에도 여전히 유효한 문제의식을 담고 있음