How to study for this course?

It is usually too late when we have a conversation about this! So I thought to bring it up preemptively before you ask! Generally speaking, you do what works for you! Everyone is different and something that works for me will not necessarily work for you. That said, here are a few suggestions that you might find helpful!

Attend the lectures in person!

The classroom gives you a focused space—outside of your regular living/working space—where you can participate in class without disturbance.

You can interact and socialize in person—safely and at a distance—with your peers. This enables you to find new friends and study buddies, and engage in learning as a social activity.

If you cannot attend in person, at least join the lecture remotely. It is not a good idea to plan on watching recorded lectures. It can all too easily be put off and get piled up! By following the class schedule, you establish and maintain a healthy routine to study for this course.

Stay caught up and come to lectures prepared!

The course material builds on earlier topics. If you don't know what we did last lecture, you will have a difficult time following this lecture! If you come prepared and caught up, the class time would be so much more productive and enjoyable for you and us alike. We would have informed class discussions and focus on addressing outstanding issues and problems.

Actively engage during lectures!

Examples of active engagement include active listening, asking/answering questions, coding along, working with your peers on exercises, etc.

Taking notes is another way of active engagement. The provided lecture notes could serve as a replacement for personal notes. However, the note-taking process is shown to facilitate the learning process (putting it in your own words, deciding what is and is not worthy of jotting down, ...). A benefit of the provided notes is that you don't have to write down everything or worry that you might have missed something! In fact, I advise against writing down everything! Note-taking during lectures should be more about outlining, mind mapping, highlighting, etc. You can fill out the details later!

Actively engage with the material!

Rereading your notes (or the posted ones) and/or rewatching the recorded lecture videos are not nearly as effective as deliberate practicing!

Rereading notes and rewatching lectures give rise to feelings of fluency that may be taken to be signs of mastery. Avoid illusions of knowing that gives the false impression of knowledge mastery!! Instead, revisit a topic a few days after we covered it in class to allow yourself to forget it! Then, instead of re-reading the notes, read through the learning outcome (first page of every chapter) and try to provide yourself with evidence that you achieved them. Evidence such as writing down a definition from memory, working out the efficiency of an operation, implementing a data structure without looking at the solution, etc. Through this process, you will figure out what you know and don't know. Moreover, you will likely discover misunderstandings or potential confusion. You now have a chance to take action to address such issues.

Another example is the solutions to embedded exercises in lecture notes. Those solutions are posted at 5:00 PM on the day of the lecture where we covered the exercise. Refer to solutions only after you reasonably tried to find one on your own. Trying to come up with an answer rather than having it presented to you, or trying to solve a problem before being shown the solution, leads to better learning and longer retention of the correct answer or solution.

Finding ways to test yourself can deepen your knowledge. You can use self-created questions or flashcards. A study partner also can quiz you and help you clarify your areas of strengths and weaknesses in your knowledge of the course material. In case you need more resources, please refer to the FAQ page, the question "Where can I find resources for more practice, in particular coding exercise?"

Start working on homework as soon as it is released!

Give yourself plenty of time to work on the homework. Work a bit every day (like an hour or two) rather than once a week for a large chunk of time (like 5 hours over the weekend). However, avoid switching topics or problems too quickly or falling prey to multitasking. Multitasking is extremely ineffective when learning.

Homework-1 offers some advice about working on homework that includes employing "systematic debugging" (See Appendix for a summary and other tips).

Embracing difficulties!

Have a "growth mindset" and embrace the fact that "learning must be effortful." If you have not heard these before, I highly recommend looking them up! Here are two articles to start with: