저는 꽤 능숙한 소프트웨어 엔지니어이지만 많은 이론을 모릅니다. 더 많은 이론을 배우고 싶습니다. 내가 관심이있는 특정 주제는 계산 복잡성, 형식 언어 및 유형 이론입니다. 그러나 나는이 분야들에 대해 배우기 시작하는 방법에 대해 잃어 버렸습니다.
자율 학습을 통해 더 많은 이론을 배우고 싶은 사람에게 어떤 자료를 추천 하시겠습니까? 소프트웨어 엔지니어를위한 이론적 인 컴퓨터 과학자가 학습 안내서가 있습니까?
저는 꽤 능숙한 소프트웨어 엔지니어이지만 많은 이론을 모릅니다. 더 많은 이론을 배우고 싶습니다. 내가 관심이있는 특정 주제는 계산 복잡성, 형식 언어 및 유형 이론입니다. 그러나 나는이 분야들에 대해 배우기 시작하는 방법에 대해 잃어 버렸습니다.
자율 학습을 통해 더 많은 이론을 배우고 싶은 사람에게 어떤 자료를 추천 하시겠습니까? 소프트웨어 엔지니어를위한 이론적 인 컴퓨터 과학자가 학습 안내서가 있습니까?
답변:
상당히 다른 영역을 가진 넓은 분야입니다.
컴퓨터가 무엇인지에 대한 가장 기본적인 아이디어부터 시작하겠습니다. Hopcroft와 Ullman, "Automata 이론, 언어 및 계산 소개".
특히 권장하는 이유는 증거에 대한 강조입니다. 그들은 엄격한 사고 방식을 통해 당신을 안내합니다. 그것은 프로그램 작성과 과학적인 것의 차이점입니다.
유형 이론을 배우는 방법에는 여러 가지가 있습니다. 일하는 프로그래머에게는 B. Pierce의 타입과 프로그래밍 언어 가 좋은 출발입니다. R. Harper의 프로그래밍 언어 에 대한 실질적인 기초 도 좋습니다. 운영 의미론에 대한 약간의 이해하기 쉬운 배경 지식을 원한다면 G. Winskel의 프로그래밍 언어의 공식 의미론 : 소개를 추천 합니다. T. Nipkow, G. Klein, 콘크리트 시맨틱, Winskel의 책의 변형이 Isabelle / HOL 대화 형 증거 보조를 위해 공식화되었습니다. 이 책 (혹은 어떤 책)에서든 증명을 다루기가 정말 어렵다고 생각합니다. 가까운 전문가가 질문을하도록하세요. 타입 이론에 대한 수학적 접근 방식을 더 원한다면 JR Hindley, JP Seldin, Lambda-Calculus and Combinators : Introduction 또는 H. Barendregt의 Lambda Calculi with Types를 살펴볼 수 있습니다 . Barendregt에서 시작하는 것은 좋지 않습니다.
단일 권장 사항을 원한다면 Part VI (고급 주문 시스템)를 제외한 모든 Pierce를 읽고 책에서 설명하는 장난감 언어를 구현하십시오. 유형 이론에 대한 강력한 근거가 될 것이며 아마도 더 나은 프로그래머가 될 것입니다.
나는 추천 계산 가능성, 복잡성 및 언어 마틴 데이비스, 론 시갈과 일레인 웨 여커에 의해.
나는 이론과 알고리즘을 좋아합니다. 한 번 인도 마드라스 (IIT-M)에 위치한 Indian Institute of Technology의 이론적 컴퓨터 과학을 방문 할 기회가있었습니다. IIT-M에는 많은 이론가들이 있습니다. 내가 거기에 갔을 때 나는 이론이 무엇인지 전혀 몰랐지만, 오늘 나는 그것을 완전히 사랑한다.
포인터에 대한 @Kate F 덕분에 Hopcroft와 Ullman은 시작하기에 훌륭한 장소입니다.
그러나 여기 제가 시작한 방법이 있습니다.
Cormen의 알고리즘 소개를 읽으십시오. <\ br> 시작하기에 좋은 곳입니다. 공부할 때 가능한 한 오랫동안 각 증거를 이해하려고 노력하십시오. 증명을 잘 이해하면 원하는 언어로 동일한 논리를 코딩하십시오. (약간 시간이 걸리지 만 시도해 볼 가치가 있습니다)
같은 이론에서 최고 회의에 따라
FOCS
SODA
STOC
알고리즘 게임 이론 - EC (전자 상거래)
COLT (학습 이론에 회의) - 학습 이론
CRYPTO - 암호화
전산 기하학 - SOCG (전산 기하학 심포지엄)
에 (회의 CCC를 계산 복잡도)-복잡성 이론
많은 것을 이해하지 못하더라도 가능한 한 많이 읽고 생각 하십시오. 최대한 많은 증거를해야합니다 ..