Reviewed my projects and learning goals. I have felt myself slipping into ‘randomness’ again as far as my study and project management. I am planning a blog to explain things in more detail but essentially I’m going to approach my projects the same way as exercise – identify primary and secondary elements then rotate through them in a specific order with primary followed by secondary. However if I can’t get to a secondary project in a given day then it falls back into the queue so that the day always begins with work on a primary project.
I’m also going to make a quick note here of what I worked on as a reference.
Worked on AI course last night. Ended up reviewing the term ‘recursive’ which naturally led to iteration using Python examples. That led to reading about binomial coefficients, Fibonacci numbers, and Pascal’s Pyramid.
Then secondary study of Castles and Crusaders books and some notes to prepare for playing next week when the kids are off.
For example, in two-dimensional space, we have vectors such as x = (3, 4) and y = (0, 2) .
I am just starting an EDx course on Artificial Intelligence and I just read this in the recommended book, Artificial Intelligence: A Modern Approach, in the math appendix and I realized it is a key-value pair, and or a tuple (I am thinking in Python terms though I think this is broadly applied to many languages)
So is this why a dictionary is hashable? It can be represented in such a way that every part is in relation to every other so if you know a few parts you can abstract or build the rest?
In other words, iterating through a dictionary takes the same amount of time no matter the size but not so with a list. In python. In some languages there is no distinction between a list and dictionary.
Here is an interesting site that describes the concepts in addition to the book.
I have been thinking about the algebra problem I helped my 14 yo with. Thinking in a ‘meta’ over principle context, Algebra right now, in these beginning stages, is about learning to recognize a problem and name or categorize it (polynomial, etc) and know what algorithm to apply to it – and in the next levels to take a problem and break it down into something that a familiar algorithm can be applied to – break it down into something that can be named or categorized and that a known algorithm can be applied to.
Programming is essentially the same. Framing a problem in such a way and breaking it down into pieces that can then be coded.
Using Docker to Learn Programming
Basic Use Case
Docker is a fantastic tool for use when learning any programming language. The ability to have a virtual, independent environment that can be manipulated a near infinite variety of ways is indispensable as you progress through learning a new language, especially if you are working on different versions. A Docker image can provide a clean environment on each use or be extended with volumes. It is easy to setup multiple environments using a minimum of space especially if you take the time to really plan, since Docker uses a system of layers when making images you can build up from a vanilla install to multiple package configurations without a separate virtual machine install for each case.
Continue reading “Using Docker to Learn a Programming Language”