How to Study in this class#
In this page, I break down how I expect learning to work for this class.
Begin a great programmer does not require memorizing all of the specific commands, but instead knowing the common patterns and how to use them to interpret others’ code and write your own. Being efficient requires knowing how to use tools and how to let the computer do tedious tasks for you. This is how this course is designed to help you, but you have to get practice with these things.
Using reference materials frequently is a built in part of programming, most languages have built in help as a part of the language for this reason. These tools can help you when you are writing cod eand forget a specific bit of syntax, but these tools will not help you read code or debug environment issues. You also have to know how to effectively use these tools.
Knowing the common abstractions we use in computing and recognizing them when they look a little bit differently will help you with these more complex tasks. Understanding what is common when you move from one environment to another or to
This course is designed to have you not only learn the material, but also to build skill in learning to program. Following these guidelines will help you build habits to not only be successful in this class, but also in future programming.
Why this way?#
Learning requires iterative practice. In this class, you will first get ready to learn by preparing for class. Then, in class, you will get a first experience with the material. The goal is that each class is a chance to learn by engaging with the ideas, it is to be a guided inquiry. Some classes will have a bit more lecture and others will be all hands on with explanation, but the goal is that you experience the topics in a way that helps you remember, because being immersed in an activity helps brains remember more than passively watching something. Then you have to practice with the material
Preparing for class will be activities that helpy ou bring your prior knowledge to class in the most helpful way, help me mee
You will be making a lot of documentation of bits, in your own words. You will be directed to try things and make notes. This based on a recommended practices from working devs to [keep a notebook]](https://blog.nelhage.com/2010/05/software-and-lab-notebooks/) or keep a blog and notebook.
Learning in class#
Important
My goal is to use class time so that you can be successful with minimal frustration while working outside of class time.
Programming requires both practical skills and abstract concepts. During class time, we will cover the practical aspects and introduce the basic concepts. You will get to see the basic practical details and real examples of debugging during class sessions. Learning to debug something you’ve never encountered before and setting up your programming environment, for example, are high frustration activities, when you’re learning, because you don’t know what you don’t know. On the other hand, diving deeper into options and more complex applications of what you have already seen in class, while challenging, is something I’m confident that you can all be successful at with minimal frustration once you’ve seen basic ideas in class. My goal is that you can repeat the patterns and processes we use in class outside of class to complete assignments, while acknowledging that you will definitely have to look things up and read documentation outside of class.
Each class will open with some time to review what was covered in the last session before adding new material.
To get the most out of class sessions, you should have a laptop with you. During class you should be following along with Dr. Brown. You’ll answer questions on Prismia chat, and when appropriate you should try running necessary code to answer those questions. If you encounter errors, share them via Prismia chat so that we can see and help you.
After class#
After class, you should practice with the concepts introduced.
This means reviewing the notes: both yours from class and the annotated notes posted to the course website.
When you review the notes, you should be adding comments on tricky aspects of the code and narrative text between code blocks in markdown cells.
While you review your notes and the annotated course notes, you should also read the documentation for new modules, libraries, or functions introduced in that class.
If you find anything hard to understand or unclear, write it down to bring to class the next day or post an issue on the course website.