I am pretty sure that is true, but it helps break up monotony (even in games). Especially when you have truly random achievements like go to this random spot on some map. Makes it interesting in subtle ways if they do it right.
For me, I remember taking Robert Sedgwick’s algorithms course over at Coursera and being a bit overwhelmed. He was incredibly thorough, but I was learning Java while taking the course so it was pretty rough. He also had insane automated tests that made sure whatever algorithms you produced were sufficiently optimized (both in terms of time and space). Still an incredible learning experience, but not as enjoyable as Mosh’s material.
I do agree that Mosh tends to feel like he hits the right information at just the right time, but he does occasionally have a bug in this bit of code or another. It is pretty funny when he fixes one of his bugs while “refactoring” which is a classic. For example, he did that on his third algo course for the “is this string a rotation of the other” when he accidentally concatenated the two strings rather than the first string twice (then fixed it during a refactor).
Right now, I’m going through Mosh’s design patterns courses. I have studied the patterns directly by reading about them and used a number of them in my work, but now I am interested in seeing more details about them from Mosh. Hope it is as good as his other material!
Just everyday omission. Happens all the time.
OMG it doesn’t compile! I forgot that semicolon.
I am super grateful when the IDE is able to tell me what I did wrong before I have to go looking for it.
“Red squiggle there… Oh oops, I forgot to close that expression. Thanks IDE for saving me 2 hours of confusion and frustration.”
I learnt a few design patterns in a training I took a few years back.
If I remember well we saw:
Factory
Decorator,
Observer
Strategy,
Singleton
and Façade.
Now I am trying to learn them all from GoF.
I actually took the course from Dmitri Nesteruk. He explained the thing with advanced tech such as Reactive Extensions I do not know and showcased concepts that are still obscure to me so it took too long. But he does that in accordance to a good way of implementing them in .NET. I’ll go back to it at a later time. For now I need to understand them simply and implement them in the classic general way. I bought the ebook from Alexander Shvets and I find he explains very well too. Most of the content is on the online sites but I like to have an offline copy so I bought it.
One topic I’d love to learn is how to internationalise applications of different kind (desktop, mobile, web) with .NET. I have a global comprehension of it as a translator but I do not know how to do as a developer.
Learning from the source is definitely useful. I just find it easier to get summary information for instruction and use the source as a reference when you need it.
His explanations are so clear, he not only explains what to do, but also why it is done this way and not another, love this part of his teaching
This is soooo true!! Can relate 100%
I don’t really know what design patterns are, sadly it is not taught in my engineering school. Will need to learn it on my own!
Definitely one of his best qualities. He is thorough.
I have also found his visual illustrations of certain topics to be excellent. For example, in the data structures courses when he is illustrating the algorithms I find the drawings and animations to be excellent.
Perhaps the biggest drawback for his courses is that they get stale. That may partially be a side effect of how much detail he goes into. More details means your course is only as accurate as those details remaining correct. It makes his coursework more susceptible to breaking changes in the material he is teaching on future updates to that material.
I highly underestimated IDEs while I was learning to program. I think it is because I did not understand what they were doing (or what they could do). So when I used code generation or refactoring I had no idea what was going on. Many useful things were wasted since I just did not know how to use them properly.
They are things like the Iterator, Builder and Observer patterns. The most popular ones have been encoded into many modern languages. For example, Java has a built-in Iterator interface which is used by the language to implement for-each loops. If you never studied them, I highly recommend doing so with Mosh’s courses (or at least reading the book by the “Gang of Four”).
Very pleased to contribute
Great! Now we are at 75 so we are 3/4 of the way to the goal! Time for another celebration post:
Yep, C# has built-in Iterator too to be able to use foreach
. When I recreated the pattern from scratch though I could not use foreach
but had to iterate with while
and Next()
method.
I mean, technically you could probably use the built-in using the standard APIs using a while loop and next (at least you can in Java).
Here is the Java Iterator interface (ignoring default methods):
public interface Iterator<E> {
boolean hasNext();
E next();
}
So in Java you can use the Iterator like this:
Iterator<SomeClass> someIterator = ...;
while (someIterator.hasNext()) {
var next = someIterator.next();
... // do something with the next element
}
But if you have the class that creates the Iterator implement the Iterable interface, you can do the for-each loop:
class Things implements Iterable<Thing> {
@Override
public Iterator<Thing> iterator() { ... }
... // rest of the class
}
class Main {
public static void main(String[] args) {
var things = new Things();
... // add Thing objects to things
for (var thing : things) {
... // do something with each thing in things
}
}
}
Yeah indeed, even though the main principles remain true, it makes people (including myself) lose a lot of time to eventually succeed in reproducing what Mosh does!
Awesome! Thanks for sharing these ressources, greatly appreciated!
And now we did 4/5 of the work