There are many good materials, free ebooks, lectures, ... but here is a few of things come with me many years when I started learning "Hello World" in Computer Science. Thanks to Google University (I have started using Google since 2004) the Foundations, Foundations of Computer Science http://infolab.stanford.edu/~ullman/focs.html Introduction to Programming in Java http://introcs.cs.princeton.edu/java/home/ Algorithms, 4th Edition http://algs4.cs.princeton.edu/home/ http://www.cs.princeton.edu/courses/archive/fall11/cos226/lectures.php http://www.cs.princeton.edu/~wayne/kleinberg-tardos/ Advanced level: Mining of Massive Datasets http://infolab.stanford.edu/~ullman/mmds.html Agile Patterns: The Technical Cluster (a good engineer should understand both theory and practice) http://www.infoq.com/minibooks/agile-patterns Networks, Crowds, and Markets:Reasoning About a Highly Connected World http://www.cs.cornell.edu/home/kleinber/networks-book/ for self-study student
Questioning reality in the age of algorithms. This blog examines the impact of dataism on society, ethics, and our perception of free will.