Author | Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi |
---|---|
Subject | Computer programming |
Genre | Textbook |
Publisher | MIT Press |
Publication date | February 12, 2001 |
Publication place | United States |
Media type | |
Pages | 720 |
ISBN | 0-262-06218-6 |
LC Class | QA76.6 .H697 2001 |
Website | htdp |
How to Design Programs (HtDP) is a textbook by Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, and Shriram Krishnamurthi on the systematic design of computer programs. MIT Press published the first edition in 2001, and the second edition in 2018, which is freely available online and in print. The book introduces the concept of a design recipe, a six-step process for creating programs from a problem statement. While the book was originally used along with the education project TeachScheme! (renamed ProgramByDesign), it has been adopted at many colleges and universities for teaching program design principles.
According to HtDP, the design process starts with a careful analysis of a problem statement with the goal of extracting a rigorous description of the kinds of data that the desired program consumes and produces. The structure of these data descriptions determines the organization of the program.
Then, the book carefully introduces data forms of progressively growing complexity. It starts with data of atomic forms and then progresses to compound forms, including data that can be arbitrarily large. For each kind of data definition, the book explains how to organize the program in principle, thus enabling a programmer who encounters a new form of data to still construct a program systematically.
Like Structure and Interpretation of Computer Programs (SICP), HtDP relies on a variant of the programming language Scheme. It includes its own programming integrated development environment (IDE), named DrRacket, which provides a series of programming languages. The first language supports only functions, atomic data, and simple structures. Each language adds expressive power to the prior one. Except for the largest teaching language, all languages for HtDP are functional programming languages.
In the 2004 paper, The Structure and Interpretation of the Computer Science Curriculum, [1] the same authors compared and contrasted the pedagogical focus of How to Design Programs (HtDP) with that of Structure and Interpretation of Computer Programs (SICP). In the 14-page paper, the authors distinguish the pedagogic focus of HtDP from that of SICP, and show how HtDP was designed as a textbook to address some problems that some students and teachers had with SICP.
The paper introduces the pedagogical landscape surrounding the publication of SICP. The paper starts with a history and critique of SICP, followed by a description of the goal of the computing curriculum. It then describes the principles of teaching behind HtDP; in particular, the difference between implicit vs. explicit teaching of design principles. It then continues on to describe the role of Scheme and the importance of an ideal programming environment, and concludes with an extensive evaluation of content and student/faculty reaction to experience with SICP vs. HtDP.
One of the major focuses of the paper is the emphasis on the difference in required domain knowledge between SICP and HtDP. A chart in the paper compares major exercises in SICP and HtDP, and the related text describes how the exercises in the former require considerably more sophisticated domain knowledge than those of HtDP. The paper continues on to explain why this difference in required domain knowledge has resulted in certain students having confused domain knowledge with program design knowledge.
The paper claims the following four major efforts that the authors of HtDP have made to address perceived issues with SICP:
The paper then distinguishes between structural recursion, where the related data definition happens to be self-referential, requiring usually a straightforward design process, and generative recursion, where new problem data is generated in the middle of the problem-solving process and the problem solving method is re-used, often requiring ad hoc mathematical insight, and stresses how this distinction makes their approach scalable to the object-oriented (OO) world.
Finally, the paper concludes with a description of responses from various faculty and students after having used HtDP in the classroom.
Learning theory describes how students receive, process, and retain knowledge during learning. Cognitive, emotional, and environmental influences, as well as prior experience, all play a part in how understanding, or a worldview, is acquired or changed and knowledge and skills retained.
Iteration is the repetition of a process in order to generate a sequence of outcomes. Each repetition of the process is a single iteration, and the outcome of each iteration is then the starting point of the next iteration.
Structure and Interpretation of Computer Programs (SICP) is a computer science textbook by Massachusetts Institute of Technology professors Harold Abelson and Gerald Jay Sussman with Julie Sussman. It is known as the "Wizard Book" in hacker culture. It teaches fundamental principles of computer programming, including recursion, abstraction, modularity, and programming language design and implementation.
In education, a tutorial is a method of transferring knowledge and may be used as a part of a learning process. More interactive and specific than a book or a lecture, a tutorial seeks to teach by example and supply the information to complete a certain task.
A modeling language is any artificial language that can be used to express data, information or knowledge or systems in a structure that is defined by a consistent set of rules. The rules are used for interpretation of the meaning of components in the structure of a programming language.
Problem-based learning (PBL) is a teaching method in which students learn about a subject through the experience of solving an open-ended problem found in trigger material. The PBL process does not focus on problem solving with a defined solution, but it allows for the development of other desirable skills and attributes. This includes knowledge acquisition, enhanced group collaboration and communication.
Pedagogy, most commonly understood as the approach to teaching, is the theory and practice of learning, and how this process influences, and is influenced by, the social, political, and psychological development of learners. Pedagogy, taken as an academic discipline, is the study of how knowledge and skills are imparted in an educational context, and it considers the interactions that take place during learning. Both the theory and practice of pedagogy vary greatly as they reflect different social, political, and cultural contexts.
A pedagogical pattern is the re-usable form of a solution to a problem or task in pedagogy, analogous to how a design pattern is the re-usable form of a solution to a design problem. Pedagogical patterns are used to document and share best practices of teaching. A network of interrelated pedagogical patterns is an example of a pattern language.
Principles and Standards for School Mathematics (PSSM) are guidelines produced by the National Council of Teachers of Mathematics (NCTM) in 2000, setting forth recommendations for mathematics educators. They form a national vision for preschool through twelfth grade mathematics education in the US and Canada. It is the primary model for standards-based mathematics.
A Praxis test is one of a series of American teacher certification exams written and administered by the Educational Testing Service. Various Praxis tests are usually required before, during, and after teacher training courses in the U.S.
In the state of Victoria, Australia, the Victorian Essential Learning Standards(VELS) was the curriculum framework for Preparatory to Year 10 school levels, which replaced the Curriculum and Standards Framework II (CSF 2) in 2006. Students starting Year 11 normally proceed to complete the Victorian Certificate of Education (VCE), but other education options are available. VELS was superseded by the Australian Curriculum AusVELS in 2013.
The ProgramByDesign project is an outreach effort of the PLT research group. The goal is to train college faculty, high school teachers, and possibly even middle school teachers, in programming and computing.
An intelligent tutoring system (ITS) is a computer system that imitates human tutors and aims to provide immediate and customized instruction or feedback to learners, usually without requiring intervention from a human teacher. ITSs have the common goal of enabling learning in a meaningful and effective manner by using a variety of computing technologies. There are many examples of ITSs being used in both formal education and professional settings in which they have demonstrated their capabilities and limitations. There is a close relationship between intelligent tutoring, cognitive learning theories and design; and there is ongoing research to improve the effectiveness of ITS. An ITS typically aims to replicate the demonstrated benefits of one-to-one, personalized tutoring, in contexts where students would otherwise have access to one-to-many instruction from a single teacher, or no teacher at all. ITSs are often designed with the goal of providing access to high quality education to each and every student.
In computer science, recursion is a method of solving a computational problem where the solution depends on solutions to smaller instances of the same problem. Recursion solves such recursive problems by using functions that call themselves from within their own code. The approach can be applied to many types of problems, and recursion is one of the central ideas of computer science.
The power of recursion evidently lies in the possibility of defining an infinite set of objects by a finite statement. In the same manner, an infinite number of computations can be described by a finite recursive program, even if this program contains no explicit repetitions.
Composition studies is the professional field of writing, research, and instruction, focusing especially on writing at the college level in the United States.
Essentials of Programming Languages (EOPL) is a textbook on programming languages by Daniel P. Friedman, Mitchell Wand, and Christopher T. Haynes.
The National Curriculum Framework 2005 is the fourth National Curriculum Framework published in 2005 by the National Council of Educational Research and Training (NCERT) in India. Its predecessors were published in 1975, 1988, 2000.
Second-language acquisition classroom research is an area of research in second-language acquisition concerned with how people learn languages in educational settings. There is a significant overlap between classroom research and language education. Classroom research is empirical, basing its findings on data and statistics wherever possible. It is also more concerned with what the learners do in the classroom than with what the teacher does. Where language teaching methods may only concentrate on the activities the teacher plans for the class, classroom research concentrates on the effect the things the teacher does has on the students.
Bootstrap is based at Brown University (USA), and builds on the research and development done there. Bootstrap curriculum consists of 4 research-based curricular computer science modules for grades 6-12. The 4 modules are Bootstrap:Algebra, Bootstrap:Reactive, Bootstrap:Data Science, and Bootstrap:Physics. Bootstrap materials reinforce core concepts from mainstream subjects like Math, Physics and more, enabling non-CS teachers to adopt the introductory materials while delivering rigorous and engaging computing content drawn from Computer Science classes at universities like Brown, WPI, and Northeastern.
Information Communications Technology is usually included in the Home Economics and Livelihood Education program in grade school and taught through the Technology and Home Economics program in high school. The recent status of ICT education in the Philippines, along with other Southeast Asian countries, was surveyed by the Southeast Asian Ministers of Education Organization (SEAMEO) in 2011. Using the UNESCO model of ICT Development in Education, the countries were ranked as Emerging, Applying, Infusing or Transforming. The Philippines were ranked at the Infusing stage of integrating ICT in education, indicating that the country has integrated ICT into existing teaching, learning and administrative practices and policies. This includes components such as a national vision of ICT in education, national ICT plans and policies, complementary national ICT and education policies, professional development for teachers and school leaders, community or partnership and teaching and learning pedagogies. A 2012 study reported that public high schools in Metro Manila had a computer to student ratio of 1:63. While 88 percent of schools have internet connections, half of the students claimed not to be using it.