"Learn to Program with Small Basic" - Book Review by Middle School Teacher, Martin Fish

Today's guest blogger is Martin Fish! He's reviewing Small Basic and the book, "Learn to Program with Small Basic" (No Starch Press | Amazon).

Martin Fish is a middle school Coding and Robotics teacher at Mason Middle School in Mason, Ohio.  His Coding and Robotics STEM Lab started out as a club in 2014.  The community interest was so strong that the club became an elective course available to 7th graders in the 2015-2016 school year.


I am an educator with 14 years in the classroom under my belt, but I’ll be the first to admit that I’m not a trained computer programmer.  I started the Coding and Robotics STEM Lab at my school because I thought it was important, I was interested, and I was willing to learn.  But I pretty much had to start at the beginning and teach myself everything.

So not only did I need to educate myself about computer programming in general, but I had to wade through the vast variety of programming styles (Graphical blocks? Text based?) and programming languages (Python? Java?  C++?  JavaScript?).  And at the same time I needed to write a curriculum that attempted to create an educational experience that was challenging but accessible, educational and engaging, with entry points for a wide range of knowledge levels that would inspire all students to learn and grow.

Small Basic

The Small Basic UI

I’m not sure how I found Microsoft’s Small Basic, but I am incredibly glad that I did!  Here are some of the things that made it ideal for my classroom:

  • It was specifically designed as an educational programming language for middle school aged students
  • The “IntelliSense” built into the IDE provides students with an accessible text-based coding experience
  • It scaffolds into Visual Basic, which is used in our High School CS1 course
  • It generally introduces students to the concept of a programming “Object” and the idea that an object can have properties that describe it and operations that can act upon it.
  • It is extensible - and there are some fantastic extensions that introduce physics or allow Lego Mindstorms EV3 programming.
  • It is free!!

Having settled upon a primary coding language for my course, I then needed to develop a curriculum to support it.  Oh how I wish that "Learn to Program with Small Basic" by Majed Marji and Ed Price had been available in those early stages in my course creation!

One of the newest entries in the fantastic No Starch Press collection of coding guides for younger learners, "Learn to Program with Small Basic" is clearly designed with multiple audiences in mind.  It could be picked up off the shelf by an 8-14 year old with a new interest in computer programming.  It can be a guide for an adult just starting out on their journey.  It can provide the framework for a homeschooling course.  It can be the backbone for a teacher's course or a club.  In all of these situations, Learn to Program with Small Basic takes its readers from the most basic of computer science questions (“What is a Computer?  What is a Computer Program?”) and accompanies them on a journey of discovery in computer programming.

The structure of the book is clearly designed to teach the basics of computer science.  Chapters are divided into topics that make sense for CS beginners and are applicable to any computer programming environment such as “Using Variables,” “Empowering Programs with Math,” “Making Decisions with If Statements,” “Solving Problems with Subroutines,” and even “Building Graphical User Interfaces.”

Cover of the Small Basic book

Although a scan of the table of contents may make the book sound like a Computer Science 101 text, it is the structure within those chapters and Marji and Price’s engaging writing style that really sets this book apart.  It is clearly written with an eye towards a middle school audience.  The text is easy to read and filled with little jokes and gags that are guaranteed to make the coolest 13-year-old roll her eyes (that’s a good thing).  But beyond the standard descriptions of concepts and examples, my favorite part of the book by far is that each chapter provides the reader with challenges that utilize the new content introduced in the chapter and draw on what has been previously learned.

So often, computer programming books are filled with math-based challenges (count by 2s . . . now count by 3s . . . find the prime number . . . is the number a square) that would put a classroom of middle school students (and their teacher) to sleep.  These challenges, on the other hand, keep their audience in mind.  They are engaging and creative and appropriate for a middle school aged audience.  Further, they leverage the website for the book to provide resources, hints and solutions.  Readers can access comment-only “starter” files to get them moving and provide a roadmap for their projects or, if they get hopelessly stuck, can access solutions -- all online.  I particularly like the fact that the solutions do not appear in the book itself.  That would make it too easy to simply page to the back and type in the solution.  By requiring the reader to take the additional step of hopping online and navigating to the correct URL before seeing a solution, readers are encouraged to keep trying to solve the challenges on their own.

In Learn to Program with Small Basic, Marji and Price have accomplished something very difficult.  They have created an outline of basic computer science principles that is appropriate for middle schoolers in a text based programming language.  Many of the resources that are currently being produced are of the drag-and-drop, block-based graphical structure.  While I believe that these are a great way to get younger students interested in coding, the Small Basic programming language and its intuitive IDE has worked incredibly well in my middle school classroom.  In my end of course surveys, a strong majority of students (nearly 70%!)  recommended that I limit the use of block-based programming languages in order to provide them with even more opportunities to do text-based programming with Small Basic.  I am certain that Learn to Program with Small Basic will be a trusted companion as I expand this portion of my course and I am thrilled that such a resource is available.

But don’t think that this book is designed only to be a teacher’s guide.  That couldn’t be further from the truth.  This book is for anyone who is interested in learning more about the basics of computer programming in a fun and engaging way and I highly recommend Learn to Program with Small Basic and Microsoft’s excellent Small Basic programming language.

- Martin Fish


Learn to Program with Small Basic


An Introduction to Programming with Games, Art, Science, and Math
by Dr. Majed Marji and Ed Price

May 2016, 304 pp.
ISBN: 978-1-59327-702-4
Full Color