How can you effectively study and learn the material for CS2102? Here are several tips based on educational research.
Learning to program involves internalizing the patterns within code: what statements are needed, where do they go, what statements are used for which tasks, etc. When you have internalized a code pattern, your brain can retrieve and reproduce it when you are given a similar problem to solve. You internalize code patterns by actually writing them down, not by reading them (writing and reading exercise different processes within the brain). This is also important because the order in which we write lines of code and the order in which we read them tend to be different. You need to practice each skill (reading and writing) independently.
Tip: When we cover new programming concepts, the syllabus will give a series of short (ungraded) practice exercises. Do as many of these as you need to get the code to come naturally, without your having to look back on your notes.
In some courses, you basically need to learn a bunch of facts and formulas and when to apply them. Programming is different: much of it is about learning a process of creating something or solving a problem, not about memorizing stuff (there's a bit of memorizing stuff, but memorizing isn't enough). Don't expect to learn the material by reading it over and over. Instead, work on learning the steps we take and the questions we ask to make progress on problems. This goes back to the previous point: you won't learn CS just by reading.
Tip: As you study, try to articulate the steps that we took to solve each problem. Don't just try to memorize solutions.
Much interesting research has been coming out about the value of testing in learning. When you encounter a new fact, your brain might store it, but that doesn't mean that your brain can find it again. In order for you to retrieve facts, your brain needs to have recalled them several times in a useful context. Repeated access to factual information over a period of several days or weeks is what leads to long-term retention of information. The clicker questions in class are designed to help you with this retrieval process.
Tip: Participate in the clicker questions in class. Recognize quizzes as a tool to help you learn, not just a method of asssessment. Our grading system is based on points earned in themes rather than per-assessment averages so that you can make some mistakes but still demonstrate learning a topic later in the course.
We understand concepts by building
Tip: We will show you various models of how programs work and how data ties together. Practice filling out these models for specific programs, until you are confident that you understand how your programs run. Bring your models to office hours if you aren't sure about how they work. Working with the models targets the low-level building blocks of learning to program.
People often believe that programming and computer science is
something that some people are "born" to do while others are not.
At this level, this idea is false. It is true that different people
absorb the techniques faster than others, but that doesn't mean that
only those with the "geek gene" can do well in CS. Approach CS as
something that you can learn with practice; don't tell yourself "I
can't do this because I'm not a CS person". There's much interesting
research on something called
Tip: Don't fall into the trap of thinking that you can't learn this. Some of your classmates have been programming for years. Not surprisingly, that means they are better at it than you are right now. That doesn't mean that you can't learn to do this too. Work with the practice problems and the course staff.