Study the assigned readings (from How to Design Programs).
Try to stay ahead of the game and read material before it is covered in class. If you have questions, write them down. If these questions don’t get covered, ask in class and/or meet with the tutors, lab coordinator, or professor.
Attempt to solve additional problems. Try to solve as many exercises as possible as you read sections in the book. If you can’t do them, read the material again and then ask your TAs or Professor if you’re still stuck.
Attend the lecture and labs.
Lecture is an interactive, problem-based exposure to the material, whereas the labs cover the practical know-how (how to edit, how to evaluate, how to print, etc.) and illustrate the material from a different angle.
A lecture will typically use many code examples. You absolutely should not spend the lecture time copying these into your written notes or type them into your computer—
this would represent a significant distraction. Instead, we will post such code before each lecture, so you can download it. You can then add comments during class, as you see fit.
Keep up with the readings, labs, and the homeworks. Look at additional problems, if the homeworks failed to make a point.
If the lecture and the notes leave you with questions on the material, see your teacher(s) during office hours or make an appointment. Mark the passages in the book(s) that you haven’t understood and prepare questions that express what you haven’t understood.
Did we mention that you ought to talk to the course staff?