Studying Smarter CS Edition: Habits and Process?

In summary, through deliberate practice, you can gain fluency in understanding sorting algorithms. However, there is no "magic" method that everyone follows, and flashcards are not always a good format for learning.
  • #1
Munnu
17
1
I've want to gain fluency when it comes to retaining the code behind sorting algorithms. I want to be able to recall and write them up with efficiency without taking a long time to waddle around until I get it right. They're falling out of my head.

Note: I'm not necessarily asking how to memorize sorting algorithms, though if memorization is the only means to retain and gain mastery I'd like to hear what the process looks like in order to gain mastery and retention. I'm asking about fluency through deliberate practice methodology and habits.
  1. I figure it's because it's worth asking those who study smarter how to explain their step-by-step process if they were to explain it to an alien, or to write a descriptive guide for someone who can't shadow their habits?
    For me, it's unclear how a lot of study methods translate over to things like math, engineering, or CS.
  2. Another question is: I googled around to find people say they use flashcards. How in the world would someone study from a flashcard deck that looks like this if they want to retain these concepts and be fluent? Are flashcards even a good format for things like this?
 
Technology news on Phys.org
  • #2
Munnu said:
I've want to gain fluency when it comes to retaining the code behind sorting algorithms. I want to be able to recall and write them up with efficiency without taking a long time to waddle around until I get it right. They're falling out of my head.

The point is to understand in a clear way how each sorting algorithm of the ones you're interested at, works and this also holds true for every algorithm. This is math. Then, if you're not working in this field i.e. you don't come across them every so often, you must try and implement it in as many programming languages as you can. It may be just one for a start but make a plan, as you learn more programming languages and you're gaining fluency and get into the right programming habits, to implement the algorithm(s) you want and also apply known modifications and in general experimenting, especially with things you don't understand. It takes years to gain fluency both for learning a programming language and being acquainted with various algorithms implementations.

Munnu said:
I figure it's because it's worth asking those who study smarter how to explain their step-by-step process if they were to explain it to an alien, or to write a descriptive guide for someone who can't shadow their habits?
For me, it's unclear how a lot of study methods translate over to things like math, engineering, or CS.

According to my experience there is no "magic recipe" when it comes to study and learn anything. The crucial factors are: do you really love what you want to learn e.g. CS / programming in this case? Are you willing to devote the time and efforts needed? Have you an even rough plan about what route i.e. specific things, specializations etc. you're mostly interested at? If you have these clear then I think that you're ready to go and with the necessary patience and consistency you'll finally reach some good point. Of course it is different to be in University / College and follow this plan with the help of professors, advisors and supervisors, which gives you a very high chance to succeed and it is another thing to study on your own. In the second case you'll need way more patience and consistency and it is also necessary to work in the field. Even with these you will lack theoretical knowledge which in my experience is very difficult to gain as a self learner.

Munnu said:
Another question is: I googled around to find people say they use flashcards. How in the world would someone study from a flashcard deck that looks like this if they want to retain these concepts and be fluent? Are flashcards even a good format for things like this?

Flashcards and similar stuff are a handy tool to find quickly some definition, notion, commands of a programming language etc. but this is intended mostly as a quick helper for basic things and not as a learning tool. If you already know something and forget about a specific thing then it might be of help. If you need a summary for, say, your exam then it might be of some help. Also, if you know about something similar / related to the subject of a flashcard then you can find quickly something that makes sense . But if you don't know anything about a subject, you may learn some things through a flashcard quickly but it is more than sure that you won't know the whole story and you will be missing a lot of correlated things.
 
  • #3
I want to be studying more efficiently. My question was not intended as asking for a magic bullet as much as getting to know how do others structure their own learning as a whole, but tweaked towards this topic. I want to know how other people allocate their time and methodically approach problems. It might be worth hearing more about.

  1. Did anyone find a study process that "makes sense to them” and reflected in the results?
  2. Everyone studies till they pass out at their computer - we all know that, though I'm sure there are good processes to be aware of that is more of an active learning model. Like, not all study methods that work in other fields may rigidly translate well into math, CS, engineering.
  3. I’m not thinking of “study hacks,” but methodology or habits that helped in learning especially this content or similar.

Regarding flashcards, thank you for clarifying.
 
  • #4
@QuantumQuest is right. You need a sort of "pseudocode map" for algorithms. What both of us mean as a tangible example:

There is a website dedicated to algorithms and how to write them in multiple computer languages: http://rosettacode.org/wiki/Rosetta_Code

It is a chrestomathy for algorithms. Go to the sort section. Pick bubble sort (arbitrary example) Start with an explictly low-level language. Look at the C example, then look at some higher languages like maybe java. What you will see is a pattern (the base algorithm).

Until you can figure out what the basis of the algorithm is, keep looking. QQ gave the math suggestion which is how you will eventually get it. Simply because it works well as long as you know the computer language reasonably well.

A substantial fraction of almost everything you need to know is in a set of books from Donald Knuth. Most programmers I have worked with have spent time with Knuth.
https://en.wikipedia.org/wiki/The_Art_of_Computer_Programming

You do NOT need to buy it. Go to a college library instead.

So, if you go at it from Knuth and then switch over to the rosettacode site for the same stuff, the pseudocode map will become clear. Or start with the website and go to Knuth. Does not matter.
 
  • Like
Likes QuantumQuest
  • #5
Another idea:

I think QuantumQuest and I are both big fans of Tim Roughgarden's Algorithms course online. It's language agnostic so you can use whatever language you want.

Part 1 is freely available here:
https://lagunita.stanford.edu/courses/course-v1:Engineering+Algorithms1+SelfPaced/about
- - -
note he hits Mergesort and Quicksort hard in part 1. I think you also indirectly pick up heapsort later on in Djikstra. If you want more sorting possibilities beyond that (e.g. insertion sort) you'd need to supplement elsewhere.
- - -
I really like his approach. Mergesort and Quicksort are juggernauts of sorts, so focusing on them, and what's more, really learning the technique of divide and conquer seems to offer a really high return per amount of time invested.

Btw, as the (apocryphal?) story goes von Neumann discovered merge sort while playing with a deck of cards. Taking a deck of cards and dividing it into collections of smaller and smaller 'decks' until they are one card each, then merging and sorting back your way into a full (sorted) deck has a very nice physical feel to it. I think this helps me remember the mechanics of mergesort.
 
  • Like
Likes QuantumQuest

1. What are some proven study habits for Computer Science?

Some proven study habits for Computer Science include creating a study schedule, breaking up study sessions into smaller chunks, actively engaging with the material by taking notes and asking questions, and regularly reviewing and practicing concepts.

2. How can I improve my problem-solving skills in Computer Science?

To improve problem-solving skills in Computer Science, it is important to practice regularly and to approach problems systematically by breaking them down into smaller, more manageable steps. It is also helpful to seek out additional resources and collaborate with others to gain different perspectives.

3. What is the best way to prepare for a Computer Science exam?

The best way to prepare for a Computer Science exam is to start studying well in advance and to regularly review and practice the material. It may also be helpful to create study guides, work through practice problems, and seek clarification on any concepts that are unclear.

4. How can I stay motivated while studying for Computer Science?

To stay motivated while studying for Computer Science, it is important to set achievable goals, reward yourself for making progress, and take breaks when needed. It can also be helpful to find a study partner or join a study group for accountability and support.

5. What are some common mistakes to avoid when studying for Computer Science?

Some common mistakes to avoid when studying for Computer Science include cramming, relying solely on memorization, and neglecting to regularly review and practice material. It is also important to avoid distractions and to seek help when struggling with a concept rather than falling behind.

Similar threads

  • Programming and Computer Science
Replies
6
Views
965
  • Programming and Computer Science
Replies
2
Views
711
  • STEM Academic Advising
Replies
16
Views
1K
  • Science and Math Textbooks
Replies
28
Views
3K
  • STEM Educators and Teaching
Replies
3
Views
1K
Replies
4
Views
1K
Replies
22
Views
895
  • STEM Academic Advising
Replies
1
Views
2K
  • Classical Physics
Replies
8
Views
1K
Back
Top