프로그램 설계 방법

How to Design Programs
프로그램 설계 방법
How to Design Programs (front cover).jpg
작가.마티아스 펠라이슨, 로버트 브루스 핀들러, 매튜 플랫, 슈리람 크리슈나무르티
나라미국
주제컴퓨터 프로그래밍
장르.교재
출판인MIT 프레스
발행일자
2001년 2월 12일
미디어 타입인쇄물
페이지720
ISBN0-262-06218-6
LC ClassQA76.6.H697 2001
웹 사이트htdp.org

HtDP(How to Design Programs)는 마티아스 펠라이슨, 로버트 브루스 핀들러, 매튜 플랫, 슈리람 크리슈나무르티가 쓴 컴퓨터 프로그램의 체계적인 설계에 관한 교과서입니다.MIT Press는 2001년에 초판을, 2018년에 제2판을 발행했습니다.이 판은 온라인과 인쇄로 자유롭게 구할 수 있습니다.이 책은 문제 진술로부터 프로그램을 만드는 6단계 과정인 디자인 레시피의 개념을 소개하고 있다.이 책은 원래 교육 프로젝트인 TeachScheme!(ProgramByDesign으로 명칭 변경)와 함께 사용되었지만, 많은 대학에서 프로그램 설계 원칙을 가르치는 데 채택되었습니다.

HtDP에 따르면, 설계 프로세스는 원하는 프로그램이 소비하고 생성하는 데이터의 종류에 대한 엄격한 설명을 추출하는 것을 목표로 문제 설명의 신중한 분석에서 시작합니다.이러한 데이터 설명의 구조에 따라 프로그램의 구성이 결정됩니다.

그런 다음, 이 책은 점차 증가하는 복잡성의 데이터 형태를 조심스럽게 소개한다.원자 형태의 데이터로 시작하여 임의로 클 수 있는 데이터를 포함한 복합 형태로 진행됩니다.이 책은 각 종류의 데이터 정의에 대해 원칙적으로 프로그램을 구성하는 방법을 설명하므로 새로운 형태의 데이터를 접한 프로그래머가 여전히 체계적으로 프로그램을 구축할 수 있다.

SICP(Structure and Interpreteration of Computer Programs)와 마찬가지로 HtDP는 다른 프로그래밍 언어 체계에 의존합니다.여기에는 일련의 프로그래밍 언어를 제공하는 자체 프로그래밍 통합 개발 환경(IDE)인 DrRacket이 포함되어 있습니다.제1언어는 함수, 원자 데이터 및 단순한 구조만 지원합니다.각 언어는 이전 언어에 표현력을 더합니다.가장 큰 교육 언어를 제외하고, HtDP의 모든 언어는 기능성 프로그래밍 언어입니다.

교육학적 근거

2004년의 논문 「컴퓨터 사이언스 [1]커리큘럼의 구조와 해석」에서는, 같은 저자가, HtDP(How to Design Programs)의 교육학적 초점과 SICP(Structure and Interpretation of Computer Programs)의 교육학적 초점을 비교 및 대조했습니다.14페이지 분량의 논문에서 저자들은 HtDP의 교육학적 초점을 SICP의 교육적 초점과 구별하여 일부 학생과 교사가 SICP와 관련된 문제를 해결하기 위한 교과서로 HtDP가 어떻게 설계되었는지 보여준다.

이 논문은 SICP의 출판을 둘러싼 교육학적 지형을 소개한다.이 백서는 SICP에 대한 역사와 비평으로 시작하여 컴퓨팅 커리큘럼의 목표에 대해 설명합니다.그런 다음 HtDP의 배후에 있는 교육 원리, 특히 설계 원리에 대한 암묵적 교육 대 명시적 교육 간의 차이를 설명합니다.다음으로 스킴의 역할과 이상적인 프로그래밍 환경의 중요성에 대해 설명하고 SICP와 SICP의 경험에 대한 콘텐츠 및 학생/시설적 반응을 폭넓게 평가하여 마무리합니다.HtDP.

이 문서의 주요 초점 중 하나는 SICP와 HtDP 간의 필수 도메인 지식 차이에 대한 강조입니다.이 문서의 도표는 SICP와 HtDP의 주요 연습을 비교하고 있으며, 관련 텍스트는 HtDP의 연습보다 훨씬 더 정교한 도메인 지식을 필요로 하는 전자의 연습에 대해 설명하고 있다.이 백서에서는 이러한 필수 도메인 지식의 차이가 특정 학생들이 도메인 지식과 프로그램 설계 지식을 혼동하는 결과를 초래하는 이유를 계속 설명합니다.

이 문서에서는 HtDP의 저자들이 SICP와 관련하여 인식된 문제를 해결하기 위해 수행한 다음과 같은 4가지 주요 노력을 소개합니다.

  1. HtDP는 프로그램의 구성 방법을 암묵적으로 처리하는 것이 아니라 명시적으로 설명합니다.
  2. 프로그래밍을 쉽게 하기 위해 이 책은 복잡성의 데이터 정의 수준에 해당하는 5가지 지식 수준을 안내합니다.
  3. 이 책의 연습은 도메인 지식보다는 프로그램 설계 가이드라인에 초점을 맞추고 있습니다.
  4. 이 책은 SICP보다 도메인 지식이 적다고 가정하고 있다.

다음으로 이 백서는 관련된 데이터 정의가 자기반복적구조재귀와 문제해결 프로세스 중간에 새로운 문제데이터가 생성되고 문제해결방법이 재사용되는 생성재귀로 구분한다.수학적 통찰력 및 이러한 차이를 통해 접근 방식이 객체 지향(OO) 세계에 어떻게 확장 가능한지 강조합니다.

마지막으로, 이 논문은 교실에서 HtDP를 사용한 후 다양한 교직원과 학생들의 반응을 설명하는 것으로 마무리된다.

레퍼런스

  1. ^ The Structure and Interpretation of the Computer Science Curriculum. Journal of Functional Programming, Volume 14, Issue 4 (July 2004) Pages: 365 - 378 (PDF), NEU, 2004, archived (PDF) from the original on May 11, 2008 저자들이 HtDP와 SICP를 비교 대조하는 논문.

외부 링크