I've been following the CS101 - Introduction to Computer Science course on udacity.com. I've just started Unit 6. Thus far, we've learned so much about many new concepts that I haven't encountered in any of the "Intro to Language X" tutorials out there. I've come to the realization that just getting a program to perform the desired function is really only the tip of the iceberg. Writing efficient, scalable, optimized, and understandable code is really going to be the hallmark of a pro vs. someone who's still fiddling with the basics.
These concepts are rumbling around in my head like sneakers in a dryer:
- Architecture of data structures
- Indexes & Hash Tables
- Fibonacci Sequences
We spent most of Unit 5 developing our own hash table from scratch, with create, update, and lookup functions based on a "bucket" system. The idea behind it was to return a hash value that could be used to narrow down an index search. When we finally got the thing up and running, the python data type dict was introduced and I'm sure I wasn't the only person having a "oh c'mon... I could have used this from the get-go" moment.
After implementing the dict in my index instead of a nested list, I really appreciated how fast it was to retrieve a value given a key.... and the fact that we built our own version of a dictionary is what allowed me to appreciate that. I'm not completely sure what kind of algorithm Python is using to make searching easier, I just know there is one. +1 Understanding!