One of the most influential texts in computer science is Structure and Interpretation of Computer Programs. Before changing to a Python-based approach, MIT used this book for their introductory programming course. It is freely available with a number of resources thanks to the textbook site. When perusing the list of schools using SICP, I see that all of them are universities/colleges, which leads me to my question.Is SICP appropriate for an advanced high school computer science course?In particular, I'm thinking of students who have taken two years of AP Computer Science, so they would have completed a year of CS50 AP and a year of Java. I see that UC Berkeley has a self-paced CS class that works through it. I understand that some things are at the university level for a reason, but I am trying to bridge the gap between post-AP CS classes in high school and intro CS classes in college.
Is SICP appropriate for an advanced high school CS course?
curriculum design;resource information
First, I love SICP. I took and later TA'd 6.001. Like many MIT grads, I tried to teach it where I became a professor, and, like most who attempted it, decided not to do so again.The main reason it is rarely successful outside of MIT isn't the difference in student quality but the difference in the support the school can offer. If I remember correctly, at MIT, there were three lectures a week, two recitation sections, one tutorial section (approximately 4 students meeting for an hour with a graduate TA), and many staffed lab hours. A high school or small college cannot generally provide that level of support. Also, when taught outside MIT, it is usually as a junior-level course, and students still usually find it overwhelming. (An exception is UC Berkeley, which taught it successfully for many years and the freshman level.)I am not saying a high school class could not succeed, just that it would be very difficult, and the amount of work required would be exceptional. It might also be hard to motivate students to work so hard on something so abstract, when they could be learning app development, computer games, or another more immediately rewarding topic with less effort.In summary, I would advise against using SICP for a class at the high school level, although I do think it is possible to supervise an independent study with a sufficiently motivated and sophisticated individual or small group of students.