가장 어려운 CS 과목 / 이론은 무엇입니까? 그리고 그 이유는?
가장 어려운 CS 과목 / 이론은 무엇입니까? 그리고 그 이유는?
답변:
솔직히 컴파일러 구성!
알고리즘 설계 및 분석
나는 그 질문이 당신이 가진 선생님과 그 과목이 당신의 경력에서 어떻게 구성되었는지에 달려 있다고 생각합니다.
알고리즘 분석은 누군가가 원하는만큼 어려울 수 있습니다. 해결 될 수없는 문제들과 그뿐만 아니라 해결 될 수없는 문제들을 세어보십시오.
문제는 문제가있을 수 있으며 해결할 수 없다는 것을 알고 있다면 완벽합니다. 그러나 그렇지 않으면 어떻게해야합니까? NP-Complete임을 입증하거나이를 해결하기 위해 다항식 시간 솔루션을 찾으려고 많은 시간을 할애 할 수 있습니다.
NP-Completness를 시연하는 것은 쉽지 않습니다. 예, 많은 문제가 알려져 있지만 문제는 그것이 NP-Complete임을 입증하기위한 축소를 찾는 것입니다. 그리고 그것을 증명하기 위해 많은 시간 / 일 / 월을 보내고 다항식 시간으로 해결할 수 있다면 어떨까요? :)
컴파일러 , 그룹 이론 및 기본 재귀 함수 와 같은 다른 주제도 있습니다. 주제 계획이나 교사가 원하는만큼 어렵습니다.)
패턴 인식, 즉 인공 지능. 이것은 광학 문자 인식, Voice to text, 얼굴 인식 등과 같은 다른 패턴 인식 도구와 함께 스마트 컴퓨팅을 말합니다.
컴퓨터로 할 수 있거나하고자하는 많은 "멋진"일들이 이러한 알고리즘에 의존하며, 우리는 많은 성공을 거두지 않고 수십 년 동안 그것들을 완성하려고 시도해 왔습니다.
나의 선택은 계산 이론이다
(흠 ... 어쩌면 그렇게 중요하지는 않지만 확실히 어려웠습니다)
암호화
약간 잘못하면 회사 수백만 달러가들 수 있습니다.
운영 체제, 특히 스레딩과 관련이있는 부분.
그리고 그 이유는 5 명의 철학자들이 포크로 피자를 먹기 어렵 기 때문이 아닙니다. 그 이유는 멀티 스레드 코드 작성이 그 자체로는 어렵고 인간 (적어도 남성-아내에 따르면)이 계산하기가 쉽지 않기 때문입니다.
나도 컴파일러 디자인에 투표했다. 특히 DFA와 NFA 부분이 등장하는 곳도 있습니다. 또한 NP 문제와 문제에 대해서도 명확하지 않습니다.
기술적으로 이것은 수학의 한 가지이지만 CS와 관련이 있습니다.
CS의 거의 모든 것은 대기열을 기반으로합니다 (표시 (명확) 및 보이지 않음 (명확하거나 암시 적이 지 않음)).
CS의 초기에는 대기열이 분명했습니다.
프로그램 대기열 (각 프로그램은 카드 덱).
오늘날 대기열은 그다지 명확하지 않습니다. 예를 들어 인터넷은 패킷 교환 네트워크이지만 패킷은 대기열을 형성하고 패킷을 라우팅하는 것은 대기열 최소화의 한 형태입니다.
클라이언트가 실제로 원하는 것을 모르는 경우 클라이언트 요구 사항을 해석 합니다. 이것은 대학에서 가르치지 않으며, 가장 필수적인 기술 중 하나입니다.
개인적으로, 저는 공식적인 논리였습니다. 시작하기는 힘들었지 만 일단 규칙을 내려 놓고 규칙을 충분히 준수하면 두뇌가 Logic++;
발전하게되는데 이는 개발 과정에서 매우 좋은 일입니다.
부수적으로, 나는 그 질문에 직접 대답하고 있습니다. 이것은 제가 학위를 받았을 때 가장 어려운 주제는 아니지만, 아마도 가장 어려운 "실제 적용 가능한"주제였습니다.
컴파일러 구성. 어렵지만 뒤에있는 개념을 이해해야합니다
이 분야에는 어색한 주제가 많이 있지만, 지속적인 어려움에 대한 나의 선택은 Global System Properties 와 관련된 주제입니다 . 이 일반적인 주제의 예는 다음과 같습니다.
모든 것이 정확할 때만 존재하는 무언가를 따르기 때문에 이것은 어렵다. 당신은 글로벌 시스템 속성이 필요하지만 사실상 사용 가능한 거의 모든 도구 (그리고 내 경험에서 실제 문제로 확장되는 모든 도구 )는 실제로 로컬 추론 만합니다. 그것은 프로그램의 조각에 대한 추론에서 어려운 전체 세방으로가는 과정입니다. 특히 그 자체로 모두 올바른 조각을 가질 수는 있지만 구성 요소가 잘못 배열되어 여전히 미묘한 버그가있는 경우가 많기 때문입니다. 버그는 바람직하지 않은 출현 특성이 될 수 있습니다…
경영 정보 서비스
대학 기간 동안 매 학기마다 하나의 관리 과목을 사용하여 저를 완전히 화나게했습니다.
강인한! Compiler Design , OS Design 등과 같은 주제 는 어렵지만 실제로 흥미롭고 도전적입니다. 나는 지루함으로 가득 차서 당신은 많은 이론을 거쳐야하기 때문에 관리 정보 시스템 / 서비스 등과 같은 주제를 정말로 엉망으로 만들었습니다.
C / C ++에서 작업하는 경우 가장 중요한 개념은 포인터입니다. 그러나 어떻게 든 나는 대학에서 그것을 완전히 이해하지 못했습니다.