Learning Strategies#

Below, we highlight some strategies while using this book to maximize your learning. At the end of the day, you should employ whichever learning strategies that work best for you! We just have some recommendations based on our experience helping students in UW’s CSE 163.

Actively Engage with Readings#

Good active reading strategies for this book include:

  • Don’t just skim the readings, but make sure you are spending time on them.

  • You should almost always have VS Code or your editor opened so that you can try out the code snippets when learning a new topic. Many students ask “What if you do X?” in classes, but you can actually just try it and find out for yourself in your editor!

  • It’s easy to passively read some text and convince yourself you understand. Take time to pause and ask yourself critical questions about how you understand a new topic.

  • Take notes! See below for rationale.

Take Notes!#

Learning a new skill can be difficult. This book will teach you a TON of new ideas and concepts for data programming. While we think this book is pretty well written, it’s primarily designed to be a narrative introducing students to concepts for the first time. It is not primarily designed to be a good reference to look back to later.

Instead, we expect that you are taking your own notes and building your own reference sheets for the topics introduced. While this requires more work on your part, this work is very useful for your learning! The process of learning is forming mental models, and making notes and reference sheets is part of the process of forming those mental models.

Note

Studies have shown that taking handwritten notes improves student learning outcomes in their coursework when compared to no notes and typed notes.

Some attribute this improvement to “neural pathways” that handwriting notes activates that typing notes does not activate. A far more likely explanation is that handwritten notes take longer to write compared to typed notes. This means if you are handwriting your notes, you have to synthesize, summarize, and rephrase the concepts you are learning into a form that you can save for later; all of these acts are important parts in contributing to your learning. In other words, typing notes may not be helpful since, if you can type fast enough, you can completely transcribe the content you see. While being able to perfectly write down every word you hear is impressive, it’s not actually helping you learn since you are so focused on typing rather than synthesizing.

We bring this concept up, not to necessarily say you must take handwritten notes, but instead, to emphasize why it’s important to try to do this synthesis task while you are learning.

While it does take more work to make study notes and reference sheets earlier, you’ll be thankful when you have a more concise reference to look at than this book!

Reflect#

Along similar lines to taking notes, it’s a good idea to periodically pause and reflect on what you’ve learned. During this reflection, you should try to:

  • Recall what you’ve learned

  • Summarize (and write it down) what you’ve learned in your own words.

  • Write down any unsolved questions you have. This way you have a repository of questions that you can focus on getting answers to!

We actually encourage you to do this step during each lesson! Every lesson has a dedicated slide that prompts you to do some reflection on what you learned in the lesson for the day. We recommend that every time you see one of these “ Pause and Think” slides, you make a section in your notes to do the reflection questions described!

We also recommend you do more long-term reflection. Do a similar reflection activity at the end of each module. You’ll find trying to summarize your notes and reference sheets for a module will be really useful when looking back and trying to recall information you learned earlier.

Practice#

Make sure you are doing all of the practice problems as they show up in the lessons! This is your chance to be more active in your learning and actually test your understanding. It’s totally expected to find the practice problems challenging! That challenging sense you feel when you don’t quite know how to solve a problem is a sign that you are learning! You should try to persevere and try to solve the problem even if you struggle on the way; you will grow through that experience.

Relate#

An important aspect of learning is relating new information to prior knowledge. Whenever you learn a new concept, are practicing, or reflecting on what you’ve learned: try to relate the information you are processing to things you already understand or are familiar with.

Whenever we introduce a new topic, try to understand how it relates to a previous topic:

  • How are the topics similar?

  • How are they different?

This will help you build a mental model of the whole course. This overall mental-model is arguably the most important artifact you’ll learn from this course! When faced with a new task, having a strong grip over a high-level structure of data programming will be immensely helpful in order to recall relevant information (or search for answers to related concepts).

This is particularly important in the first few modules of this book for students who are coming from a first programming class in Java or some other language. A lot of the concepts you will learn early on in this book have analogues in Java or your previous programming language. This helps solidify your understanding of new Python syntax in your understanding of the programming concepts in your previous you’ve built with your prior experience.