Assignments :)
This is being put together as a place to have your code reviewed.
-
Install an IDE. I recommend Anaconda/Spyder, but you may want to look around in the future: https://www.anaconda.com/download/ We're going to use Python 3. There are differences between 2 and 3.
-
Learn the language. Go through the tutorial material, try some of the examples. https://docs.python.org/3/tutorial/. Use This github (or rather, a fork of this github) to show any code you write.
-
Documentation and Stack Overflow are your friends. If you don't know quite how to do something, the first place you should turn is Google. Being a software developer, is at least in part, knowing how to look things up when you don't know them.
- Time complexity. This is a measure of how long an algorithm is going to take based on how many elements the algorithm is acting upon. A full definition can be found here
- O(1) means constant time. No matter how many elements you're acting on, it takes the same amount of time.
- O(n) means linear time. Acting on 1000 elements will take aproximately 10 times as long as acting on 100 elements.
- O(n^2), O(n^3)... Polynomial time. Following the same definition as above.
- O(log(n)) Logirithmic time. There are others, this should at least give you an idea of what you're looking at when you see this though.
- Memory Complexity. This is a measure of how much memory something takes dependent on how many elements are being acted on. For instance, sometimes you need to create copies of memory to work on. Many algorithms are O(1) or O(n). I believe this is used less than time complexity, but it's still something to know about. More info here