CS1 Community Site

This site was created to provide a collection of all things relevant to the first-year course in computer science, often referred to as CS1. This includes the introduction of computer science at the K-12 level as well as those provided at the college and university levels. Roughly speaking, we see this as a repository for textbook reviews, programming language considerations, syllabi, teaching resources, and teaching strategies. Our hope is that this group will provide educators and other members of the computer science community with a collection of CS1 related resources that is easy to navigate, search, and contribute to.

If you're not already a registered Ensemble user, you'll first need to create an account.  Once your account is activated, you can join this group!

Browse by Content Type:

  • Textbook Post: to post your experience or thoughts about a particular CS1 related textbook.
  • Software/Other Resources: to post your experience or thoughts about the various non-textbook related resources for teaching CS1 such as websites, conferences, workshops, videos, and other books to name a few.
  • Language Post: to post their experience or thoughts about the various languages that are used in teaching CS1.
  • Syllabus: to post their experience or thoughts about a given CS1 syllabus or curriculum.
  • Teaching Strategy: This content type is intended to provide a forum for those wishing to post their experience or thoughts about the virtually never ending array of strategies used (successfully or not) in today’s classrooms, computer labs, and lecture halls. 

Suggestions for new content types can be made in the forum.



CS1 List of Content by  Type:


First Course in Computer Science

Achieving Gender Equity in the High School CS Classroom

I found that the simple acting of writing a promotional letter for the introduction to CS course and mailing it to all the students (both male and female) that performed well in either Geometry or Algebra II increased not only the quality of my students but more impressively, it almost completely evened out the gender ratio in my classrooms.  I went from having around 20% female students to just under 50%.


    • From the website Alice.org:
    • “Alice is an innovative 3D programming environment that makes it easy to create an animation for telling a story, playing an interactive game, or a video to share on the web. Alice is a freely available teaching tool designed to be a student's first exposure to object-oriented programming. It allows students to learn fundamental programming concepts in the context of creating animated movies and simple video games. In Alice, 3-D objects (e.g., people, animals, and vehicles) populate a virtual world and students create a program to animate the objects.”
    • “In Alice's interactive interface, students drag and drop graphic tiles to create a program, where the instructions correspond to standard statements in a production oriented programming language, such as Java, C++, and C#. Alice allows students to immediately see how their animation programs run, enabling them to easily understand the relationship between the programming statements and the behavior of objects in their animation. By manipulating the objects in their virtual world, students gain experience with all the programming constructs typically taught in an introductory programming course.”


Attending the AP Reading

I attended the AP Reading as a Reader in both 2006 and 2007 and just wanted to write about what a positive experience it was.  The AP Reading lists among its participants a roughly even split of both high school and college level educators.  There are textbook authors, workshop leaders, AP Exam developers, as well as about 100 other participants who are all passionate about computer science education.  The interaction between the participants is really my main reason for attending.  The added bonus is the fact that we get to learn precisely how the AP exam is graded which gives us a very obvious leg up when it comes to instructing our own students.  If you have been teaching AP CS for a few years now and plan on continuing to teach AP CS for years to come I encourage you to apply at www.ets.org/reader/ap

Building Java Programs:  A Back to Basics Approach Review

    • Easy to read. 
    • Good explanations of vocabulary and concepts.
    • Focus is  on “Algorithmic Thinking”
    • Lots of questions and exercises at the end of the chapters
    • Lots of questions around reading code
    • Uses static methods to teach procedural programming
    • Doesn’t talk about classes until chapter 8 (2/3 the way through the text)
    • I wonder if they chose Java (an unusual language for such a course structure) so they would not have to switch languages between the first and second course…
    • Good focus on vocabulary in the text
    • Chapter 1 focuses on output and methods
    • Chapter 2 focuses on variables, primitive data types, and loops
    • Chapter 3 focuses on parameters and objects

I like the text, very user-friendly, certainly a great introduction to programming. 
I’m less turned off by their use of Java in a procedural back-to-basics course than I thought I would be, though I still think Python would have been a more appropriate choice.

CMU Summer Java Workshop for APCS Teachers

For many years this workshop has been one of the highlights of my summer vacation.  The workshop presenters Mark Stehlik (Teaching Professor at CMU and former Chief Reader for the APCS exam), Don Slater (Lecturer at CMU and consultant to the APCS Exam reading since 1990), and Judy Hromcik (former member of the APCS Development Committee) have continually done a fantastic job providing new and relevant material year after year for AP computer science teachers.  Located on the awe-inspiring campus of Carnegie Mellon in Pittsburgh, PA, this workshop has been a draw for many interesting and effective educators.

CS Promotional Videos

      UW has produced three wonderful promotional videos that can be used in the cs classroom to inspire, or outside of the classroom to promote interest in the field of cs. 

      Pathways in Computer Science
        -- “illustrates the diverse pathways that students pursue after receiving Bachelors degrees in computer science or computer engineering.” 
        -- the video profiles careers in computational biology research, forest firefighting technology, neurobotics, enabling textbook graphics for the blind, and work in India connecting rural communities through technology 

      Power to Change the World
        -- “presents clips from interviews with roughly a dozen University of Washington Computer Science & Engineering undergraduate students, graduate students, alumni, and faculty, explaining why they chose computer science as their field.”
        -- “provides first person accounts of why Computer Science & Engineering students, alumni and faculty chose computer science as their field, in order to expose high school students to the field and show that it is exciting, diverse (not just programming!), and full of opportunities.”
      “breaks computer science stereotypes and thereby encourage high school students of all kinds to consider computer science as a career.”

      A Day in the Life
        -- “describes the lives of recent bachelors graduates from University of Washington Computer Science & Engineering, in several 2-minute profiles.”
        -- “presents an accurate portrayal of the nature of employment in the software industry. Bright Computer Science & Engineering majors typically secure highly collaborative, creative, diverse, challenging, well compensated positions that provide a flexible, fun lifestyle and appeal to a diverse population.”
        -- “shows that the computer science field is much more than just programming or video games.”
        -- “provides near-future role models for high school aged females -- people with whom high school students can identify, and who they can see themselves becoming in a few years. These role models will resonate with people who might not otherwise consider computer science as a field, or who might be discouraged from entering the field because of perceived stereotypes.”

      From the website:
        -- “Why do undergraduate students, graduate students, and faculty choose computer science & engineering as their field? What takes place during a day in the life of a CSE alum working in the software or Internet industry?”
        -- “Three videos from University of Washington Computer Science & Engineering address these questions. Take a look! Get a taste of what CSE holds in store for you! Learn more about this exciting field!” 


I attended this workshop in 2006 and feel as though I am still thriving off the energy and information that was offered at this great event.  I and dozens of other k-12 teachers were presented with a wealth of fascinating lectures and activities provided by some of CMU’s more prominent professors and researchers as well as others from Google, and elsewhere.  Topics ranged from Computational Thinking, to CS Unplugged, to broadening participation in our cs classrooms, to lessons in using food to teach great ideas in CS.  We learned about computational biology, careers and social responsibility in computer science, robots, and human computation.  I felt as if I was in one of those fortuitous zones in time and space where leading thinkers and educators in the fields of computer science were assembled in one place for a short time, and I was able to listen to, interact with, and play a part with them all.  It was a great experience.  I recommend it anyone who has a passion for computer science education. 
Looking at their website and talking with others I see that thankfully, the idea is catching on and that other universities are offering their own version of CS4HS (University of California, University of Washington, Western Oregon University, MIT, University of Texas at Austin, and the University of Michigan).  I hope the list continues to grow and that the good news of computer science in education begins to spread.

CSTA Website

CSTA (Computer Science Teachers Association) is a fairly new organization that is steadily growing more relevant for K-12 computer science education.  They provide curricula, research, videos, posters, and much more.  Check out their website!

Computer Science Unplugged

Computer Science Unplugged is a series of learning activities that reveals a little-known secret: computer science isn't really about computers at all!
Unplugged teaches principles of computer science such as binary numbers, algorithms and data compression through games and puzzles that use cards, string, crayons and lots of running around.

Unplugged is suitable for people of all ages, from elementary school to university, and from many countries and backgrounds. Unplugged has been used around the world for over fifteen years, in classrooms, science centers, homes, and even for holiday events in a park!

You can download Unplugged activities as individual PDF files from their pages on this site, or download a teachers' version of the collection as a single file.   

Harvey Mudd College Introductory CS Curriculum

This is a great breadth-first multi-paradigm introduction to computer science using Python.

How to Think Like a Computer Scientist: Learning with Python Review


      • Very straightforward text.  To the point, very little fluff.  Perhaps a bit dry because of this. 
      • No exercises or problems in the chapters, albeit lots of examples. 
      • Good glossary at the end of every chapter. 
      • I like the ordering of the curriculum.
      • Functions, Conditionals, Recursion, and then more standard Loops. 
      • Quite robust in the end covering Lists, Tuples, Dictionaries, Classes, Inheritance, Linked Lists, Stacks, Queues, Trees
      • Not really suitable for first course text although a good on-line reference for a first course curriculum that involves Python.

HtDPTextbook Review

  • Curriculum is built around the idea of proper Design.
  • The Preface offers 6 steps in
  • The Basic Parts of a Design Recipe
    • Problem Analysis & Data Definition
    • Contract, Purpose & Effect Statements, Header
    • Examples
    • Function Template
    • Function Definition
    • Tests
  • Explaining that each step produces a well-defined intermediate product:
    • the description of the class of problem data
    • the informal specification of a program’s behavior
    • the illustration of the behavior with examples
    • the development of a program template or layout
    • the transformation of the template into a complete definition
    • the discover of errors through testing


  • On the second page of the first chapter the authors state:
    • “Small or large, a good program cannot be created by tinkering around.  It must be carefully designed.  Each piece needs a lot of attention; composing programs into larger units must follow a well-planned strategy.  Designing programs properly must be practiced from our very first day of programming.”

I think the previous quote sums up the tone of this book.  Methodical. 

  • I must admit, I’m a bit intrigued by this curriculum.  While I wish I could take such a course, I’m not sure I’d be happy teaching such a course. 
  • On a related note:  I’ve been reading over curriculums and textbooks for a few weeks now and have often tried to imagine what a group of students would think of creating the accompanying programs and exercises.  How to Design Programs is the first text/curriculum that has actually compelled me to download and install the software (teachscheme) and do the examples in the chapter. 
  • (I suspect this is because functional programming is something I have an interest in learning while the other curriculums would not involve any actual learning (programming wise) on my part.)
  • Math-based analogies.
  • I wonder about the difficulty level.  It could be my own lack of comfort with functional languages or my concern with the mathematical skill level of potential students.  (Produced from years of teaching high school students who, while quite adept at using a calculator, often lack basic math skills). 
  • An example design recipe from the text:

Contract:  area-of-ring : number number -> number
Purpose:  to compute the area of a ring whose radius is outer and whose hole has a radius of inner
Example:  (area-of-ring 5 3) should produce 50.24
Definition:  [refines the header]
               (define (area-of-ring outer inner)
               (- (area-of-disk outer) (area-of-disk inner)))
               (area-of-ring 5 3)
I am struck by how this is the only programming curriculum I can think of that could actually get away with such pedantic meta-work.  The problems proposed in the text are actually challenging rather than the typical first programming assignments which are so wrapped up in how-to-program-type-issues that the problem solving seems almost trivial on top of all that.  I think this is in part because other languages are more natural?  Imperative programming has always mapped quite well to my own thinking.  Functional programming I suspect is a bit outside of most people’s realm of everyday thinking and so I might think it levels the playing field to some degree and causes everybody to work (but not excessively so) at solving the problems. 
The problems given in the first 20 pages are the type of problems I’ve given after months in my own first course.  And the problems involve an appropriate level of mathematical agility that is in reality required in the computer science discipline.  (Knowing calculus may not be a pre-requisite to computer science, but a strong mathematical foundation or mindset on which to base the necessary logic and reasoning surely is.)

Introduction to Computing and Algorithms Review

From the back cover:
“By taking an algorithm-based approach to the subject, this book helps readers grasp overall concepts, rather than getting them bogged down with specific syntax details of a programming language…”


    • While Algorithmics seems to be a great book for every budding (or experienced?) computer scientist to have around, this book seems to be a great book for every programmer to have around.  It covers, in a very 1000 feet up fashion, algorithms and data structures and all things programming with a little theory covered in the final chapter.


    • Lots of good exercises at the end of each chapter (writing/understanding pseudo-code).  Could see this as a good supplement and reference for an introductory programming course.


    • Chapter 1 is actually quite different than I would have expected with a brief history of paradigm shifts from Preliterate Literal Existence through Absolute Abstraction, Mechanistic Thinking, and finally to Computational Models.


    • Chapter 2 starts talking about algorithms.
    • Chapter 3 settles in to programming with variables, data types, arithmetic, and conditionals.


  • This book was a pleasant surprise.  I think it’s on par with Algorithmics as a first course supplement.  I would weigh my decision on whether the first course will be an introduction to computer programming (in which case I might choose this text) or a first course in computer science (in which case I might choose Algorithmics).


Javabat Website

I considered this website a personal gift as I discovered it just weeks before my students were scheduled to take their AP Computer Science exams.  This site (created by Nick Parlante at Stanford) provides students with dozens of great practice problems with immediate feedback concerning all possible test cases and which were successfully handled and which were not.  It has exercises in Recursion, Arrays, Strings, Logic, and even a section based on AP CS free response questions from years past.  Great for homework, in the lab, as lecture examples, or for self-study.  Now if only someone would create such a site for teaching Python!

Karel the Robot

    • I used a Karel the Robot curriculum (developed by the wonderful folks at Thomas Jefferson High School -- http://academics.tjhsst.edu/compsci/) for all of the last 6 years that I taught CS1. I used it to introduce students to programming, and object-oriented programming in particular. I found it was a great way to get the students to easily wrap their minds around many of the object-oriented concepts that seemed appropriate for a first level course, as well as more traditional programming structures such as conditionals , loops, variables, and procedures.
    • Karel was original created by Richard Pattis at Stanford to teach his students Pascal and has since been used to teach C++, and now Java and Python.
    • Joe Bergin has most recently been carrying the torch and is the primary person behind the books and curriculum at http://csis.pace.edu/~bergin/KarelJava2ed/Karel++JavaEdition.html.
    • If you are looking for a great way to introduce your students to object-oriented programming in a visually rewarding and entertaining way, you should definitely check out this curriculum


Learn to Program with Phrogram Review


    • Text is pretty limited 
    • Phrogram Express is freeware and works as a supplement to the text, although I don’t know if the IDE provides the same type of hand-holding that Phrogram Standard or Phrogram Academic does. 
    • Toolbar menu starts in simple mode with many of the buttons turned off. 
    • Text is a little wordy seems more interested in convincing the reader that they are having fun than explaining actual programming concepts (as if the text had as much input by marketers as it did by developers). 
    • The simple nature of the text could be good for those inexperienced with technology however.  And the IDE itself does a lot of hand-holding with built in templates and text completion for program skeletons, conditionals, loops, etc. 
    • It appears as I skim through the rest of the text that there is no “assignment” or student exercise, rather the entire program is given to the student one section at a time and that nothing is left for the student to figure out on their own. 


Lois Delcambre’s Intro Course from Spring ‘09


Dr Delcambre uses Python to
introduce potential majors to the field of computer science.

PDF icon PythonforLispProgrammers.pdf170.98 KB

Nifty Assignments Website

This is a great website for educators looking for extra (and fun) programming assignments. These assignments are selected from many submissions at every SIGCSE conference.  Most come with a most everything an educator needs to get the assignment going.  Many of the assignments listed would serve as great end-of-course assignments.  I’ve used Breakout (2006) for just this purpose and it was a big hit among my students with lots of open-ended assignment possibilities.  If you are looking for new assignments to augment or enliven your course, this is a great resource.  http://nifty.stanford.edu/

Promoting your High School Computer Science Courses

Whether it's to boost enrollment or improve diversity, I would like to hear how other teachers are promoting their computer science courses.

Reasons for Choosing Python

    • Originally designed for education
    • Simple syntax (no semicolons or curly braces)
    • Forced Indentation
      • Students learn a programming style that is easy to read
    • Can be used to write scripts as well as large projects
    • Python is a multi-paradigm language (scripting, object-oriented, and functional)
    • Comes with a simple development environment (which includes an interpreter)
    • Tons of documentation and tutorials on-line
    • It's open-source and it's free


    • From their website: “The ACM Special Interest Group on Computer Science Education provides a forum for educators to discuss issues related to the development, implementation, and/or evaluation of computing programs, curricula, and courses, as well as syllabi, laboratories, and other elements of teaching and pedagogy. SIGCSE sponsers or co-sponsers several annual conferences held in varied locations around the world and publishes the SIGCSE Bulletin quarterly. Proceedings of annual SIGCSE conferences comprise two issues of the Bulletin.”
    • Registration is cheap ($25 annual fee / $8 for students)
    • Their annual conference is always a great opportunity to hear what others are doing in the field of computer science education (and an opportunity to make your own voice heard!). Check out their website (http://www.sigcse.org/) or their quarterly Bulletin to learn more.



    • From the website scratch.mit.edu:
    • “Scratch is a new programming language that makes it easy to create your own interactive stories, animations, games, music, and art -- and share your creations on the web.”
    • “Scratch is designed to help young people (ages 8 and up) develop 21st century learning skills. As they create and share Scratch projects, young people learn important mathematical and computational ideas, while also learning to think creatively, reason systematically, and work collaboratively. “


Sign up for the AP Computer Science Listserv/Digest/Electronic Discussion Group (EDG)

When I started teaching AP Computer Science for the first time I felt isolated in my high school.  While other teachers had other teachers to talk to about how best to approach a given topic or lesson, I felt that not only was I the only computer science teacher in the building, I soon realized that I was the only person in the building who knew anything at all about computer science in general.  Having this discussion group to read through every morning and to send the occasional question to, was a godsend and provided me with a wealth of materials, ideas, workshops, and connections that I still value today, years later.  I encourage any and all AP computer science teachers (and any other teachers or professors who have an interest in APCS) to sign up.  Who knows, you may even want to contribute every now and then!

Squeak: Learn Programming with Robots Review


    • Easy to Read
    • No questions at the end of the chapter but many “Experiments” starting in chapter 3
    • I like that Squeak can be written as a script (no overhead)
    • I wish the vocabulary were not so unique and I wish it paralleled the vocabulary of more typical languages like C++ and Java
    • Pretty cool compiler error help (drop down menu) with real time error checking
    • Chapter 2 was a bit long winded with no hands-on work to accompany the explanations
    • Might do much of ch3 before/during chapter 2
    • Syntax and Semantics VERY different from C++, could be a problem if all of 161 were done with Squeak (with little/no exposure to a more traditional language)


The BlueJ Development Environment

The BlueJ environment was developed as part of a university research project about teaching object-orientation to beginners. The system is being developed and maintained by a joint research group at Deakin University, Melbourne, Australia, and the University of Kent in Canterbury, UK. The project is supported by Sun Microsystems.

The aim of BlueJ is to provide an easy-to-use teaching environment for the Java language that facilitates the teaching of Java to first year students. Special emphasis has been placed on visualisation and interaction techniques to create a highly interactive environment that encourages experimentation and exploration.

BlueJ is based on the Blue system. Blue is an integrated teaching environment and language, developed at the University of Sydney and Monash University, Australia. BlueJ provides a Blue-like environment for the Java language.

The BlueJ project started at Monash University in Melbourne, and later split and migrated to its current locations.

BlueJ is implemented in Java, and regularly being tested on Solaris, Linux, Macintosh, and various Windows versions. It should run on all platforms supporting a recent Java virtual machine.

BlueJ supports:

  • fully integrated environment
  • graphical class structure display
  • graphical and textual editing
  • built-in editor, compiler, virtual machine, debugger, etc.
  • easy-to-use interface, ideal for beginners
  • interactive object creation
  • interactive object calls
  • interactive testing
  • incremental application development


The Journal for Computing Teachers (JCT)

    • From their website: “The Journal for Computing Teachers (JCT) is a production of the Special Interest Group for Computing Teachers (SIGCT) of ISTE.  JCT supports and enhances the mission of SIGCT which includes teaching about computing in grades K-12.  The full mission statement appears on the SIGCT home page. ”
    • Formerly known as the Journal for Computer Science Educators or JCSE
    • Previously published papers can be viewed on their website, as well as guidelines for submitting your own content for publication.


Welcome to CS1!

Welcome to the CS1 community forum. 
The CS1 group has specific content types: Textbook Post, Language Post, Teaching Strategy, Syllabus, and Software/Other Resources.  You can create a post of any of these types, directly, in the CS1 group.
This forum is intended for other types of postings.  You are welcome to post, or to respond to existing posts, here.