2019 Syllabus

InstructorsPito Salas
ScheduleTuesday 9:00am-11:50am
LocationRobotics Lab (basement of GZang)
On-demand office Hourshttp://www.calendly.com/pitosalas/ftf
PrerequisitesCosi12b, 21a and one other elective
ExpectationsSuccess in this 4 credit hour course is based on the expectation that students will spend a total of 10-15 hours every week on it
Email contact: pitosalas@brandeis.edu
OfficeVolen 134


Robots are everywhere, working quietly behind the scenes in labs and factories, on highways and in the home and now constantly on the front page. It is a rich area of Computer Science Research and at the same time a challenging arena of Applied Computer Science and Engineering. This makes for a very attractive context for learning.

In this course you will gain an understanding of how mobile robots are designed and work, while contributing towards the long term development of the Campus Rover. We will read the seminal papers from the field, and program algorithms on actual robots! You will learn concepts like localization, navigation, SLAM, and of Arduino, ROS, and many more are surveyed and applied to a variety of projects.

In the weekly lectures we will cover fundamentals of robotics, the ROS operating system, and how to write software that runs our robots. But you cannot really learn robotics in a classroom! In the Robotics lab you will get your hands dirty and work individually or with other students, designing, implemnting and testing components of the robot. You will be expected to do learn new packages and solve your own problems and get over obstacles because of the newness of this field. Whether you choose to go deeper into robotics or not, the experiences of learning from failure, and learning how to confront major unknowns will hopfully be important and meaningful.

Learning Objectives

The purpose of this course is to improve students’ understanding of the computer science and engineering of robotics, getting exposure to some of the big ideas, algorithms and structures that come into play. Students will work in small teams and with little guidance to investigate how to address certain challenges, and be highly self-sufficient and motivated to drive projects to their conclusion.

Students will

  • ROS: Learn to program the all-important “Robot Operating System”, ROS, which is the leading real-time distributed operating system for research and industrial robotics. They will demonstrate understanding of the key concepts of ROS, nodes, topics, commands and services, concurrency, distributed operating systems, and more.

  • Robotics: Learn the software architecture and fundamental algorithms of Robotics: localization, mapping, SLAM, AMCL, frames, path planning, state management and much more.

  • Architecture: Learn how to think architecturally within the context of a fully distriuted operating system. How to create small concurrent modules that communicate with each other. How to organize desired functionality and behavior for maximum flexibility and scalability within such an environment.

  • Teams: In our small classes, there is a lively discussion among students trying to build new behaviors into the robots. Students will demonstrate effective working in teams, collaborating, sharing responsibilities, taking on both fun and less fun projects if they are required.

  • Agile: Work in a modified scrum model, using Kanban to manage stories, having standup meetings and doing demos of work every single week. They will learn and demonstrate professional and agile software entgineering processes, including writing elegant, readable, documented code, working in rapid iterations.

Course Structure

This course is relativel unstructured. There are two weekly classroom meetings where you will learn the concepts and techniques of robotics. But you cant really learn robotics in a classroom! You will be spending much more time in the Autonomous Robotics Lab working with our actual robots developing and testing and experimenting! The course has two distinct phases:

Week 1-5 - Learning and Doing with ROS

During the first 5 weeks you will what you need to know about ROS. ROS is a rich distributed operating system which is used both in research and commerce. We will learn it through reading, discussions and developing a variety of smaller Robotic aglorithms and programs

Week 6-13 - Projects

During this second part of the course all students are oriented around addingn capabilities to the “Camous Rover” robot. Using Kanban, students form and reform small teams to work on interesting stories. The stories are written by the Product Owner, and generally are the result of brainstorming with students about what they think we should do next. The teams can be from 1 to 5 students, for 1-4 weeks, depending on the project.


Grading will be based on the following:

  • ~33%: Participation: Engagement with the course, presence in classroom discussions, following up on commitments and obligations, contributing in the further design of the course with ideas and content. This will be assessed by the instructor’s personal observations.

  • ~33%: Individual work contributing to programming projects and team projects, documentation of this work in the lab notebooks, demontstrating seriousness and independence. This will be assessed by reviewing the lab notebooks, personal observation and peer and self assessments.

  • ~33%: Final Deliverables: There will be a well defined, team based, final deliverable in the form of code and documentation. This will be assessed via a rubric.


Students have to have completed Cosi21a plus one additional Cosi Elective.

Required Course Text Book
  • Programming Robots with ROS. This is an excellent book that introduces ROS from the bottom up. You should get a copy. Beware, ROS is pretty complicated. It’s real-time, distributed operating system which is installed both on the robot and on the controlling laptop (if there is one). It can be quite difficult to configure and finnicky. But it is very very powerful!
Change Policy

The instructor reserves the right to make changes to this syllabus and the associated curriculum web site if he deems it necessary. Any changes will either be announced in class or through e-mail. All students are responsible for finding out about such changes. Each student must be aware that not all assignments are listed in the syllabus. Students must use their common sense and not look for loopholes in the syllabus because, ultimately, the instructor has the final say in all matters. If you are confused on any assignment, ask the instructor for clarification.

By deciding to stay in this course, you are agreeing to all parts of this syllabus. In fairness to everyone, the syllabus must apply equally to all students without exception.

Experiential Learning

This is an experiential learning course! You will be working in teams and discovering what that’s like, and how to be effective in that kind of setting. It’s something that will definitely come up in your future work, no matter what direction you take: business, academia, non profits, government, or entrepreneurship. You can count on learning from the challenges, obstacles and successes you encounter.

You will also be asked to be very self-reliant, figuring out things on your own, having to use the web to research tools and techniques to use, sorting through the noise and finding the best solutions. Everything will not be served up on a silver platter. You can count on developing your self confidence and perseverence and hopefully come to see the value of this in your future.

Overall you will be asked to think about what you are learning from these experiences, what you could apply in the future, and how this course may influence the way you think about what you want to do next.