skip to main content
Skip header Section
How to design programs: an introduction to programming and computingApril 2001
Publisher:
  • MIT Press
  • 55 Hayward St.
  • Cambridge
  • MA
  • United States
ISBN:978-0-262-06218-3
Published:19 April 2001
Pages:
693
Skip Bibliometrics Section
Bibliometrics
Abstract

No abstract available.

Cited By

  1. ACM
    Nelson T, Greenman B, Prasad S, Dyer T, Bove E, Chen Q, Cutting C, Del Vecchio T, LeVine S, Rudner J, Ryjikov B, Varga A, Wagner A, West L and Krishnamurthi S (2024). Forge: A Tool and Language for Teaching Formal Methods, Proceedings of the ACM on Programming Languages, 8:OOPSLA1, (613-641), Online publication date: 29-Apr-2024.
  2. ACM
    Pechorina Y, Anderson K and Denny P Metacodenition: Scaffolding the Problem-Solving Process for Novice Programmers Proceedings of the 25th Australasian Computing Education Conference, (59-68)
  3. ACM
    Ostermann K, Binder D, Skupin I, Süberkrüb T and Downen P (2022). Introduction and elimination, left and right, Proceedings of the ACM on Programming Languages, 6:ICFP, (438-465), Online publication date: 29-Aug-2022.
  4. ACM
    Rivera E and Krishnamurthi S (2022). Structural versus pipeline composition of higher-order functions (experience report), Proceedings of the ACM on Programming Languages, 6:ICFP, (343-356), Online publication date: 29-Aug-2022.
  5. ACM
    Bartha S, Cheney J and Belle V (2021). One down, 699 to go: or, synthesising compositional desugarings, Proceedings of the ACM on Programming Languages, 5:OOPSLA, (1-29), Online publication date: 20-Oct-2021.
  6. Gorson J, LaGrassa N, Hu C, Lee E, Robinson A and O’Rourke E An Approach for Detecting Student Perceptions of the Programming Experience from Interaction Log Data Artificial Intelligence in Education, (150-164)
  7. ACM
    Fisler K, Schanzer E, Weimar S, Fetter A, Renninger K, Krishnamurthi S, Politz J, Lerner B, Poole J and Koerner C Evolving a K-12 Curriculum for Integrating Computer Science into Mathematics Proceedings of the 52nd ACM Technical Symposium on Computer Science Education, (59-65)
  8. ACM
    Allen M Pedagogical and Curricular Practices for Computer Science Education with English Language Learners Proceedings of the 2020 ACM Conference on International Computing Education Research, (330-331)
  9. ACM
    Gu X, Heller M, Li S, Ren Y, Fisler K and Krishnamurthi S Using Design Alternatives to Learn About Data Organizations Proceedings of the 2020 ACM Conference on International Computing Education Research, (248-258)
  10. ACM
    Castro F and Fisler K Qualitative Analyses of Movements Between Task-level and Code-level Thinking of Novice Programmers Proceedings of the 51st ACM Technical Symposium on Computer Science Education, (487-493)
  11. ACM
    Santos I, Hauswirth M and Nystrom N Experiences in bridging from functional to object-oriented programming Proceedings of the 2019 ACM SIGPLAN Symposium on SPLASH-E, (36-40)
  12. ACM
    Baniassad E, Beschastnikh I, Holmes R, Kiczales G and Allen M Learning to listen for design Proceedings of the 2019 ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software, (179-186)
  13. ACM
    Williams A, Kaur H, Iqbal S, White R, Teevan J and Fourney A Mercury Proceedings of the 32nd Annual ACM Symposium on User Interface Software and Technology, (81-94)
  14. ACM
    Ren Y, Krishnamurthi S and Fisler K What Help Do Students Seek in TA Office Hours? Proceedings of the 2019 ACM Conference on International Computing Education Research, (41-49)
  15. ACM
    Craig M, Petersen A and Campbell J Answering the Correct Question Proceedings of the ACM Conference on Global Computing Education, (72-77)
  16. ACM
    Bijlsma A, Passier H, Pootjes H and Stuurman S Integrated Test Development Proceedings of the 7th Computer Science Education Research Conference, (9-20)
  17. ACM
    Castro F Towards a Theory of HtDP-based Program-Design Learning Proceedings of the 2018 ACM Conference on International Computing Education Research, (260-261)
  18. ACM
    Nunes-Harwitt A, Gambogi M and Whitaker T Quick-Sort Proceedings of the 49th ACM Technical Symposium on Computer Science Education, (547-549)
  19. ACM
    Tunnell Wilson P, Fisler K and Krishnamurthi S Evaluating the Tracing of Recursion in the Substitution Notional Machine Proceedings of the 49th ACM Technical Symposium on Computer Science Education, (1023-1028)
  20. ACM
    Bijlsma A, Huizing C, Kuiper R, Passier H, Pootjes H and Smetsers J A Structured Design Methodology for Concurrent Programming Proceedings of the 6th Computer Science Education Research Conference, (1-9)
  21. ACM
    Fisler K and Castro F Sometimes, Rainfall Accumulates Proceedings of the 2017 ACM Conference on International Computing Education Research, (12-20)
  22. ACM
    Smith R, Tang T, Warren J and Rixner S An Automated System for Interactively Learning Software Testing Proceedings of the 2017 ACM Conference on Innovation and Technology in Computer Science Education, (98-103)
  23. Hamid N (2016). A functional flipped CS1, Journal of Computing Sciences in Colleges, 32:2, (120-126), Online publication date: 1-Dec-2016.
  24. Seppke B and Dreschler-Fischer L Fast Interactive Functional Computer Vision with Racket Proceedings of the 9th European Lisp Symposium on European Lisp Symposium, (97-98)
  25. ACM
    Castro F and Fisler K On the Interplay Between Bottom-Up and Datatype-Driven Program Design Proceedings of the 47th ACM Technical Symposium on Computing Science Education, (205-210)
  26. Morazán M (2015). Generative and accumulative recursion made fun for beginners, Computer Languages, Systems and Structures, 44:PB, (181-197), Online publication date: 1-Dec-2015.
  27. ACM
    Castro F Investigating Novice Programmers' Plan Composition Strategies Proceedings of the eleventh annual International Conference on International Computing Education Research, (249-250)
  28. ACM
    Lee M and Ko A Comparing the Effectiveness of Online Learning Approaches on CS1 Learning Outcomes Proceedings of the eleventh annual International Conference on International Computing Education Research, (237-246)
  29. ACM
    Basu S, Wu A, Hou B and DeNero J Problems Before Solutions Proceedings of the Second (2015) ACM Conference on Learning @ Scale, (205-213)
  30. ACM
    Baldwin D Can We "Flip" Non-Major Programming Courses Yet? Proceedings of the 46th ACM Technical Symposium on Computer Science Education, (563-568)
  31. ACM
    Schanzer E, Fisler K, Krishnamurthi S and Felleisen M Transferring Skills at Solving Word Problems from Computing to Algebra Through Bootstrap Proceedings of the 46th ACM Technical Symposium on Computer Science Education, (616-621)
  32. ACM
    Ramsey N (2014). On teaching *how to design programs*, ACM SIGPLAN Notices, 49:9, (153-166), Online publication date: 26-Nov-2014.
  33. ACM
    Passier H, Stuurman S and Pootjes H Beautiful JavaScript Proceedings of the Computer Science Education Research Conference, (65-76)
  34. ACM
    Gabriel R I Throw Itching Powder at Tulips Proceedings of the 2014 ACM International Symposium on New Ideas, New Paradigms, and Reflections on Programming & Software, (301-319)
  35. ACM
    Ramsey N On teaching *how to design programs* Proceedings of the 19th ACM SIGPLAN international conference on Functional programming, (153-166)
  36. ACM
    Esper S, Foster S and Griswold W CodeSpells Proceedings of the 18th ACM conference on Innovation and technology in computer science education, (249-254)
  37. Morazán M Functional Video Games in CS1 III Revised Selected Papers of the 14th International Symposium on Trends in Functional Programming - Volume 8322, (149-167)
  38. ACM
    Page R and Gamboa R A more formal approach to "computer science: principles" Proceeding of the 44th ACM technical symposium on Computer science education, (257-262)
  39. ACM
    Black A, Bruce K, Homer M, Noble J, Ruskin A and Yannow R Seeking grace Proceeding of the 44th ACM technical symposium on Computer science education, (129-134)
  40. ACM
    Tobin-Hochstadt S and Van Horn D (2012). Higher-order symbolic execution via contracts, ACM SIGPLAN Notices, 47:10, (537-554), Online publication date: 15-Nov-2012.
  41. ACM
    Tobin-Hochstadt S and Van Horn D Higher-order symbolic execution via contracts Proceedings of the ACM international conference on Object oriented programming systems languages and applications, (537-554)
  42. ACM
    Hamid N Automated web-based user interfaces for novice programmers Proceedings of the 50th Annual Southeast Regional Conference, (42-47)
  43. Jeuring J, Gerdes A and Heeren B A programming tutor for haskell Proceedings of the 4th Summer School conference on Central European Functional Programming School, (1-45)
  44. Morazán M Functional video games in CS1 II Proceedings of the 12th international conference on Trends in Functional Programming, (146-162)
  45. ACM
    Fossati D and Guzdial M The use of evidence in the change making process of computer science educators Proceedings of the 42nd ACM technical symposium on Computer science education, (685-690)
  46. ACM
    Rößling G and Mühlhäuser M An unusual CS 1 with high standards and confirming results Proceedings of the fifteenth annual conference on Innovation and technology in computer science education, (169-173)
  47. Morazán M Functional video games in the CS1 classroom Proceedings of the 11th international conference on Trends in functional programming, (166-183)
  48. ACM
    Cooper S, Dann W and Harrison J A k-12 college partnership Proceedings of the 41st ACM technical symposium on Computer science education, (320-324)
  49. ACM
    Tew A and Guzdial M Developing a validated assessment of fundamental CS1 concepts Proceedings of the 41st ACM technical symposium on Computer science education, (97-101)
  50. Dale N Textbooks Proceedings of the Twelfth Australasian Conference on Computing Education - Volume 103, (3-8)
  51. ACM
    Guzdial M (2009). EducationTeaching computing to everyone, Communications of the ACM, 52:5, (31-33), Online publication date: 1-May-2009.
  52. ACM
    Brown R, Davis J, Rebelsky S and Harvey B (2009). Whither scheme?, ACM SIGCSE Bulletin, 41:1, (551-552), Online publication date: 4-Mar-2009.
  53. ACM
    Ni L (2009). What makes CS teachers change?, ACM SIGCSE Bulletin, 41:1, (544-548), Online publication date: 4-Mar-2009.
  54. ACM
    Brown R, Davis J, Rebelsky S and Harvey B Whither scheme? Proceedings of the 40th ACM technical symposium on Computer science education, (551-552)
  55. ACM
    Ni L What makes CS teachers change? Proceedings of the 40th ACM technical symposium on Computer science education, (544-548)
  56. Gaspar A, Langevin S and Boyer N (2008). Redundancy and syntax-late approaches in introductory programming courses, Journal of Computing Sciences in Colleges, 24:2, (204-212), Online publication date: 1-Dec-2008.
  57. Stone M Support collaboration by teaching fundamentals Proceedings of the Third Workshop on Issues in Teaching Computational Linguistics, (129-136)
  58. ACM
    Huch F Learning programming with erlang Proceedings of the 2007 SIGPLAN workshop on ERLANG Workshop, (93-99)
  59. ACM
    Proulx V and Cashorali T (2005). Calculator problem and the design recipe, ACM SIGPLAN Notices, 40:3, (4-11), Online publication date: 1-Mar-2005.
  60. ACM
    Guzdial M and Forte A Design process for a non-majors computing course Proceedings of the 36th SIGCSE technical symposium on Computer science education, (361-365)
  61. ACM
    Guzdial M and Forte A (2005). Design process for a non-majors computing course, ACM SIGCSE Bulletin, 37:1, (361-365), Online publication date: 23-Feb-2005.
  62. ACM
    Paz T and Lapidot T (2004). Emergence of automated assignment conceptions in a functional programming course, ACM SIGCSE Bulletin, 36:3, (181-185), Online publication date: 1-Sep-2004.
  63. ACM
    Paz T and Lapidot T Emergence of automated assignment conceptions in a functional programming course Proceedings of the 9th annual SIGCSE conference on Innovation and technology in computer science education, (181-185)
  64. McGrail R and McGrail T (2004). A grading dilemma or the abyss between sorting and the knapsack problem, Journal of Computing Sciences in Colleges, 19:5, (97-107), Online publication date: 1-May-2004.
  65. ACM
    Rich L, Perry H and Guzdial M A CS1 course designed to address interests of women Proceedings of the 35th SIGCSE technical symposium on Computer science education, (190-194)
  66. ACM
    Proulx V and Rasala R Java IO and testing made simple Proceedings of the 35th SIGCSE technical symposium on Computer science education, (161-165)
  67. ACM
    Rich L, Perry H and Guzdial M (2004). A CS1 course designed to address interests of women, ACM SIGCSE Bulletin, 36:1, (190-194), Online publication date: 1-Mar-2004.
  68. ACM
    Proulx V and Rasala R (2004). Java IO and testing made simple, ACM SIGCSE Bulletin, 36:1, (161-165), Online publication date: 1-Mar-2004.
  69. ACM
    Van Roy P, Armstrong J, Flatt M and Magnusson B The role of language paradigms in teaching programming Proceedings of the 34th SIGCSE technical symposium on Computer science education, (269-270)
  70. ACM
    Van Roy P, Armstrong J, Flatt M and Magnusson B (2003). The role of language paradigms in teaching programming, ACM SIGCSE Bulletin, 35:1, (269-270), Online publication date: 11-Jan-2003.
  71. ACM
    Buck D and Stucki D (2001). JKarelRobot, ACM SIGCSE Bulletin, 33:1, (16-20), Online publication date: 1-Mar-2001.
  72. ACM
    Buck D and Stucki D JKarelRobot Proceedings of the thirty-second SIGCSE technical symposium on Computer Science Education, (16-20)
  73. Han M, Li Z, He J and Tian X What are the Non-majors Looking for in CS Classes? 2019 IEEE Frontiers in Education Conference (FIE), (1-5)
  74. Decker A and Simkins D Uncovering difficulties in learning for the intermediate programmer 2016 IEEE Frontiers in Education Conference (FIE), (1-8)
Contributors
  • Northeastern University
  • Northwestern University
  • The University of Utah
  • Brown University

Recommendations

Srini Ramaswamy

Felleisen's book is one of the few books that I have come across that uses a functional language for introducing students to programming concepts. Although I can be characterized as an instructor who advocates the use of imperative/object-oriented programming paradigm at the introductory level, I like this book. This book is well written; easy to read, and has plenty of examples along the way to prod the student into frequently practicing the skills they learn in the book. I also like the idea of introducing graphical elements into the learning exercises early in the book (chapter 6). The use of graphical elements, especially, helps negate some of the negative effects of using scheme. However, I am not a fan of using scheme as a first-level language, in spite of its simple and direct structure. I believe that students going out into the real-world need to be provided with skill sets that help them to compete successfully. While scheme may be a good learning tool at the introductory level, I have serious reservations about it preparing my students for competitive jobs. The book however, can be a good book for programming classes for Mathematics students; or as an introductory class for students at the graduate level who have little or no programming experience.

Access critical reviews of Computing literature here

Become a reviewer for Computing Reviews.