HtDP's Introductory Programming Course & Book » How to Design Programs

| | TrackBacks (0)

As mentioned last week, here's a brief ('Radified') intro to the introductory course on Programming I've been researching » How to Design Programs (HtDP).

This entry is distilled from info contained in the Preface. If a real programmer could check my phrasing for accuracy (to ensure no glaring errors) I'd appreciate it .. cuz I'm not yet familiar with all the terminology. See here:

How to Design Programs | An Introductory Course on Programming

Everybody should learn to program! Programming teaches a variety of skills (e.g. » critical reading, analytical thinking, creative synthesis, & attention-to-detail) important to many professions.

Educators should therefore give Programming the same priority as Math or English. [ RADical statement, no? ]

The HtDP course de-emphasizes the details of programming languages in order to focus on » the design process.

Two things make this course different from other introductory courses on Programming:

  1. Explicit design guidelines (comprising a 6-step process that begins with Analyzing-the-problem and concludes with Identifying-errors-thru-testing).
  2. The DrScheme programming environment (which is able to grow with a student as they master more material).

Programming boils-down to two essential concepts:

  1. Relating one quantity to another
  2. Evaluating a relationship by substituting values for names

The Scheme programming language allows students to focus on these two basic aspects, making it the natural choice for beginners. Students are therefore able to develop complete programs during their very first session.

••• today's entry continues here below •••

The course features "Design Recipes," which are modules designed to help students develop basic programming skills in an increasing order of difficulty. These Design Recipes focus on program design in the following areas:

  1. Data-driven (Programs which focus on the connection between input data & programs. The most common type. Easy to understand, create, extend & modify.)
  2. Generative Recursion (Programs which generate new instances of problems as they recur)
  3. Accumulation (Programs which collect data as they process inputs)
  4. History Sensitivity (Programs which remember information between successive applications)
  5. Abstracting (Programs which generalize two or more similar designs into one and derive the original instances from it)

The HtDP course employs a "programming environment" called DrScheme, which was created specifically for the course. The course is not about learning how to program in (the language of) Scheme per se. Rather the course focuses on how to design programs by employing only a small number of Scheme constructs:

  1. Function Definition
  2. Application
  3. Conditional Expressions
  4. Structure Definition
  5. Local Definitions
  6. Assignments

Students wishing to (learn to) use Scheme as a programming tool would need to read/study another book, altho this would be easier after working thru HtDP.

DrScheme employs 5 carefully chosen sublanguages (of Scheme). These sublanguage levels were developed by observing beginners in the computer lab at Rice University. These incremental language levels allow error messages to be tailored to a student's knowledge-level. Basic mistakes are prevented by implementing appropriate protection modes, thus sparing the student much wasted time & frustration. This tower of language levels includes the following settings:

  1. Beginning Student (used with Parts 1 & 2)
  2. Beginning Student with List Abbreviations (used with Part 3)
  3. Intermediate Student (used with Part 4)
  4. Intermediate Student with Lambda (used with Parts 5 & 6)
  5. Advanced Student (used with Parts 7 & 8)

By eliminating the need to memorize input & output operations (which are tedious & boring), students can learn the core of Scheme in a couple of hours.

The book contains 8 Parts comprising 43 chapters (called Sections). Universities normally teach the entire course in one semester. High schools normally teach the first 3 Parts (18 Sections) in the same time.

Custom Styles for HtDP Online Text

If you're also reading the HtDP text online, and find the default styling suks, I've created a custom CSS file, which is easier on the eyes than the original.

HOW TO » create a folder somewhere on your hard drive named 'HTDP' (or whatever name you prefer). Save a copy of the online *.html file there by selecting 'Save As' from your browser's File menu (with the web page open .. ensure you save the file as *.html and not *.mht).

Your browser will automatically create another folder inside the /HTDP folder. This new folder will be given the same name as the *.html file (something like » curriculum-Z-H-5_files). This folder will contain the graphics and CSS used with the online web page.

Inside that folder you'll find a CSS file named » curriculum-Z-S.css. Unzip my compressed archive and copy the contents into the directory that contains the original CSS file (overwriting the original with my tweaked version).

Then open (or reload) the downloaded web page in your favorite browser (from the /HTDP folder on your hard drive).

I made a few minor tweaks to the original styles, such as changing the default (eyeball-searing) white background to a shaded color, and I replaced the default serif'ed font with one that's more-readable. (Also made the font bigger and bumped up the line-height.)

I'm sure the authors would prefer you purchase the book. (Perhaps this is why they left the online version with styles so annoyingly difficult to read). Certainly this program represents a worthy cause, but if you'd like to save a tree, my styles should help you save your eyes.

Before closing, I must say I was surprised the authors avoid use of the list functions (in their HTML as I have here). This is especially surprising since Scheme is a dialect of LISP, and LISP is an acroynym for "LISt Processing language".

Related entry » Structure & Interpretation of Computer Programs | SICP's Wizardly Intro to Computer Science & Programming

Here's a thread developing in the Rad forums from someone (Magoo) working thru the online SICP course for the first time, and his impressions, as a newbie. It's titled » HtDP & SICP - compare & contrast.

For more along these lines, here's a Google search preconfigured for the query » how to design programs introductory programming book 

« Previous Rad entry ||| NEXT Rad entry »

0 TrackBacks

Listed below are links to blogs that reference this entry: HtDP's Introductory Programming Course & Book » How to Design Programs.

TrackBack URL for this entry: http://radified.com/cgi-bin/xmt4/mt-tb.cgi/106

About this Entry

This page contains a single entry by Rad published on February 1, 2009 7:28 AM.

Structure & Interpretation of Computer Programs | SICP's Wizardly Intro to Computer Science & Programming was the previous entry in this blog.

Jay Leno's Retro Super Bowl ad is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.