How to Study for a CS Exam

March 30, 2018 at 7:00 am 6 comments

I just recently finished Make It Stick (Amazon link) which takes modern learning science and develops recommendations to learners on how to study in order to learn most effectively. As I read it, I was wondering, “What are the implications for how students should study for a computer science exam or quiz?” I did a Web search for “computer science study skills,” and the results were disappointing. Most of the recommendations are wrong (e.g., “take good notes” and “highlight passages in the book”) and were not specific to learning computer science.

So, I wrote up some recommendations for my students. I have not tried to generalize these yet (but would be fun and useful to do so), and I haven’t gone back through Making it Stick to mine it for all the CS recommendations that one might invent from their lessons.

Caveat: these are “evidence-based” as in the learning sciences behind them is pretty solid, but they are not “evidence-based” in the sense of actually testing these practices with learning CS. We know that some learning sciences or educational psychology results from other fields don’t map cleanly to CS (see Briana’s work). I don’t know of research evaluating study practices for learners studying computer science — but it would be great to have some!

I’d be interested to hear how you help your students study computer science!  Please do share your ideas and recommendations in the comments.

How to study for a programming quiz

Here are my suggestions for how to study for Monday’s quiz (with some advice that is useful for all your other CS quizzes).

1. Read the Book. Once

If you haven’t read the relevant chapters, do read them. If you have already, I don’t suggest re-reading them. There are better ways to study than re-reading.

2. Do Your Programming Homework

The Collage Project (and all your other homework) is good preparation for Monday’s Quiz. Finish that up this weekend, and you’ll have reviewed many of the ideas needed for Monday’s Quiz.

3. Make sure you know what you didn’t know

Go over your homework assignments and past quizzes, and make sure that you now know everything you got wrong in the past.

4. Quiz Yourself

The best way to study is always by quizzing yourself. You’ll learn far more from quizzing yourself than from re-reading or reviewing your notes.

Use the problems at the back of the chapter. Get with others in the class and challenge each other by inventing variations on programming problems you have seen before:

  • Rather than create a negative of the whole picture, can you negate just the top half of a picture?
  • Can you move the bottom half of a picture onto the top?
  • Can you mirror a square picture diagonally?
  • Can you put a 100-pixel wide border of grayscale around a picture?

5. Elaborate on each Chapter

At the beginning of each chapter is a list of Learning Objectives — media learning goals and CS learning goals. Write a sentence or two demonstrating that you have learned those objectives. Explain what the goal means, and show that you have achieved those goals. Elaboration helps you to connect ideas so that it’s easier to remember those ideas later.

At the end of each chapter is the Programming Summary that lists the new programming ideas (new functions, new control structures) in that chapter. Make sure that you can use each of those. Just write a program, any program that uses each function at least once.

6. Try things in more than one way

In this class, you know more that one way of doing things.

  • You can get and set colors with setRed, getRed, setBlue, getBlue, setGreen, getGreen. OR getColor, setColor, makeColor. Make sure that you can use these interchangeably. Write increaseRed and decreaseRed using setColor. Write negation and grayscale with both sets.
  • You know several ways of accessing individual pixels.
    • You can use for pixel in getPixels(picture).
    • You can get all the pixels in a list with all = getPixels(picture) then generate the indices for that list with for index in range(0,len(all)): and access each pixel with pixel = all[index].
    • You can generate x and y coordinates with for loops, then get individual pixels with getPixel(picture,x,y).
    • Make sure that you can use all three well. Write chromaKey with all three forms. Create a green border around a picture using all three forms.

Take any program that you have written before, or that we have done in class, and rewrite it another way. This is both a form of elaboration and a form of quizzing.

7. When confused, ask and talk CS

Ask on Piazza. Ask your friends. Come to office hours. When studying, all collaboration is strongly encouraged.

Just talking through things (both what you understand and what you do not understand) with anyone will help you learn.  Explain your programs to someone else.  Summarizing your programs in English is a great way to make sure you understand the programs and to elaborate on your knowledge.

Entry filed under: Uncategorized. Tags: .

New programming languages are important to develop as we improve our knowledge of how students learn computing States requiring CS for all students may be making a mistake: Responding to unfunded mandates

6 Comments Add your own

  • 1. Mike Zamansky  |  March 30, 2018 at 7:15 am

    Read the book is great advice but we have to remember to teach them how to “read the book.” It’s not the same as reading the book for a history or English class.

    At the High School level I’ve found that kids don’t know how to read for CS (or math or science) and how to study. This is great post but we have to remember that the kids might need more scaffolding than just “read the book.”

    Is this a problem so much at the college level? My recent experiences haven’t given me enough data to generalize.

    • 2. gasstationwithoutpumps  |  March 30, 2018 at 10:36 am

      At the college level, getting engineering students to read ANYTHING is a problem, and getting them to write coherent sentences and paragraphs is even harder. The prevalence of multiple-guess questions in STEM testing has eroded writing skills even more.

      I agree that most students have never learned how to read a technical book, but reading for CS and for engineering is different than reading for biology, as the goal of the reading is quite different. so a general STEM-reading course would be fairly useless. A good engineering or CS course is not trying to induce memorization (which is about all that education research has studied for reading), but application of a small number of concepts to a large variety of problems. Unfortunately, the only “read-the-book” skills most students have acquired after 16 years of schooling is cram-and-forget, which is pretty useless for engineering.

      The other study suggestions, particularly “try things in more than one way” are likely to be more productive, unless technical reading skills are specifically taught.

  • 3. mikethetall  |  March 31, 2018 at 1:14 am

    Can I ask why “take good notes” and “highlight passages in the book” are wrong?

    • 4. Mark Guzdial  |  March 31, 2018 at 8:55 am

      Taking good notes (i.e., not just repeating what’s said) is probably useful, but reviewing notes and re-reading the book aren’t so useful. The problem with those study activities is that they trick our minds into believing we know something when we’ve just memorized the words. “Make it Stick” says:

      Rereading and massed practice give rise to feelings of fluency that are taken to be signs of mastery, but for true mastery or durability these strategies are largely a waste of time.

      Brown, Peter C.. Make It Stick (p. 3). Harvard University Press. Kindle Edition.

      • 5. mikethetall  |  April 10, 2018 at 2:45 am

        Thanks! I’ll have to go read that book.

  • […] my classes, I rely heavily on weekly quizzes because those are more likely to lead to learning (see post here). I give points for writing code, but that’s to encourage the activity, not to make-or-break the […]


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Trackback this post  |  Subscribe to the comments via RSS Feed

Enter your email address to follow this blog and receive notifications of new posts by email.

Join 10,184 other subscribers


Recent Posts

Blog Stats

  • 2,053,716 hits
March 2018

CS Teaching Tips

%d bloggers like this: