Studying Smarter CS Edition: Habits and Process?

  • Thread starter Munnu
  • Start date
  • #1
11
0
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?
 

Answers and Replies

  • #2
QuantumQuest
Science Advisor
Insights Author
Gold Member
926
485
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.

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.

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
11
0
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
jim mcnamara
Mentor
4,220
2,787
@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
StoneTemplePython
Science Advisor
Gold Member
1,179
577
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

Related Threads on Studying Smarter CS Edition: Habits and Process?

Replies
6
Views
9K
  • Last Post
Replies
4
Views
2K
Replies
4
Views
672
  • Last Post
Replies
4
Views
2K
Replies
4
Views
2K
  • Last Post
Replies
1
Views
3K
  • Last Post
Replies
14
Views
2K
  • Last Post
Replies
0
Views
1K
  • Last Post
Replies
0
Views
1K
  • Last Post
Replies
15
Views
712
Top