I&#x27;ve been reading Jane McGonigal&#x27;s &quot;Reality is Broken&quot; this semester and think she has some great suggestions on how to get students to learn - make it an attainable goal. Videos games do this well, she argues, because the player can see that a goal (say, the end of a level) is entirely possible, given the skills you&#x27;ve learned and demonstrated before.<p>For my programming courses, I give 3 different types of assignments each week: a typing exercise, a Q&#x2F;A style set of questions, then a problem. No &quot;make a loop print the numbers 1 to 5&quot;, but something like &quot;implement standard deviation&quot;.<p>I&#x27;ve talked about the typing exercises before on HN, give the students a picture of code and make them retype it. They can&#x27;t copy-paste, which is one of the mistakes of beginners, plus it gives them a fully functioning implementation of that week&#x27;s topic. It doesn&#x27;t have to be huge, something like 50-100 lines (this is Java, so that isn&#x27;t as much as it seems). Students have given it a positive response this past semester and I&#x27;ll be adding it to some other classes as well.<p>The Q&#x2F;A questions are traditional multiple choice&#x2F;true-false&#x2F;fill in the blank style questions. I won&#x27;t lie, it&#x27;s blatantly taken from MIT&#x27;s Open edX 6.01 course, though tweaked to prevent Googling. The questions range from simple concepts like what is the end result of a conditional statement, to number of loops, to having to implement a small amount of code to determine the next integer in a seeded random. McGonigal discusses how in a game, the risk of failure is reduced by allowing the player infinite tries. If they fail, they don&#x27;t get slapped with a 0, they are free to try the question set as many times until they get the 100%. You have to be careful, otherwise you&#x27;ll get the person that just guesses, but overall it is a successful tool.<p>Finally, the problem sets are again similar to MIT&#x27;s 6.01 course. This is actually my current pain point, as I need to implement an automatic grader to repeat the infinite tries from above. They are given the problem, along with some test cases of what to expect. This is the first assignment that doesn&#x27;t have a clear A to B section, which is done purposely to facilitate their problem solving skills. To help, I do the same thing as the author by making my class time lab time. I do like the ideas of paired programming and Post-Its, so I might look to implement them in the future.<p>The big thing I&#x27;d same McGonigal&#x27;s book suggests is &quot;Make the assignment seem attainable&quot;. This helps defeat the stereotype threat. If step 1 each week is literally &quot;retype this program&quot;, it gets harder for a student to say &quot;I can&#x27;t do this&quot;.