1P by GN⁺ 2일전 | ★ favorite | 댓글 1개
  • MIT OpenCourseWare의 "Mathematics for Computer Science" 강의는 컴퓨터 과학 및 소프트웨어 공학에 필수적인 수학적 기초를 제공함
  • 조합론, 그래프 이론, 이산 수학 등을 다루며, 컴퓨터 과학 문제 해결 능력 강화에 중점에 둠
  • 강의 자료에는 강의노트, 연습문제, 솔루션이 모두 제공되어 실전 학습에 큰 도움을 줌
  • 이 과정은 알고리듬 설계, 계산 이론, 오류 검증과 같이 실무 및 연구 모두에 적용 가능함
  • 무료 공개로 누구나 접근 가능하며, MIT의 표준 커리큘럼 기반임

코스 개요

  • MIT OpenCourseWare의 "Mathematics for Computer Science"는 컴퓨터 과학과 전기공학 학생들을 위한 핵심 수학 과정임
  • 주요 내용으로는 조합론, 그래프 이론, 이산구조, 확률 등이 포함되며, 프로그램의 논리적 근거알고리듬 분석을 위한 기초 제공임

주요 학습 영역

  • 이산 수학: 숫자, 함수, 집합, 논리 등 프로그램의 기초적인 수학 구조 강조
  • 조합론과 확률: 알고리듬의 효율성, 무작위성, 데이터 분포를 이해하는 데 도움
  • 그래프 이론: 데이터 구조 및 네트워크 도식화, 경로 탐색 및 최적화 문제에 중요한 역할 수행
  • 알고리듬의 정확성 증명: 논리적 추론과 수학적 귀납법 사용하여 프로그램의 안정성 보장

학습 자료

  • 강의노트: 이론 설명 및 예제 중심으로 체계적 구성
  • 연습문제: 각 단원별로 개념 적용 능력을 높일 수 있도록 다양한 난이도의 문제 포함
  • 솔루션: 스스로 문제를 해결한 뒤 결과를 검증할 수 있도록 해설 제공

적용 및 가치

  • 컴퓨터 과학, 시스템 설계, 인공지능, 소프트웨어 엔지니어링 분야의 기본 토대 마련
  • 무료 접근으로 예비 개발자, 현업 엔지니어, 연구자 모두에게 폭넓은 학습 기회 제공
  • MIT 표준 커리큘럼에 따라 구성되어, 글로벌 기준의 학습 경험 제공

추가 참고 사항

  • 외부 사이트 이용 시, 해당 사이트의 이용 조건 및 라이선스가 MIT OCW와 상이할 수 있음
  • MIT OCW는 외부 사이트의 콘텐츠에 대해 책임지지 않음
Hacker News 의견
  • 세계 최고 수준의 대학 강의, 특히 31시간짜리 심도 있는 수학 강의를 누구나 무료로 들을 수 있다는 게 너무 놀라움. 하지만 긴 강의 시리즈는 늘 완주가 힘들었음. 개념만 빠르게 설명하는 짧은 영상을 찾게 되는데, 그러다보면 깊이도 부족하고 결국 중간에 포기하는 경우가 많았음. 실제 대학에 등록하여 공부할 때의 동기부여가 중요한 것 같음. 혹시 이런 강의를 혼자서 끝까지 완주한 분이 계신지, 어떻게 꾸준함과 자기관리를 유지하는지 궁금함. 강의 플랫폼(Coursera, KhanAcademy 등)의 경우 마감일 등으로 어느 정도 강제성이 있어서 좀 더 동기부여가 잘 됨. 데드라인 중심 공부 방식에 익숙한 듯함. 혹시 집중력이 부족해서 짧은 강의를 찾는 분들이라면(깊이는 부족할 수도 있지만) Professor Dave Explains 유튜브 플레이리스트 참고 추천함

    • 수학을 좋아하고 박사까지 완주하며 자기관리 능력도 높은 편이지만, 처음에는 영상 강의만으로 공부하는 게 쉽지 않았음. 어느 정도 기초지식의 임계치에 도달해야 영상 강의로 자기 주도 학습이 가능하다고 느낌. 중요한 요소는 동료들과 함께 프로그램에 참여하고, 무엇보다 경험 많은 멘토의 존재라고 생각함. 멘토 없이 수학에서 독학 단계까지 올라가기 어렵다고 봄. 실수를 바로잡아주고 길을 안내해줄 누군가가 반드시 필요함. 피아노 선생님과 같다고 보면 될 듯함. 또 하나 중요한 것은 시간투자임. 선형대수, 해석학, 미적분 등 진짜로 유창하게 알고 싶다면 1년에 주당 10시간 이상 투자해야 함. 겨우 2시간만 투자하면 깊이 없는 얕은 이해만 남음

    • 동기부여의 원천이 실제로 대학에 등록하는 거에서 온다는 질문에 대해, 대부분의 경우 요인은 졸업 후 얻는 임금 프리미엄이라고 생각함. 실제 MIT 학생과 달리 온라인 강의만으로는 MIT 졸업장과 가까워지지 않기에 동기부여가 약한 것임. 데드라인 중심 공부에 익숙하다면, 스스로에게 벌칙을 주거나 누군가에게 약속을 하고, 끝까지 하지 못하면 비용을 지불하게 하는 식도 방법임. 실제로 강의나 책을 스스로 끝까지 해본 적 있는데, 나의 동기는 순수한 호기심, 그리고 모르는 걸 인정하거나 알면서도 가짜처럼 행동하는 느낌이 싫어서임

    • 대학 시절, 교수와 동기들과 함께 CS 고급 과목을 배우던 시간이 내 인생에서 가장 즐거운 시기였음. 졸업 후에는 업무에 치이고, 이제는 교수의 과제 채점, 시험, 질의응답 등이 없다 보니 새로운 지식을 배우기가 훨씬 어려워짐. 온라인 대학에 재미로 등록할까 생각 중인데, 온라인이면서 저렴하고, 고급 CS/ML 과목을 제공하며, 제대로 교수와 상호작용할 수 있는 그런 프로그램이 존재하는지 궁금함. 제안 있으면 알려주면 감사함

    • 이 강의는 내 현재 프로젝트(OpenPythonSCAD용 G-code 프리뷰어 및 3D 모델링 시스템)에 엄청난 도움이 되었음. 추천하는 추가 자료는 SICP(Structure and Interpretation of Computer Programs), Euclid's Elements 온라인, Motion Mountain, 그리고 LibriVox, Project Gutenberg 등임. 어릴 때 시골의 작은 책장, 교도소의 도서탑, 26마일 떨어진 동네 백화점 등 다양한 채널로 책을 구해서 읽었던 추억도 있음

    • 강의를 따라가면서 내가 수학적 훈련이나 연습이 부족해서 한 번에 한 강의를 끝내는 게 어려웠음. 기본기를 보충하려 다른 사이트에서 설명을 찾아가며, 한 강의를 며칠(혹은 몇주)씩 나눠서 들었음. 중요한 건 기대치 조절임. 막힌 지점에서 곰곰이 고민하거나 시간을 두고 자연스럽게 익숙해질 때까지 기다리는 게 필요함. 이해한 것과 모르는 내용 목록을 간단한 메모 파일이나 종이에 정리하고, 몇 달간 꾸준히 계속하면 어느 순간 길이 보임

  • 강의 주제 목록은 MIT OCW 페이지에서 볼 수 있음, 강의노트는 이곳에서 제공됨. 코스 전반은 익숙하지 않지만, 마지막 강좌인 'Large Deviations'(대편차)에 독특한 점이 있음. 개인적으로는 'State machines'(상태 기계) 강의가 좋았는데, 불 변수 예제 대신 15 퍼즐 퍼즐 등 이해하기 쉬운 사례와 불변량 개념을 소개함. 교재(PDF)는 여기에 있음. 실제 문제들도 상당히 실용적임. 예를 들어 건조한 불 대수 대신 파일 시스템이 잠겼을 때 발생하는 조건을 공식화하는 식의 내용을 다룸

    • 'Large Deviations' 강의는 흥미로운 주제인데, 실제로 강의노트에서 대편차가 뭔지 정의하지는 않음. IID 확률변수의 합에 대한 Chernoff(지수) 경계의 예시가 나오지만, 직접 대편차라는 말을 쓰지는 않아서 살짝 아쉬움. 이런 경계는 컴퓨터과학, 특히 최근의 러닝이론에서 자주 등장함

    • 각 단원이 서로 독립적인 것처럼 보임. 즉, 어떤 순서로 공부해도 무방한지 궁금함. Set theory(집합론) 등이 수학적 기반이니 확인차 물어봄

  • OpenCourseware로 커리어를 전환한 경험 있는 분 계신지 궁금함. MOOC 시대는 홍보와는 다르게 실상 이미 고학력이고 자발적인 학습자나 취미층에 좀 더 적합했다고 생각함. 비난하려는 건 아니고, 나 역시 업무와 가사 사이에 짬짬이 양자컴퓨팅을 공부하고 있는데, 이렇게 하면 진도빼서 겨우 수십년쯤 후에야 따라잡을 듯함

  • 'Mathematics for Computer Science' 같은 코스명에는 약간 거부감이 듦. 나는 원래 컴퓨터 사이언스를 수학의 한 분과로 여겨왔음

    • 이론적으로는 동의하지만, 실제 산업에서는 수학 전공자만큼 소프트웨어 엔지니어가 많이 필요하지 않고, CS에 수학적 흥미가 있어서 입문하는 경우도 거의 없음. 그래서 CS 커리큘럼도 실용적임. 주요 알고리즘, 자료구조, 파이썬 코딩법 등, 빅테크 입사에 필요한 내용에 중점임

    • 수학의 모든 하위분야마다 'Mathematics for [세부 분과]' 형식의 강좌명이 붙어도 이상할 건 없음. 나도 강좌를 직접 지어본 적은 없지만, 내용적으로 다른 'Intro to' 강의와 비슷함

  • 이 코스를 Lean으로 형식화(formalize)해볼 예정임. 얼마나 어려울지는 미지수지만 관심있다면 github 저장소로 함께 해보면 좋겠음

    • 이 작업은 CSLib initiative의 목표와도 매우 잘 맞음. 관련 링크는 이 LinkedIn 포스트밖에 지금은 없음

    • 이 작업을 통해 얻게 되는 점이 궁금함

  • 해설/풀이 문제집까지 제공되었으면 좋겠음. 내가 답을 어떻게 검증하라는 건지 궁금함

    • LLM을 활용하면 어느 정도 가이드라인을 얻을 수는 있음. 아니면 MathExchange에서 답을 구하는 것도 방법임
  • 강의 영상은 MIT OCW, YouTube 플레이리스트에서 볼 수 있음

  • 난 이 과정의 문제들에 대한 해설/풀이를 어디서 찾을 수 있는지 궁금함

  • 강의 주제들은 흥미롭지만, 평범한 소프트웨어 엔지니어에게 꼭 필요한 내용은 별로 없다는 생각임. 처음 프로그래밍할 때 수학적 내용이 실제 현업에서 놀라울 정도로 적다는 걸 깨달았음. 물론 이런 MIT 강의들은 소프트웨어 엔지니어가 아닌 컴퓨터 과학자를 위한 것임. 미국 대학에서는 이 둘을 꽤 구분함

    • 물리나 로보틱스 쪽을 조금이라도 다룬다면 그런 얘기는 성립하지 않음. 수학 없이는 아무 것도 이해 못하게 됨

    • 내가 수학 지식이 있을 때와 없을 때 모두 소프트웨어 엔지니어로 근무해봤는데, 두 경우의 기여도나 효과가 완전히 다름

    • 첫 주제가 'Predicates, Sets, and Proofs'인데, 나도 일상 프로그래밍에서 술어(predicate)와 집합을 자주 씀

    • 내가 안 써도 남들이 안 쓰는 게 아님. 소프트웨어 엔지니어링은 컴퓨터 과학 없이는 성립 불가임

    • 실제로 모든 내용을 심층적으로 몰라도, 개념적 이해는 명세에 맞는 옳은 프로그램을 짜는 데 꼭 필요하다고 생각함. 인간은 본능적으로 알고리즘 문제를 ad-hoc하게 풀 수 있지만, 수학은 사고방식에 구조와 엄격함을 주고, 문제를 체계화해 해결과정을 기계적으로 만들 수 있게 함. 적어도 집합론, 논리, 관계형 대수 정도만 알면 프로그래밍과 수학 사이의 연결고리를 훨씬 잘 이해할 수 있음. 추천 도서는 Introductory Logic and Sets for Computer Scientists (Nimal Nissanke 저), 그리고 Understanding Formal Methods (Jean-Francois Monin 저)임

  • 잠깐만... CS는 원래 수학 학위임. 이 타이틀은 수학을 위한 수학이라는 느낌임