Laura Diane Hamilton

Technical Product Manager at Groupon

Resumé

10 Fantastic Online Technology Classes

I've learned a great deal over the past couple years from online courses. There is a lot of fantastic content on websites such as Coursera, edX, Udacity, and Codecademy. People often ask me for recommendations on good courses to learn programming, ruby on rails, or analytics. Here are some of my favorite classes.

Class #1: Web Fundamentals (Codecademy)

Codecademy offers a very beginner-friendly gamified introduction to web development. Their Web Fundamentals track covers topics such as HTML and CSS. If you're absolutely brand new to programming, this is a good place to start.


Class #2: MIT 6.00.1x — Introduction to Computer Science and Programming Using Python (edX)

This course is intended for students with no prior programming experience, and it provides a good explanation of the fundamentals. The course covers the notion of computation, an introduction to the Python programming language, some simple algorithms, an introduction to algorithmic complexity, data structures, as well as testing and debugging best practices.


Class #3: Berkeley CS 169.1X — Software as a Service Part 1 (edX)

Software as a Service is intended for students with some programming experience. (Completing the above course "Introduction to Computer Science and Programming Using Python" will likely be sufficient.) This course explains how to create a web application using Ruby on Rails. The class covers both theoretical and practical elements of web development, including software engineering best practices, agile development, pair programming, and metaprogramming. It also covers test-driven development with RSpec and behavior-driven development with Cucumber and Capybara.


Class #4: Berkeley CS 169.2x — Software as a Service Part 2 (edX)

Intended to follow CS 169.1x, this class covers advanced rails topics as well as software engineering best practices. It explains how to use version control to work on software development teams, how to change and refactor legacy code, design patterns, code deployment, server monitoring, website performance, and security.


Class #5: Stanford — Startup Engineering (Coursera)

Intended for students with some programming experience, this class is a very tactical explanation of how to build a web application for a technology startup. It covers business aspects as well as technical aspects. It covers Linux, command line, Emacs, and Git. It also covers front-end/design topics such as wireframing, HTML, CSS, and JavaScript. It also covers deployment to Amazon Web Services (AWS). You'll build a web application using Node.js and Twitter Bootstrap.


Class #6: Stanford — Machine Learning (Coursera)

Andrew Ng teaches a very accessible and very practical course in machine learning. This course uses the Octave programming language. Topics covered include support vector machines, kernels, neural networks, clustering, dimensionality reduction, recommender systems, deep learning, and bias/variance theory. You'll apply machine learning algorithms to web search, anti-spam, computer vision, medical informatics, audio, database mining, and other areas. Prerequisites include some programming experience as well as familiarity with basic linear algebra concepts such as matrix multiplication.


Class #7: Caltech CS 1156x — Learning from Data (edX)

Dr. Abu-Mostafa of Caltech offers a rigorous machine learning class that's heavy on the mathematical/theoretical side. Abu-Mostafa's course is a good complement to Andrew Ng's course, which is more tactically focused and lighter on the math/theory side. I would suggest taking Caltech's Learning from Data after Stanford's Machine Learning course, because Ng's class offers a lot of practical programming explanation that will be helpful in the Caltech class. The Caltech class is pretty rigorous, and in order to succeed you'll need to have programming experience as well as a strong background in probability theory, linear algebra, and calculus.


Class #8: Princeton — Algorithms, Part I (Coursera)

Princeton University's Algorithms, Part I course covers the basics of algorithms and data structures. Topics covered include union-find algorithms, basic iterable datatypes, binary search trees, red-black trees, hash tables, and symbol-table applications. It's taught in Java, and expects some programming experience.


Class #9: Princeton — Algorithms, Part II (Coursera)

Princeton's Algorithms Part II class covers graph-processing algorithms such as minimum spanning tree algorithms and string processing algorithms such as regular expressions.


Class #10: Stanford — Natural Language Processing (Coursera)

Natural Language Processing covers a broad range of natural language processing topics, including word and sentence tokenization, text classification and sentiment analysis, spelling correction, information extraction, parsing, meaning extraction, and question answering. It also covers the underlying theory in probability, statistics, and machine learning. You'll also learn fundamental algorithms such as n-gram language modeling, naive bayes and maxent classifiers, Hidden Markov Models, probabalistic dependency and constituent parsing, and vector-space models of meaning.

Lauradhamilton.com is a participant in the Amazon Services LLC Associates Program, an affiliate advertising program designed to provide a means for sites to earn advertising fees by advertising and linking to amazon.com.