Surviving Georgia Tech OMSCS: AI for Robotics

Obi R.
7 min readJan 7, 2022

--

Tips on preparing and succeeding in Georgia Tech’s Artificial Intelligence for Robotics course

Note: This is based on the 2021 edition of the course. Nevertheless, the key mental models and challenges are unlikely to change significantly in the future. OMSCS courses have generally remained fairly stable in terms of the teaching material (based on a comparison with the OMSCS content submitted to Udacity several years ago).

Summary

  • lightweight and formulaic, if you know Python
  • good for learning basic Robotics algorithms

How the course can help you professionally

If you want to learn the key concepts of how robots navigate in an environment, this is a great starting place. However, AI for Robotics most likely won’t translate into a ton of professional skills. If you’re serious about Robotics, you should pair it with a more mature class. Try a hands-on subject, like Embedded Systems Optimization, or a hardcore theoretical course like Artificial Intelligence.

It’s also probably one of the best OMSCS courses at GaTech to grow your Python skills.

Before you sign up

Do you even need it?

As the name suggests, this is a fairly specialized course. If you’re not planning on ever having a career in Robotics, you can probably give this one a miss.

Are you fluent in Python?

You should not choose AI for Robotics if you’re not at least moderately proficient in Python, or really determined to learn this programming language.

The initial programming exercises may feel deceptively easy, but later on you’ll really need all the clarity of thought and cognitive space you can get. Having to overcome Python gotchas in parallel to that is a recipe for a stressful, frustrating semester.

Disclaimer: Python is my favourite language. But it does give you a ton of rope to hang yourself with if you’re not careful.

How do you prepare?

There isn’t really much preparation you need to do for this course.

Learning to use the debugger in Python is probably the single most useful thing you can do.

Another good idea is to spend an hour or two learning basic testing — if you can write good tests, this course becomes much, much easier.

pytest is the de-facto standard these days, and lends itself very well to this course.

For one of the projects, you might also benefit from knowing NumPy, as it will make your code much faster and allow you to get a higher mark with less effort. Plus, if you consider a career in Robotics or Machine Learning, getting a bit of NumPy practice is a great idea, professionally speaking.

The good ✅

The course has a lot going for it:

  • lecture videos by Sebastian Thrun, father of self-driving cars
  • you learn (basic versions of) algorithms used in real self-driving vehicles and robots
  • abstracted from the hardware aspect of Robotics, so you really get to focus on the algorithms
  • (that said, hardware challenges are available as part of the course)
  • friendly, no-nonsense teaching team
  • the projects give you a good intuition for what matters in designing and fine-tuning your robot’s software (e.g. finding the right value for sensor noise is extremely important).

The bad ❌

That said, AI for Robotics is not without its problems. My biggest gripe would be the starter code you are provided with as part of your coding projects. The best word I can think of to describe the code is…frumpy.

Almost all of the codebase:

  • is written to support a dead language (Python 2) — hence lots of from __future__ import … statements and other clutter
  • has no/few docstrings
  • has no type annotations
  • uses multiple nested for loops
  • contain things like from math import * 😱
  • names variables with single-letter names
  • has key code crammed into 1–2 large files with large classes
  • …and other things which would make Uncle Bob very sad.

All of the above will make your linter explode with warnings every time you start working on a project. I can honestly say I spent as much time rewriting and cleaning up the code provided as I did on actually solving the problems.

Thankfully, the teaching team seem to prepare the final project from scratch each time, and that part at least is top-notch.

Another big point of criticism is that if the course isn’t extremely difficult for you, it turns out to be… too easy. I mentioned that the projects give you good intuition for how to tune your robot earlier on, but it would have been great to have much, much more of that.

The real world is messy. Having to program and test an actual robot in a physical environment would be very beneficial and rewarding. AI for Robotics lacks that, which makes it feel like a sterile, sandboxed undergraduate course rather than a rigorous graduate class that could translate directly into professional work. (For an example of the latter check out Advanced Operating Systems).

Project tips

Homework assignments

The homework assignments are the bread and butter of this course. This is where you can test your understanding of the key concepts taught in the course. Make sure to go through them slowly and take notes on anything you don’t fully understand. That will make completing the programming projects much easier.

Programming projects

It’s rather easy to get a B in most of the programming projects in this course. Essentially, you need to take the code provided in the lectures and adapt it to the problem at hand. If you’ve done your homework assignments correctly, this should not be much of an issue. This is why I won’t be offering any project-specific tips here, and instead focus on more process-oriented tricks that can save you time.

An A requires a bit more sweat and tears. Compared to the homework assignments, the programming projects will throw small curveballs your way. Where previously you had exact motion, now you have to account for noise and measurement uncertainty. Where the homework assignment had you work in one dimension, the project will have you solve for two dimensions.

The last project is slightly different from the rest in that that you get very little starter code. So it takes considerably longer to implement.

How to be efficient

Make sure to use breakpoints a lot — it will help you inspect the type and format of the data that’s being passed in from the test cases. The starter code is pretty opinionated in the way it wants you to do things — figuring out the authors’ intentions as soon as possible is really useful.

If you are new to Python, go for PyCharm as your text editor/IDE. It will allows you to set breakpoints, run tests easily, and has a lot of useful built-in features (syntax-checking etc). If you’re like me, and can’t stand PyCharm, give Emacs a try. Steve Purcell’s Emacs config is a great place to start. I’ll post my own Python-oriented config in the future as well. I hear Visual Code Studio is also good, and Microsoft have done a tremendous job with their Python language server, so VCS might also be a good idea, once you install all the right plugins.

Do you understand the theory?

Unlike some OMSCS courses, AI4Robotics programming projects are tightly linked to the lectures.

Make sure to:

  • watch all the videos
  • ask yourself good questions as you go through the lectures.

Here are a couple of things to think about:

  • Why are Gaussians used in Robotics?
  • If a bicycle drives in a circle, is the circle traced by the front wheel the same size as the one traced by the back wheel?
  • How important is sensor noise to the various algorithms used in Robotics?
  • Why are cycles in a graph important to SLAM?

Once you have a good grasp of the basic concepts taught in the course, the rest is a simple matter of programming.

Exam tips

Understanding the mental models of this course will also be immensely useful for the mid-term and final exams.

My best advice here would be to create a ton of flashcards as you go along, and revise them every week. With that kind of preparation, the exams can be seen as the easiest part of the course.

Make sure you spend extra time understanding Simulteneous Localization and Mapping (SLAM). SLAM is explained rather muddily in the lecture videos and chances are you won’t form the right mental models after a single watching.

I will try to provide links here in the future to make some of those concepts less muddy.

If you’re looking for a computerized tool to organize your flashcards, give Anki a try. It’s mostly free (apart from the iOS app which costs around 20 GBP).

Other courses

This article is part of a series of OMSCS course reviews. If you’re interested in Human-Computer Interaction, Advanced Operating Systems or Artificial Intelligence, I’ll be submitting those in the near future.

And of course, OMSCentral is always a great source of reviews for OMSCS courses.

About The Author

I’m a Software and Data Engineer based in the UK. I like calisthenics and complaining.

Feel free to say hi on LinkedIn or Discord.

Attributions

Self-driving car — Image by Steve Jurvetson from Flickr

--

--