Regarding their curriculum, the course starts off with data abstraction, and the beginning of the course focuses more on procedural programming, even though it is in Java. Their programs and sample code mostly exist in one class, with main starting the action. The class moves on to using objects as containers, debugging, recursion, and data structures. At the end of the class, after the lecture on the Stable Marriage algorithm, inheritance and polymorphism are introduced.
Teaching occurs in a few different venues. There are lectures, which occur 4 days/week for an hour each time, lab sessions, which are 1.5 hours once/week, and organized help sessions. The organized help sessions are led by TAs, and as it says on the page, "Help sessions are a chance to work through practice exercises and discuss lab assignments in an informal setting. You may attend as few or many as you like." There are two/week (at least right now), and it says that students without prior background are particularly encouraged to attend.
The warmup exercises are also considered to be review questions for the quizzes that are quite frequent in this class. There were about half a dozen exercises for each assignment, and each exercise required you to do the equivalent of writing a function, or answering specific questions about some supplied code. Later on in the course (Labs 8 and on), there are no more practice exercises, and instead larger and more involved programming assignments. I really like this idea [see below.]
However, what I really liked were the practice exercises that were part of most of the assignments. These assignments were very similar in size and difficulty to the homeworks that we have used in cs15, but they were more closely tied to the program itself. I consider this to be a big win. I believe this because it is possible to ask more directed questions that can cause the students to think about the assignment, and also make students take a careful look at details that are possible to gloss over when programming.
I think that an easy trap to fall into when learning to program is that you manage to fiddle around with code enough to get it working, even if you don't really understand what exactly each line of code is doing. Personally, I know this happened to me in both CS15 and CS32. If you force students to answer questions that address those details, and they need to understand it to answer the question, it makes students think more. In the past two years, Parameters has been the assignemnt which has caused lots of problems for people. That is because it asks very direct questions that you must understand what is going on in order to answer them. I think we need more assignments like Parameters.
Last night at around 3 in the morning, Jon was comfortably reclining in the first row of the Sun Lab grading Parameters assignments, when a zwrite suddenly appeared on his screen. "Where's the Silly Premise for the Swarm handout?" Brian was asking. "I need it in an hour." Jon immediately proceeded to fall out of his chair. "Umm, we just have a few last details to work out," he quickly zwrote back, beads of sweat condensing on his powerful skull.
"Now what am I going to do?" thought Jon, aforementioned skull pulsating with a complete lack of Silly Premises. "If only something silly would happen!" he said aloud. He paused and looked around the empty, hushed lab. Tumbleweeds rolled across the stage. "I SAID," Jon bellowed with all of his might, "IF ONLY SOMETHING SILLY WOULD HAPPEN!!!!" The walls of the CIT shook. Dark clouds rolled across the lab and thundered mightily. From the doors of the lab sprung a thousand, angry, multicolored killer bees! Without missing a beat of the mysterious, backwards-masked circus music that now filled the air, Jon whipped out his huge, rattling lightsaber and began to do battle with the foul beasts. As the walls of the lab folded into Rubik's cubes by their own will, Jon parried and thrusted and mangled many an angry insect. But the physical effort was too much, and he fell to an unused node, logging in with the last of his mighty will. The group of bees surrounded his sweaty visage and laughed at his pitiful dotfiles. But just before the CIT fell into Saturn's orbit, Jon mailed out one last message to Brian, explaining as best he could the situation. Little did Jon know that Brian was actually masterminding the entire situation from the basement of Hegeman! Stop Brian now! Write Swarm I!!!!
GP.Behaviors
GP.Graphics.Shape
and its subclasses
Attributes
subpackage of GP
GP.Components.Buttons.Toggle
public class HyperBall extends GP.Graphics.FilledOval { public HyperBall(GP.Container container) { super(container); } public void SetUpBehaviors() { GP.Behavior flash; random = new FlashColorBehavior(this); // make it flash different colors this.AddBehavior(flash); // make the shape jump around the screen this.AddBehavior(new MoveRandomlyBehavior(this)); // make the shape blink in and out of existence GP.Behavior hideNshow = new HideAndShowBehavior(this); this.addBehavior(hideNshow); this.RemoveBehavior(flash); } }Try working all these questions out on paper, so you know exactly what every line is doing. Once you have worked out the questions, you can look at the solutions page to check your answers.