Robotics for Software Engineers

CS 4501 - Spring 2021

This course is part of our ongoing effort to bridge the gap between software engineering and robotics. If you are a student and find value in the lectures and in the labs please drop us an email so that we can get an idea of the impact this effort is having and how we can improve it. If you are a faculty member interested in teaching a course like this, reach out to us as we have supplementary material and hard-earned experiences that might be helpful. Thank you! - Sebastian Elbaum.


  • Sebastian Elbaum - Instructor, selbaum at virginia
  • Trey Woodlief - Teaching Assistant, adw8dm at virginia
  • Meriel Stein - Teaching Assistant, meriel at virginia
  • Carl Hildebrandt - Leads Labs, hildebrandt.carl at virginia

This is going to be a great class but the semester is likely to be another weird one, with remote learning and covid-struggles of different types, so let’s be patient with each other, let’s be honest with each other, and let’s strive to learn as much as possible within our means. - Sebastian Elbaum

Goal and Scope

Developing software for robot systems is challenging as they must sense, actuate, and represent the physical world. Sensing the physical world is usually noisy, actuating in and on the world is often inaccurate, and the knowledge and representation of the world is incomplete and uncertain. In this class we will explore software engineering approaches to cope with those challenges. You will learn to use domain-specific abstractions, architectures, libraries, and validation approaches and tools to safely perform robot activities like motion, navigation, perception, planning, and interaction. The expectation is that this course will open up new career options in robotics for our students.

Class location and time

  • Tuesday and Thursday from 2:00PM to 3:30PM
  • Class will be online, with most lectures on Tuesdays and labs on Thursdays

Office Hours

  • Trey Woodlief: Mondays 9AM-11AM
  • Meriel Stein: Thursdays 9AM-11AM
  • Sebastian Elbaum: Friday 9AM-10AM or by email request


CS 4414 (Operating Systems) or advanced software development but with a good understanding of programming threads

Tentative Schedule

Week Topic Lab
1 Introduction Lab-1: Set up and Basic ROS
2 Distinguishing Development Features Lab-2: ROS processes, communication, and simulation environment
3 Software Machinery + Q1 Lab-3: Types and machines
4 Robot and world through sensors Lab-4: Sensor filtering and fusion
5 Perception + Q2 Lab-5: Perception though Analyzing Images
6 UVA Break Day Invited Speaker
7 Controlling your robot Lab-E: Robotics and Ethics
8 Making plans + Q3 Lab-6: Controlling and testing robots
9 Localization and navigation Lab-7: Mapping and Motion Planning
10 Transformations Lab-8: Transformations
11 Advanced Robotics + Q4 UVA Break Day
12 Project parameters Project consult
13 Project check Project consult
14 Project Presentations and Demos Taking stock

Course Policies

  • Students must fully comply with all the provisions of the University’s Honor Code. Students are expected to work independently unless instructed otherwise. Offering and accepting solutions from others is a serious offense. All suspected violations will be forwarded to the Honor Committee, and you may, at the instructor’s discretion, receive an immediate zero on that assignment and fail the course regardless of any action taken by the Honor Committee.
    • All graded labs, quizzes, and project must be pledged.
    • You can discuss labs and project, but you cannot share code.
    • Do not exchange information during online quizzes.
  • Labs can get full credit if returned within a week of the class when they were introduced. After a week, the labs get 50% credit. After two weeks the labs get 0 credit.
  • Students are responsible for all missed work. It is also the absentee’s responsibility to get all missing notes or materials.
  • If you anticipate any issues related to the format, materials, or requirements of this course, please meet with me outside of class so we can explore potential options.
  • If you are unsure if you require an accommodation or to learn more about their services, you may contact the SDAC at the number above or by visiting their website at
  • If you are struggling with violence or discrimination, I am ready to provide support and guide you towards the many resources available at the University of Virginia.
  • If you need academic accommodation for a religious observance, please submit an email request to me as far in advance as possible. Note that accommodations do not relieve you of the responsibility for completion of any part of the coursework missed as the result of a religious observance.

Grades Distribution

  • ~8 Labs: 70 points
  • 1 Project: 20 points
  • 1 Video: 2 points
  • 4 Quizzes: 8 points

Letter Grade

  • A+: [98,100], A: [93, 98), A-: [90, 93)
  • B+: [87, 90), B: [83, 87), B-: [80, 83)
  • C+: [77, 80), C-: [73, 77), C-: [70, 73)
  • D+: [67, 70), D: [63, 67), D-: [60, 63), F: [0,60)


  1. Is this course for me? This is a class for students who have no or limited experience in robotics but are interested in learning more about how we develop systems that interact with the physical world. Note that this is just the second time this course is being delivered, so the material and schedule is likely to be tweaked as the course evolves, so you need to be comfortable taking an exploratory class with us.
  2. What is this course NOT about? This class is not about AI, mechanical design, or electronic design. It is mainly about how to build software that will operate mobile robots in the physical world.
  3. What is the structure of the course? This class will include multiple development labs, a team project, and a handful of quizzes.
  4. What robot will be used? Drones, although most likely only in simulation because of COVID.