Best practices for learning
Try to explore the different courses offered for a subject by the world-class universities like Stanford, MIT, etc. They also offer the most popular courses through initiatives. One such example is Stanford Engineering Everywhere Some courses are very innovative. Many courses have a rationale behind its design and pedagogy. These courses are tailored for specific audience. So you can choose which one to follow. For ex. At Stanford there are some courses like
o“The Game of Go: Strategy, Theory, and History”
o“Speedcubing: History, Theory, and Practice”
More important is the fact that you can choose to learn subjects of an entirely different discipline according to your interest.
There are courses for an advanced audience too. Given sufficient amount of courage, discipline and drive, one need not attend college to master a subject of his choice. After all they have invested millions of dollars and time to serve those who are starving intellectually.
There also maintain very interesting sites like Nifty Projects, which are real assignments to students, some of which are innovative and popular.
The research divisions of many corporates post interesting problems to be solved. Some interesting ones are
*Ponder This by IBM
and many others maintain such challenges. You need to look out for them
Moreover there are popular websites like Programming Praxis , CodeKata, which will help you sharpen your programming skills.
Go Explore. Workout, Sharpen your skills, Apply and Serve others.