[일상] CS50’s Web Programming with Python and JavaScript 강좌 수료 [프레임워크 너머, 웹 동작 원리의 근간을 마주하다]

2026. 4. 18. 09:22·◐ 기타/개발자의 일상🎈
728x90
반응형
This is CS50W.

 

현업에서 수년간 실무 위주로 개발을 하다 보면, 편리한 모던 프레임워크와 라이브러리 뒤에 숨어 '웹이 본질적으로 어떻게 동작하는지'를 간과하기 쉽습니다.

당장의 비즈니스 로직을 구현하는 데 집중하다 보니, "브라우저와 서버는 내부적으로 어떻게 상태를 유지하고 렌더링을 최적화하는가?"와 같은 근원적인 질문에 갈증을 느끼곤 했습니다. 기왕이면 '그냥 돌아가는 코드'를 짜는 것을 넘어 변하지 않는 아키텍처의 원리를 다지고 싶어 하버드의 CS50W 과정을 수강했습니다.

CS50’s Web Programming with Python and JavaScript


과정 내내 단순히 툴 사용법을 따라 치는 것이 아니라, 요구사항에 맞춰 바닥부터 직접 구현하며 아키텍처를 증명해 내야 했습니다.
  • Project 0 & 1: Search, Wiki 모던 UI 라이브러리 없이 순수 HTML과 CSS만으로 구글 검색창 레이아웃을 짜보고, Django를 활용해 위키피디아 클론을 만들었습니다. 사용자가 입력한 Markdown을 백엔드에서 파싱하고 정규식으로 라우팅을 제어하며, 서버사이드 렌더링의 뼈대를 튼튼히 다졌습니다.

Project 0 & 1: Search, Wiki


  • Project 2: Commerce eBay와 유사한 온라인 경매 플랫폼을 구축하는 프로젝트였습니다. 핵심 과제는 복잡하게 얽힌 RDBMS의 모델링이었습니다. 유저, 경매품, 입찰 내역, 댓글 등의 Entity들을 Django ORM을 통해 다루며 외래 키 참조와 N:M 관계를 설계했습니다. 입찰가 유효성 검증이나 경매 종료 처리 같은 상태 의존적인 비즈니스 로직을 백엔드에서 견고하게 처리하는 방법, 그리고 Django Admin을 활용한 데이터 관리의 편리함을 다시금 체감할 수 있었습니다.

Project 2: Commerce


  • Project 3 & 4: Mail, Network 바닐라 자바스크립트(Vanilla JS)와 Fetch API만을 사용해 이메일 클라이언트를 SPA 형태로 구현한 경험은 특히 인상적이었습니다. 브라우저의 History API로 상태를 관리해보며, 평소 익숙하게 쓰던 React나 Vue의 내부 동작 메커니즘을 역산해 볼 수 있었습니다. 소셜 네트워크 과제에서는 Django ORM을 활용해 자기 참조가 포함된 N:M 관계를 설계하고, 비동기 통신을 통한 빠른 UI 업데이트를 구현하며 RDBMS와 프론트엔드의 매끄러운 연동을 고민했습니다.

Project 3 & 4: Mail, Network


  • Final Project: This is CS50 Chat! 과정의 마지막으로 'This is CS50 Chat!'이라는 실시간 채팅 애플리케이션을 직접 기획하고 구축했습니다. 단순한 HTTP의 Request-Response 생명주기를 벗어나, 서버와 클라이언트 간의 지속적인 연결 상태를 유지하며 이벤트를 브로드캐스팅하는 실시간 통신 아키텍처를 설계하고 동시성을 제어하는 과정이 꽤 재밌고 짜릿했습니다.

Final Project: This is CS50 Chat!

 


 

CS50W는 단순한 웹 언어의 문법을 떼는 것을 넘어, 클라이언트와 서버가 어떻게 맞물려 거대한 시스템을 이루는지 로우 레벨부터 하이 레벨까지 관통하게 해준 명강의였습니다. 화려한 도구를 좇는 것보다, 변하지 않는 웹의 원리를 이해하는 것이 엔지니어에게 얼마나 중요한지 다시금 깊이 실감했습니다. 개발자로서 기본기를 다시 점검하고 싶거나, 흩어져 있던 파편적인 웹 지식들을 하나의 견고한 체계로 결합하고 싶은 분들에게 이 강의를 강력히 추천합니다.

728x90
반응형
'◐ 기타/개발자의 일상🎈' 카테고리의 다른 글
  • [일상] CS50’s Introduction to Artificial Intelligence with Python 강좌 수료 [AI의 '블랙박스'를 열고 논리와 확률을 마주하다]
  • [일상] World IT Show 2026: 모든 서비스가 AI-Native로 진화하는 현장을 가다
  • [일상] SECON & eGISEC 2026: AI와 물리 보안이 융합된 차세대 보안 아키텍처를 엿보다
  • [일상] CS50’s Introduction to Databases with SQL 강좌 수료 [쿼리 튜닝과 DB 설계의 재발견]
예르미(yermi)
예르미(yermi)
끊임없이 제 자신을 계발하는 개발자입니다👨🏻‍💻
  • 예르미(yermi)
    예르미의 코딩노트
    예르미(yermi)
  • 전체
    오늘
    어제
    • 분류 전체보기 (987)
      • ◎ Java (133)
        • Java☕ (93)
        • JSP📋 (26)
        • Applet🧳 (6)
        • Interview👨🏻‍🏫 (8)
      • ◎ JavaScript (48)
        • JavaScript🦎 (25)
        • jQuery🌊 (8)
        • React🌐 (2)
        • Vue.js🔰 (6)
        • Node.js🫒 (3)
        • Google App Script🐑 (4)
      • ◎ HTML5+CSS3 (17)
        • HTML5📝 (8)
        • CSS3🎨 (9)
      • ──────────── (0)
      • ▣ Framework (67)
        • Spring🍃 (36)
        • Spring Boot🍀 (12)
        • Bootstrap💜 (3)
        • Selenium🌕 (6)
        • MyBatis🐣 (10)
      • ▣ Tools (47)
        • API🎯 (18)
        • Library🎲 (15)
        • JitPack🚀 (3)
        • Jenkins👨🏻 (7)
        • Thymeleaf🌿 (4)
      • ▣ Server (30)
        • Apache Tomcat🐱 (14)
        • Apache HTTP Server🛡️ (1)
        • Nginx🧶 (7)
        • OracleXE💿 (4)
        • VisualSVN📡 (4)
      • ▣ Infra & DevOps (5)
        • LGTM Stack🔭 (5)
      • ▣ OS : 운영체제 (18)
        • cmd : 명령프롬프트💻 (10)
        • Linux🐧 (8)
      • ▣ SQL : Database (56)
        • Oracle SQL🏮 (26)
        • PL SQL💾 (9)
        • MySQL🐬 (6)
        • MariaDB🦦 (6)
        • H2 Database🔠 (3)
        • SQL 실전문제🐌 (6)
      • ────────── (0)
      • ◈ Human Project (86)
        • Mini : Library Service📚 (15)
        • 화면 설계 [HTML]🐯 (10)
        • 서버 프로그램 구현🦁 (15)
        • Team : 여수어때🛫 (19)
        • Custom : Student🏫 (9)
        • Custom : Board📖 (18)
      • ◈ Yermi Project (40)
        • 조사모아(Josa-moa)📬 (5)
        • Riddle-Game🧩 (6)
        • 맛있을 지도🍚 (2)
        • 어디 가! 박대리!🙋🏻‍♂️ (5)
        • 조크베어🐻‍❄️ (4)
        • Looks Like Thirty🦉 (2)
        • Toy Project💎 (12)
        • 오픈소스 파헤치기🪐 (4)
      • ◈ Refactoring (15)
        • Mini : Library Service📚 (8)
        • 서버 프로그램 구현🦁 (1)
        • Team : 여수어때🛫 (0)
        • 쿼리 튜닝일지🔧 (6)
      • ◈ Coding Test (80)
        • 백준(BOJ)👨🏻‍💻 (71)
        • 프로그래머스😎 (2)
        • 코드트리🌳 (7)
      • ◈ Study (130)
        • 기초튼튼 개발지식🥔 (26)
        • HTTP 웹 지식💡 (4)
        • 클린코드(Clean Code)🩺 (1)
        • 디자인패턴(GoF)🥞 (12)
        • 알고리즘(Algorithm)🎡 (14)
        • 다이어그램(Diagram)📈 (4)
        • 파이썬(Python)🐍 (16)
        • 에러노트(Error Note)🧱 (34)
        • 웹 보안(Web Security)🔐 (11)
        • 인공지능 AI🛸 (8)
      • ◈ 공부모임 (55)
        • 혼공학습단⏰ (18)
        • 코드트리 챌린지👊🏻 (2)
        • 개발도서 100독👟 (8)
        • 나는 리뷰어다🌾 (15)
        • 국가기술자격 서포터즈🌻 (12)
      • ◈ 자격증 공부 (37)
        • 정보처리기사🔱 (16)
        • 정보처리산업기사🔅 (9)
        • 컴퓨터활용능력 1급📼 (12)
      • ─────────── (0)
      • ◐ 기타 (123)
        • 알아두면 좋은 팁(tip)✨ (46)
        • 개발자의 일상🎈 (54)
        • 개발도서 서평🔍 (10)
        • 개발관련 세미나🎤 (2)
        • 블로그 꾸미기🎀 (9)
        • 사도신경 프로젝트🎚️ (2)
  • 인기 글

  • 최근 댓글

  • 반응형
    250x250
  • 태그

    프로그래밍
    Project
    코딩 테스트
    일상
    Database
    SQL
    html
    자바스크립트
    CSS
    jsp
    Oracle
    백준 티어
    spring
    Error Note
    백준
    코딩
    Java
    javascript
    꿀팁
    BOJ
  • hELLO· Designed By정상우.v4.10.3
예르미(yermi)
[일상] CS50’s Web Programming with Python and JavaScript 강좌 수료 [프레임워크 너머, 웹 동작 원리의 근간을 마주하다]
상단으로

티스토리툴바