이론적 CS와 수학-자기 연구 추천


14

나는 비 CS 대학원이고 내 연구 분야는 CS와 관련이 없습니다. 그러나 컴퓨터 과학자가되기위한 더 큰 계획의 일환으로 저는 CS와 관련하여 이론적 인 컴퓨터 과학 및 수학에서 탄탄한 배경을 얻고 싶습니다. 나는 많은 연구를했고 CS와 수학의 주제에 대해 다음과 같은 최고의 / 실제로 좋은 책을 선택했으며 이에 대한 의견을 요청하고 싶습니다.

  • 다루는 주제의 완전성 (내가 놓친 것을 추천하십시오)
  • 덮힌 재료 / 과잉 영역의 겹침 (목록에서 제거해야하는 책을 권장하십시오)
  • 책을 공부하라는 명령 (저는 공부해야한다고 생각되는 순서대로 나열했습니다)

목록이 너무 오래 느껴져 CS에 필요한 핵심 지식을 잃지 않고 일부 책을 제거하는 것이 좋습니다.

따라서 책은 다음과 같습니다.

  1. WW Sawyer의 수학자 기쁨
  2. 그것을 증명하는 방법 : Daniel J. Velleman의 구조적 접근
  3. 이를 해결하는 방법 : G. Polya의 새로운 수학적 방법
  4. Greg Michaelson의 Lambda 미적분학을 통한 함수형 프로그래밍 소개
  5. Al Aho와 Jeff Ullman의 컴퓨터 과학 기초 (http://i.stanford.edu/~ullman/focs.html)
  6. 콘크리트 수학 : Graham, Knuth 및 Patashnik의 컴퓨터 과학 기반
  7. Michael Sipser의 계산 이론 소개
  8. John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman의 오토마타 이론, 언어 및 계산 소개
  9. 계산 복잡성 : Oded Goldreich의 개념적 관점
  10. 계산 복잡성 : Sanjeev Arora, Boaz Barak의 현대적인 접근 방식
  11. JH van Lint, RM Wilson의 조합 과정
  12. 계산 성 : Nigel Cutland의 재귀 함수 이론 소개
  13. 컴퓨터와 다루기 어려움 : MR Garey, DS Johnson의 NP-Completeness 이론 가이드
  14. Hartley Rogers의 재귀 함수 이론과 효과적인 계산 능력
  15. GH Hardy, JE Littlewood, G. Polya의 불평등
  16. 수학적 논리 : 연습과 함께 진행되는 과정 (1 부) : 명제 미적분학, Bookean 대수학, René Cori에 의한 술어 미적분학, Daniel Lascar
  17. 수학적 논리 : 연습과 함께하는 과정 (2 부) : 재귀 이론, 고델의 이론, 세트 이론, 모델 이론 : René Cori, Daniel Lascar


이 주제에 대해 아직 경험이 없으면 알려진 알고리즘 책으로 시작하십시오.
AJed December

@Bartek : 감사합니다. 그러나 처음에 목록을 컴파일하기 위해 살펴본 질문 중 하나였습니다. 내 질문은 실제로 모든 위대한 자료를 실제로 읽는 방법에 관한 것입니다. 시간은 항상 제약이므로 반복 등을 피하기 위해 어떤 책을 "읽지 말아야"하는지 알고 싶습니다.
CSLover

@AJed : 수학 서적 # 1-4 대신에 목록 # 5부터 시작하는 것이 좋습니다? # 5는 알고리즘과 데이터 구조에 대한 간단한 소개를 제공합니다.
CSLover

여기 너무 많아 나는 단지 하나를 골라 가고 나서 거기에 도착했을 때 다음에 무엇이 올지 걱정합니다. CS의 기초에서 탄탄한 배경을 원하는 초보자를 위해 Sipser를 시작하는 것이 좋습니다.
usul

답변:


10

귀하의 목록은 매우 문제가 있습니다.

우선 책 6,11,12,14,15,16,17을 건너 뜁니다. 책 6, 11 및 15는 일반적인 수학이며 이론적 연구원 이 아닌 한 실제로는 필요하지 않습니다 . 책 12와 14는 컴퓨터 과학이 아닌 재귀 이론을 다룹니다 (계산을 다루더라도!). 책 16과 17은 논리의 고급 주제를 다루는 반면, 매우 기본적인 논리 만 알아야합니다.

책 1,2,3 중에서, 나는 수학과 증명에 대한 일반적인 소개를 위해 하나만 선택하려고합니다.

책 5,7,8,9,10,13은 여러 가지 주제를 다룹니다 : 오토마타 이론, 알고리즘 및 복잡성 이론. 오토마타 이론과 복잡성 이론에 대해서는 Sipser (도서 7)를 따르고 알고리즘에 대해서는 Cormen, Leiserson, Rivest 및 Stein ( "CLRS")의 알고리즘 소개를 참조하십시오.

4 페이지는 기능적 프로그래밍에 대해 다룹니다. 내 컴퓨터 과학 교육에는이 주제에 대한 과정이 포함되어 있지 않지만 이론적 인 컴퓨터 과학의 많은 연구원들이 기능 기반 프로그래밍을 필수 기초의 일부로 간주한다고 말할 수 있습니다.

요약 : 당신이 남아있는 것은

  • 1-3 권 중 하나 (또는 ​​유사한 "증거에 대한 소개"텍스트)
  • CLRS
  • 제 4 권 (기능 프로그래밍)
  • 제 7 권 (자동 이론과 복잡성 이론)

철저한 답변을 보내 주셔서 감사합니다. 나는 목록이 과도하다는 것을 알고 있었지만 컴퓨터 과학자들을위한 모든 종류의 책 추천을 읽으면 긴 목록으로 끝납니다. 당신의 추천은 매우 실용적이며, 그것이 제가 추구하는 것입니다. 큰 감사합니다 !!
CSLover

1
나는 "수학이 필요하지 않다"는 충고에 동의하지 않는다. 컴퓨터 과학의 모든 측면을 고르면 수학이 어떻게 필요한지 보여 드리겠습니다. 더 많은 수학을 배울수록 더 나아집니다. 반면에 학교에 가지 않고 혼자서 실제 수학을 배우는 것은 거의 불가능합니다. 따라서 컴퓨터 과학에 집중하는 것이 좋을 것입니다. 배우기가 더 쉽습니다.
Andrej Bauer

5

사용 가능한 많은 온라인 과정 중 일부를 활용할 수도 있습니다. 예를 들어, 스탠포드MIT 는 모두 컴퓨터 과학에서 무료 온라인 과정을 제공 하고 있으며, 다른 과목도 많이 있습니다.

책이있는 한, CLRS는 훌륭한 참고 자료이지만, 앉아서 책을 읽는 서적 책으로는 약간 압도적이라는 점을 제외하고 Yuval의 권장 사항 중 두 번째입니다. 알고리즘 부분에서의 첫 번째 통과를 위해 Dasgupta 등의 알고리즘을 권장 할 수 있습니다 . . 이전 링크는 무료 온라인 사전 인쇄에 대한 것이지만 단행본으로 구매하는 것은 상당히 저렴합니다.


확인. 답변 해 주셔서 감사합니다. 대단히 감사합니다.
CSLover December

2

당신이 제안하는 참고 문헌은 "매우"이론적 인 컴퓨터 과학자가 될 것입니다. 그러나 CS가 아닌 학위를 취득한 사람이라면이 책을 모두 읽는 것이 아무런 도움이되지 않습니다. 물론 이것은 모두 필요한 것에 달려 있습니다.

책 14, 15, 16, 17과 같은 일부 책은 컴퓨터 과학자를위한 것이 아닙니다. 제 3 권은 장황하다. 그것은 모든 학생에게 일반적입니다. 그러므로 나는 책 1과 2가 같다고 가정합니다.

나를 위해-원래 컴퓨터 과학자가 아닌 전기 / 컴퓨터 엔지니어와 같은 상황에 처해 있습니다. 두 가지 초기 방향을 제안합니다.

  • 알고리즘 설계 및 분석 (많은 사람들이 CLRS 알고리즘 소개를 제안합니다 . 훌륭한 참고 자료이지만, 실제로는 그 팬이 아니며 처음에는 이해하기 어렵고 때로는 매우 장황했습니다. 목차를 따르고 거기에서 더 명확한 참조를 위해 온라인 코스를 확인하십시오).

--- 학습 한 알고리즘과 데이터 구조를 구현하기 위해 프로그래밍 언어를 숙달해야합니다. 따라서 Sedgewick알고리즘 (놀라운!)을 제안합니다 .

--- 추가 : 나는이 책을 제안합니다 : 조합 알고리즘 : 생성, 열거 및 D. Kreher의 검색. 이것은 아주 좋은 책입니다. 알고리즘의 많은 문제에 대해 다른 관점을 제시합니다.

  • JH van Lint의 콤비네이션 코스 인 콤비 네이터 (특히 그래프 이론) 는 훌륭합니다. 다른 많은 참고 문헌이 있습니다. 일반적으로 잘 알려진 조합 책이면 충분합니다. 인터넷에서 추가로 참조 할 수 있습니다. 나는 개인적으로 좋아했습니다 : peter j cameron combinatorics, Bondy and Murty Graph Theory.

  • 확률 내기 (항상 필요). 과학의 많은 분야가 확률을 사용하지 않는다는 것은 놀랍습니다. 하지만 믿으십시오. 당신이 알아야 할 것은 기본입니다.

그렇다면 : 많은 과학자들이 자신을 이론적 컴퓨터 과학자라고 부르는 것은 계산 이론 (오토 모타 및 기타)에 많은 초점을두고 있습니다. 이것에 대한 좋은 책이 있습니다 (Yuvul Filmus 게시물 참조).

Aho와 Ullman은 훌륭합니다 (실제로 Ullman의 모든 책은 좋습니다). 컴파일러 디자인에 익숙해 지십시오 ( http://infolab.stanford.edu/~ullman/ullman-books.html 참조 ).

그 후 : 그것은 모두 당신이하고 싶은 것에 달려 있습니다. 1) 데이터베이스, 2) 패턴 인식 및 데이터 마이닝, 3) 분산 알고리즘, 4) 프로그래밍 언어의 기초, 4) 무작위 알고리즘 및 기타 여러 가지 방향을 취할 수 있습니다. [각각 다른 게시물이 필요 하지만 ] 모두에 대한 아이디어를 얻으십시오!

* 일반적인 아이디어 : CS를 처음 사용하는 경우 최대한 많은 CS 하위 도메인에 익숙해 지십시오. "이론"으로 자신을 제한하면 CS 창의력을 많이 잃게됩니다! * (내 의견)


나를 위해 기능 프로그래밍. 인용 한 것과 같은 레거시 책을 사용하지 마십시오. 기능적 언어는 현재 업계에서 필요합니다. 인터넷에는 Scheme, Haskel 및 Erlang과 같은 언어에 대한 자습서가 있습니다. 매우 이론적이지 마십시오. 이것이 나의 충고입니다.
AJed December

모든 좋은 의견. 나의 목표는 완전한 자율 학습 프로그램을 설계하는 것이며이 질문은 프로그램의 한 부분만을 다루는데, 내가 조직하기가 가장 어렵다고 생각했습니다. 다른 영역에는 데이터 구조 및 알고리즘, 컴퓨터 아키텍처, 운영 체제, 네트워킹, 보안 및 암호화, 병렬 처리, 형식적 방법, 인공 지능, 그래픽 및 시뮬레이션, 데이터베이스, 프로그래밍 언어, 컴파일러, 소프트웨어 엔지니어링 및 마지막으로 Unix 철학 및 관리가 포함됩니다. 이 중 대부분은 CS의 기본 요소라고 생각하지만 별도의 질문이 필요합니다.
CSLover

최선의 트릭은 알고리즘 설계 및 분석의 강력한 기반입니다. -다른 모든 분야는 알고리즘 설계 및 분석의 하위 분야입니다.
AJed December

어떤 Sedgewick 알고리즘을 추천하고 친절하게 설명 하시겠습니까? 그는 "알고리즘"이라는 것을 가지고 있지만 시리즈는 아닙니다. 그는 또한 "C ++의 알고리즘"(또는 다른 언어)을 가지고 있는데이 책은 총 5 개의 파트로 구성된 2 권의 책입니다.
CSLover

내가 사용한 것은 C ++이었습니다. 그래도 참고로 사용했습니다. 이것은 그의 웹 사이트 cs.princeton.edu/~rs
AJed
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.