I’m a big advocate of learning for free. I value a formal education as much as the next person but if I can learn something on my own from a free resource, well, that is simply awesome.
Youtube and Google University are much better today than when I started my career. You can learn just about anything you want as long as you know what you are looking for. There’s the problem though, how does a beginning programmer know what to look for? That’s where I come in and share that with you.
Chances are that if you are beginning programming today, you will likely need to learn about certain things like algorithms, data structures and object oriented programming (OOP).
With algorithms and data structures, the concepts are the same no matter what language you use. However, implementing data structures or algorithms in certain languages is unnecessary because some languages have better ways to solve the problem that these algorithms solve. So, depending on which language you know, that may determine which language you use to implement them.
Below is a list data structures that every programmer should know how to implement. Take that list and google, youtube, and then implement them until you have a good grasp. If you know these well you will know about as much as a college graduate that attended the data structures class.
- A single linked list
- A doubly linked list
- A stack
- A queue
- A binary tree – learn how to create a tree, learn how to search a tree, learn what the advantages of a tree are.
- A hash-table
- A re sizable array
- A large number structure
For algorithms, use the following list as a guide. Before you dive deep into algorithms, you will need to learn about Big Oh notation. After that, take this list and google, youtube, and implement each of the algorithms until you have a solid understating of each.
As with the data structure list above if you know these implementations well, you will know just as much as the average college C.S. grad.
- Bubble Sort
- Quick Sort
- Merge Sort
- Heap Sort
- Insertion Sort
- Find largest prime number
- Create a hash
- Tree Traversals – depth first, breadth first
Object Oriented Programming, in my opinion, is something that is not taught well in college. Before you dive deep into these articles you should have a solid understanding of an OO language like C++ or Java.
It may sound contradictory that I am saying that you must already know an OO language. Wait? Does that mean that you know and OO language but don’t have a solid understanding of OOP design? Yes. Just because you know how to program with an OOP language does not mean that you have a solid OOP design skills.
Once you have firm grasp on an OO language, explore the following resources. They are some of the best known resources in the industry.
martinfowler.com is an Excellent resource, but it can be a challenge navigating his site to find what you really need. With that said here are a couple of my favorite Martin Fowler articles.
- Inversion of Control Containers and the Dependency Injection
- bliki: UnitTest
Another great teacher regarding OOP is Robert “Uncle Bob” Martin. Here is a list to a series of his articles on principles of OOD:
Another awesome free resource is Code Magazine. Code Magazine provides lots of free content. Many of their articles are tech specific but many of them are not. Here is a link to their site Code Magazine.
One of my favorite articles regarding OOP principles is S.O.L.I.D. Software Development, One Step at a Time.
You can search through their past issues and find many great examples.
This should be enough to keep you busy for a while. Once you get past these come back and visit us again as we provide you with the next set of challenges.
Until next time, enjoy your journey.