컴퓨터 과학을 가르치는 것의 잔인성에 대하여

On the Cruelty of Really Teaching Computer Science

'진짜 컴퓨터 과학의 잔인성에 대하여'는 E. W. Dijkstra[1] 1988년 논문으로, 컴퓨터 프로그래밍은 수학의 한 분야로 이해되어야 하며, 프로그램의 형식적 확률은 정확성의 주요 기준이라고 주장한다.

제목에도 불구하고, 대부분의 기사는 컴퓨터 과학을 과학 에서 더 넓은 시각으로 표현하려는 디크스트라의 시도에 관한 것으로, 마지막에 골수로서 다루어지는 가르침이다. 구체적으로 디크스트라는 후아레 논리로 구성된 '신입생들을 위한 프로그래밍 입문 과정 제안'을 미해석 형식 체계로 만들었다.

타당성 논란

"소프트웨어 엔지니어링"이라는 용어가 생긴 이후, 형식적인 검증은 거의 항상 너무 자원이 많이 소모되어 실현 가능성이 없다고 여겨져 왔다.[citation needed] 복잡한 어플리케이션에서, 애초에 프로그램이 무엇을 해야 하는지를 정확하게 명기하는 어려움도 공통적인 오류의 원천이다. 버그를 제거하기 위해 일반적으로 다른 소프트웨어 테스트 방법을 채택하고 있으며, 소프트웨어 품질 측정 시 많은 다른 요인을 고려한다.

디즈크스트라는 생애 마지막 날까지 프로그램의 정확성(유지관리성과 효율성과 같은 다른 요구사항은 배제하지 않지만)에 대한 불충분한 강조 때문에 컴퓨팅의 중심적 난제가 만족스럽지 못했다고 주장했다.[2]

교육학적 유산

오늘날 가르친 컴퓨터 과학은 Dijkstra의 모든 충고를 따르지 않는다. 이 커리큘럼은 일반적으로 Dijkstra의 초기 저술에 따라 복잡성을 관리하고 미래의 변화에 대비하는 기법을 강조한다. 여기에는 추상화, 계약에 의한 프로그래밍, 디자인 패턴 등이 포함된다. 버그를 피하기 위한 프로그래밍 기법과 기존의 소프트웨어 시험 방법을 기본 요건으로 가르치고, 학생들은 특정한 수학 도구에 노출되지만, 형식적인 검증 방법은 아마도 고급 주제일 경우를 제외하고는 교과과정에 포함되지 않는다.[3] 그래서 어떤 면에서는 디크스트라의 사상이 지켜졌지만, 그가 가장 강하게 느낀 사상은 그렇지 못했다.

소프트웨어 공학에서 새롭게 구성된 커리큘럼은 Dijkstra의 권고를 채택했다. 이러한 프로그램의 초점은 시스템 정확성의 공식적인 검증을 용이하게 하기 위해 소프트웨어 요구 사항과 설계의 공식적인 사양이다. 캐나다에서, 그들은 종종 물리학 기반 공학에서 유사한 핵심역량을 가진 공인 공학 학위가 있다.[4]

참조

  1. ^ Dijkstra, Edsger W. On the Cruelty of Really Teaching Computing Science (EWD-1036) (PDF). E.W. Dijkstra Archive. Center for American History, University of Texas at Austin. (설명)
  2. ^ Dijkstra, Edsger W. The end of Computing Science? (EWD-1304) (PDF). E.W. Dijkstra Archive. Center for American History, University of Texas at Austin. (설명)
  3. ^ MIT 과정:
  4. ^ "Software Engineering Programs Are Not Computer Science Programs" (PDF). Archived from the original (PDF) on 2013-09-27. Retrieved 2012-10-30.