Sunday, December 18, 2011

Online Computer Science Classes & Course Materials

You don't have to go to school to learn new things. This statement is true especially for computer sciences. There are tons of CS material waiting for people who want to acquire some computer science knowledge.

You can easily find online computer science classes and course materials of some well-know universities, such as Stanford, MIT and Harvard. All you have to do is visit their site and begin learning.

For instance, Stanford Engineering professors are setting out to add a new level of interactivity to online education by offering some of the university's most popular computer science classes for free. Next semester will start in 2012 with 9 classes. Available classes are CS 101, Saas, Human Computer Interaction, NLP, Game Theory, Probabilistic Graphical Models, Cryptography, Design and Analysis of Algorithms and Computer Security.

Of course there are other online learning resources other than Stanford University classes. I've tried to gather up those online courses and some other online education resources. Continue reading if you are interested in studying computer science without going to university and hear about the things to do to self-educate yourself  :

Sign in to an online course offered by Stanford University :
Stanford University not only offers free access to their course materials, but also give a chance to complete assignments and take quizzes and an exam. What online students won’t receive, however, is one-on-one interaction with professors, the full content of lectures – or a Stanford degree.
"Introduction to Artificial Intelligence" Course: Taught by Sebastian Thrun and Peter Norvig, the curriculum draws from that used in Stanford's introductory Artificial Intelligence course. Artificial Intelligence is the science of making computer software that reasons about the world around it. Humanoid robots, Google Goggles, self-driving cars, even software that suggests music you might like to hear are all examples of AI. In this class, you will learn how to create this software from two of the leaders in the field. Classes has already been started but you can still reach the course material.

"Introduction to Databases" Course :  Taught by Professor Jennifer Widom, the curriculum draws from Stanford's popular Introduction to Databases course. This course covers database design and the use of database management systems for applications. It includes extensive coverage of the relational model, relational algebra, and SQL. It also covers XML data including DTDs and XML Schema for validation, and the query and transformation languages XPath, XQuery, and XSLT. The course includes database design in UML, and relational design principles based on dependencies and normal forms. Many additional key database topics from the design and application-building perspective are also covered: indexes, views, transactions, authorization, integrity constraints, triggers, on-line analytical processing (OLAP), and emerging "NoSQL" systems. Current course is about to end soon but you can still reach the course material.

"Computer Science 101" Course : CS101 teaches the essential ideas of Computer Science for a zero-prior-experience audience. The class will start in February 2012.

"Software as a Service" Course : This course teaches the engineering fundamentals for long-lived software using the highly-productive Agile development method for Software as a Service (SaaS) using Ruby on Rails. Requires proficiency in an object-oriented programming language. The class will start in February 2012.

"Human-Computer Interaction" Course : In this course, you will learn how to design technologies that bring people joy, rather than frustration. The class will start in January 2012.

"Natural Language Processing" Course : The course covers a broad range of topics in natural language processing, including word and sentence tokenization, text classification and sentiment analysis, spelling correction, information extraction, parsing, meaning extraction, and question answering. The class will start January 23 2012.

"Game Theory" Course : Popularized by movies such as "A Beautiful Mind", game theory is the mathematical modeling of strategic interaction among rational (and irrational) agents. Beyond what we call 'games' in common language, such as chess, poker, soccer, etc., it includes the modeling of conflict among nations, political campaigns, competition among firms, and trading behavior in markets such as the NYSE. The class will start in late February 2012.

"Probabilistic Graphical Models" Course : In this class, you will learn the basics of the PGM representation and how to construct them, using both human knowledge and machine learning techniques; you will also learn algorithms for using a PGM to reach conclusions about the world from limited and noisy evidence, and for making good decisions under uncertainty. The class will start in late January 2012 and will last approximately ten weeks.

"Cryptography" Course : Cryptography is an indispensable tool for protecting information in computer systems. This course explains the inner workings of cryptographic primitives and how to correctly use them. The class will start in January 2012.

"Design and Analysis of Algorithms 1" Course : In this course you will learn several fundamental principles of algorithm design. The class will start in January 23, 2012 and will run for five weeks.

"Computer Security" Course : In this class you will learn how to design secure systems and write secure code. You will learn how to find vulnerabilities in code and how to design software systems that limit the impact of security vulnerabilities. The class will start in February 2012.

Access MIT Courses offered in Open CourseWare:
Electrical Engineering and Computer Science department of MIT provides their course materials. Includes broad range of courses such as "Introduction to C++", "A Gentle Introduction to Programming Using Python", "Automata, Computability, and Complexity", etc.

Access Harvard University Course Content

For all courses:

You can check out "Google Code University":
Google Code University includes sample course content and tutorials for Computer Science (CS) students and educators on current computing technologies and paradigms. There are courses about programming languages, web programming, web security, algorithms, android, distributed systems and Google tools. "Google's Phython Class" is one of the most popular courses.

Watch Computer Science videos offered in  : There are more than 5000 videos from a broad range of topics. Popular topics include Artificial Intelligence, Semantic Web, Machine Learning, Data Mining, NLP.

You can watch CourseHero Computer Science videos  : Includes tons of lectures from various universities all over the world.

You can watch videos of Computer Science courses offered in

There are 23 course videos available. Some of them are:
Introduction to Computer Science and Programming from MIT,
Machine Learning of Stanford,
Operating Systems and System Programming of Berkeley,
Building Dynamic Websites from Harward,
Introduction to Algorithms from MIT,
Data Structures of Berkeley

For all courses:

You can practice Code Kata : Greatness comes from practicing. Code Kata will help you do that in programming. In the software industry we take developers trained in the theory and throw them straight in to the deep-end, working on a project. It’s like taking a group of fit kids and telling them that they have four quarters to beat the Redskins (hey, we manage by objectives, right?). In software we do our practicing on the job, and that’s why we make mistakes on the job. We need to find ways of splitting the practice from the profession. We need practice sessions.

Other Resources:

This article is also introduced in DZone.