34P by neo 2달전 | favorite | 댓글 2개
  • CMU의 CS251 과정은 우주, 사회, 새로운 기술, 그리고 이를 이해하는 우리의 마음에 근본적인 요소인 계산에 대한 엄격한 연구에 관한 것임.
  • 계산을 연구하기 위한 적절한 언어와 도구를 갖추는 것이 중요함.
  • 이 과정에서는 계산의 본질에 관한 중심적인 결과와 질문들을 탐구함.

계산의 형식화

모듈 1: 소개

  • 이론 컴퓨터 과학이 무엇인지에 대해 고차원적으로 설명하고, 향후 다룰 내용에 대한 적절한 맥락을 설정하는 것이 주요 목표임.
  • 데이터를 형식적으로 표현하는 방법과 계산 문제의 개념을 형식적으로 정의하는 것으로 시작함.

모듈 2: 유한 오토마타

  • 간단하고 제한된 계산 모델인 결정적 유한 오토마타(DFA)를 소개하는 것이 목표임.
  • DFA는 자체적으로 흥미롭고 유용한 응용이 있지만, 알고리즘의 개념을 형식적으로 정의하기 위한 첫걸음으로 사용됨.

모듈 3: 계산의 형식화

  • 모든 종류의 계산 장치에 대한 표준 수학적 모델인 튜링 기계의 정의를 소개하는 것이 주요 목표임.
  • 튜링 기계에 대한 엄격한 연구는 노트북이 할 수 있는 것뿐만 아니라 우주가 계산적으로 할 수 있는 것과 할 수 없는 것에 대한 통찰을 제공함.

모듈 4: 계산의 한계

  • 대부분의 문제가 결정 불가능함을 증명하고, 결정 불가능한 문제의 구체적인 예를 제시함.
  • 대각선화와 축소라는 두 가지 핵심 기술을 사용함.

모듈 5: 인간 추론의 한계

  • 수학적 추론을 수학적으로 형식화하는 작업이 필요했으며, 이는 "알고리즘" 또는 "계산"을 형식화하는 것을 포함함.
  • 이론 컴퓨터 과학의 언어를 사용하여 수학의 기초에 대한 중요한 질문에 효과적으로 답함.

계산 복잡성

모듈 6: 시간 복잡성

  • 많은 문제들이 실제로 결정 가능하지만, 가장 효율적인 알고리즘이 매우 많은 계산 단계를 필요로 한다면, 그 문제는 실질적으로 결정 불가능함.
  • 시간 복잡성을 포함한 다양한 자원에 대한 계산 복잡성을 연구하지만, 시간 복잡성에 초점을 맞춤.

모듈 7: 그래프 이론

  • 그래프는 컴퓨터 과학에서 발생하는 계산 문제를 추상화하는 데 매우 기본적인 역할을 함.
  • 그래프 이론에 대한 방대한 문헌을 활용하여 그래프 문제의 계산 복잡성을 더 잘 이해할 수 있음.

모듈 8: P 대 NP

  • NP 복잡도 클래스를 소개하고 컴퓨터 과학에서 가장 중요한 미해결 문제인 P 대 NP 문제에 대해 논의함.
  • NP에 속하는 많은 자연스럽고 잘 연구된 언어들을 다항 시간 내에 결정할 수 있다면 놀라운 응용이 가능함.

모듈 9: 무작위 알고리즘

  • 무작위성은 자연을 모델링하고 분석하는 데 필수적인 개념이자 도구임.
  • 무작위 알고리즘은 무작위 수 생성기와 같은 무작위성 소스에 접근할 수 있는 알고리즘으로, 매우 작은 오류 확률로 오류를 범할 수 있음.

모듈 10: 암호학

  • 컴퓨터 과학 혁명으로 암호학 분야가 크게 번성하기 시작함.
  • 계산 복잡성의 연구는 암호학을 완전히 혁신함.

이론 컴퓨터 과학의 하이라이트

모듈 11: 추가 주제

  • 이론 컴퓨터 과학에서 선별된 하이라이트를 제시함.

GN⁺의 의견

  • 이 과정은 컴퓨터 과학의 이론적인 측면에 대한 깊은 이해를 제공하며, 학생들이 계산의 본질을 탐구하고, 복잡성 이론과 암호학과 같은 중요한 주제들을 학습할 수 있는 기회를 제공함.
  • 특히 P 대 NP 문제와 같은 미해결 문제에 대한 논의는 학생들에게 컴퓨터 과학의 최전선에서 일어나고 있는 연구에 대한 통찰력을 제공함.
  • 이 과정은 컴퓨터 과학의 기초를 다지는 데 있어 중요한 역할을 하며, 이론적 배경을 갖춘 소프트웨어 엔지니어가 되기 위한 필수적인 지식을 제공함.
  • 암호학 모듈은 현대 사회에서 데이터 보안과 개인 정보 보호의 중요성을 강조하며, 이 분야의 전문가가 되기 위한 기초를 마련함.
  • 이 과정은 컴퓨터 과학 분야에서 경력을 쌓고자 하는 학생들에게 필수적인 이론적 배경과 문제 해결 기술을 갖추도록 돕는다는 점에서 매우 가치가 있음.

아.. 대학생 때 머리 쥐어 뜯으며 고생했던 기억이..
아마도 여전히 이해 안되겠지만 그래도 열심히 들어봐야겠네요.

Hacker News 의견

  • 이 수업은 다양한 개념을 소개하고 특히 문제 해결 능력을 향상시키는 데 중점을 둠.

    • 수업 방식은 학생들에게 매주 새로운 주제에 대한 기본적인 정의만 제공하고, 해당 주제를 전문적으로 다루는 과정에서 3주차에 배울 수 있는 문제들을 해결하도록 요구함.
    • 이러한 방식은 반복적으로 적용되며, 매우 답답할 수 있지만 이는 의도된 바임.
    • 항상 도달하기 어려운 문제를 해결하려고 시도함으로써, 주어진 문제에 대해 생각하는 더 나은 전략을 개발함.
  • 이론 컴퓨터 과학은 재미있을 수도 있지만 때로는 매우 성가실 수 있음.

  • 어떤 이론 컴퓨터 과학 문제를 해결하는 방법을 묻는 Reddit 게시물을 보았고, 이는 아이오와 주립대학교의 COMS 331 (컴퓨팅 이론) 과제를 부정행위로 해결하려는 시도로 밝혀짐.

    • 아무도 도와주지 않았고 게시자는 게시물을 삭제함.
    • 문제는 흥미로워 보여서 짧은 시간 동안의 즐거운 도전으로 생각하고 시도함.
    • 수학 전공자였지만 이론 컴퓨터 과학의 모든 학부 과정을 수강했고, 그로부터 약 35년이 지난 후 많은 것을 잊어버렸지만, 문제는 COMS 331의 첫 번째 과제 세트에서 나왔으므로 기본적인 것들을 기억할 것으로 예상함.
    • 몇 일을 보냈지만 전혀 진전이 없었고, 그 이후로 여러 번 문제를 떠올리고 몇 시간이나 하루를 생각해보았지만 계속 실패함.
  • 이러한 아이디어를 프로그래밍을 통해 직접 배우고 싶다면 Tom Stuart의 "Understanding Computation From Simple Machines to Impossible Programs"을 추천함.

  • 이 수업의 더 완전한 버전을 YouTube 재생 목록에서 볼 수 있음.

  • "확률적 방법"을 포함한 이 수업의 다른 버전이 있으며, 현대적인 존재론적(구성적이 아닌) 증명을 생각하는 방식 없이는 위상학적 해결 공간의 장애물에 대한 증명을 상상할 수 없음.

  • 이 주제에 관심이 있다면, Boaz Barak의 웹사이트와 PDF로 제공되는 교과서를 확인할 수 있음.

  • 이론 컴퓨터 과학에서 가장 중요한 두 가지 아이디어:

    1. Move to front 리스트는 최적의 리스트 순서 검색 시간보다 최대 2배 더 걸릴 수 있지만, 종종 정적 리스트 순서보다 훨씬 더 나음.
    2. 무작위 알고리즘(예: 퀵소트)은 종종 최악의 경우에도 비무작위 알고리즘과 동일한 시간이 걸리지만, 실제로는 비무작위 변형보다 훨씬 더 빠름.
  • 다른 분야에서 이 수업의 버전은 어떤 모습일까?

    • 이론 물리학, 실험 물리학, 경제학 등에서의 "위대한 아이디어" 수업을 상상해볼 수 있음.
    • "정보 시대 발명"이라는 과정을 한 번 가르쳤는데, 여기서는 글쓰기부터 현대 컴퓨팅 인프라에 이르기까지 문명이 우리의 정보 시대를 재현하는 데 필요한 모든 발명과 아이디어를 논의함. 이는 단일 분야의 과정이 아니었기 때문에 더 재미있었음.
  • 대학 시절 시간 복잡도에 대한 수업을 기억함. 교수가 무작위로 학생들을 지목하며 복잡한 알고리즘의 시간 복잡도를 물어보고, 대답이 틀리면 다른 학생을 지목하는 방식이었음.

  • 우주의 근본적인 속성으로서의 계산은 어떻게 이해할 수 있을까? 식물과 동물은 어떻게 계산을 수행하는가?