Autonomous Robotics slides |

Syllabus for Cosi119a

Learning Objectives

This course is a pragmatic introduction to autonomous robotics. Our goal is to introduce students to the “big questions” that need to be answered in order to build autonomous robots. Questions such as “How do I know where I am?” and “How do I decide what to do?” We will take a software engineering approach, always focusing on how to turn the concepts into actual robot behaviors in the real world.

InstructorsPito Salas
ClassroomAbelson-Bass: 131
Prerequisites Cosi21a and one programming intensive 100 level Cosi course, or permission of instructor
Lecture Tue + Thu: 3:55 PM - 5:15 PM
Lab 1 Fri: 9:00 AM - 11:00 AM
Lab 2 Fri: 2:20 PM - 4:20 PM
ExpectationsSuccess in this 4 credit hour course is based on the expectation that students will invest a total of 12-15 hours every week on course work and meetings.
Email contact
Reserve time with Pito
Slack Channel


Welcome from Professor Salas

Welcome to Cosi119a - Autonomous Robotics. Robots are everywhere these daysm and they impact life in almost every dimension, professional and personal, local, national and global. As a Computer Scientist, it is so important to have understanding of how robots can be designed and built to do all the different things that they do. What is especially fun and challenging with robotics is that spans many Computer Science sub-disciplines and also some adjacent fields. It is hard to define or reach consensus on where the boundaries are, does it include AI? Does it include Computer Vision?

As in all my classes, I am trying to share with you not just the theory but what you will need to apply the theory in the real world. I am unabashed in wanting to prepare you for a future career in computation - broadly defined. Most of you are here not because you want to work in Robotics, but because you want a challenging advanced course in computation. Whatever you end up in the rich field of computing, I am confident that your experience in this course add to your toolkit and your success.

Learning Objectives

This course is a pragmatic introduction to autonomous robotics. Our goal is to introduce students to the “big questions” that need to be answered in order to build autonomous robots. Questions such as “How do I know where I am?” and “How do I decide what to do?” We will take a software engineering approach, always focusing on how to turn the concepts into actual robot behaviors in the real world.

The concepts and skills that I hope you acquire by the end of the course.

Localization Basic structure of a ros app
Coordinate Systems publish and subscribe
Real-time and concurrent algorithm structure cmd_vel for motion
Forward and inverse kinematics odom for odometry
Principles of Computer Vision Run code in Simulation
LIDAR data formats and /scan topic
PID to manage the distances from the wall
States of the algorithm
highly concurrent programming
Image topics
Working with image data
Basic opencv for line detection
Fiducial detection
Using TFs for detection of motion
Maze solving with left hand rule


The final grade in this course will reflect my assessment of your performance in the course. This includes your participation; your mastery of the key learning objectives; your demonstration this both in written form and in code (if applicable); your application of what you’ve learned to working on a team; building an interesting product; and communicating what you achieved at the end of the semester.

Individual assignments are scored and weighted (see below), and used to determine class rank which in turn is used to determine your grade. Note that you will not get a numeric “final score”, just a final grade. I will follow the guidelines from the University Bulletin:

  • A -> High Distinction
  • B -> Distinction
  • C -> Satisfactory
  • D -> Passing, but Unsatisfactory


Grading will be based on the following:

  • Participation: Attendance to lectures and lab. Engagement with the course, participation in class and lab discussions, responding to questions. Documenting in the Lab Notebook as requested or required. Submission of “participation” assignments. This will be assessed by the instructor’s and teaching assistants’ personal observations combined with grading of specific participation assignments. (~15%)

  • Programming Assignments: During the semester there will be 6 separate major programming assignments. They will have individual rubrics and have different weights. (~50%)

  • Final exam or project: Based on the makeup and mood of the class there will be a final exam or project allowing students to demonstrate their overall mastery of the material. (~35%)

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.

Lab Use Rules and Policies

Lab Time: As you know, the lab is a precious resource that we all work hard to make maximally useful to everyone. I know that you need lab time to complete your assignments. We can’t have the lab open 24x7 for obvious reasons. But we have a a total of 7 people who can all open the lab up for you if you coordinate your schedules. Here are the lab assistants who are not TAs but they have been trained on the safety protocols for the lab: Jeremy Huey, Ken Kirio, Benjamin Blinder, Karen Mai

In addition our TAs Veronika Belkina Adam Ring are also often in the lab working on their own projects or for office hours.

Why do I bring all this up? I want you to remember that it is your own responsibility to get lab time. A half hearted slack to the world asking if anyone will be around in the next few days won’t have any effect. You need to specifically and proactively arrange the time. “I couldn’t get lab time” will not be an acceptable or appropriate explanation for requested extension or a regrade on your final project. Absolutely not. have asked several times whether people are able to get the lab time that they need. No one has said they have trouble accessing the lab. If that changes, I need to hear about it.

In the last month of the semster, there is very little homework. That is to allow you to use the 10-15 hours per student per week on your projects. Expectations given this much time and multiple teammates are high. I know it’s hard to work independently when I don’t give you specific small deliverables. But that’s the real world. You have to motivate yourself and your teammates to invest the time to get the result. You will be graded accordingly.


Students have to have completed Cosi 21a plus one programming intensive 100 level course, or receive permission from the instructor.

Academic Integrity

Every member of the University community is expected to maintain the highest standards of academic integrity. A student shall not submit work that is falsified or is not the result of the student’s own effort.

Infringement of academic honesty by a student subjects that student to serious penalties, which may include failure on the assignment, failure in the course, suspension from the University or other sanctions (see section 20 of R&R). Please consult Brandeis University Rights and Responsibilities for all policies and procedures related to academic integrity.

You are expected to be familiar with, and to follow, the University’s policies on academic integrity. You are expected to be honest in all of your academic work. Please consult Brandeis University Rights and Responsibilities for all policies and procedures related to academic integrity. Allegations of alleged academic dishonesty will be forwarded to Student Rights and Community Standards. Sanctions for academic dishonesty can include failing grades and/or suspension from the university.

A student who is in doubt regarding standards of academic honesty as they apply to a specific course or assignment should consult the faculty member responsible for that course or assignment before submitting the work. Allegations of alleged academic dishonesty will be forwarded to the Department of Student Rights and Community Standards.

Artificial Intelligence Tools

note: This includes any AI tools but especially so called Large Language Model Chat tools like ChatGpt and others.

I believe that these tools have become essential part of the toolkit for any Robotics Engineer (and any Developer, Software Engineer or Computer Scientist) In fact I will go as far as to say that without developing skills using the tools you are working with one hand tied behind your back and putting yourself at an unacceptable competitive disadvantage.


Attendance is required for in-person classes such as this one. We monitor it and regular unexcused absences will definitely affect your grade.

However if you have a reason why you cannot participate in person, you are welcome to ask to be excused. We will listen to all reasonable requests.

Please email your lead TA to ask for an excused absence.

Class Modality

Formally. this class is in-person. This means that it is open only to students living on, or commuting to, campus. There are two lectures per week that require in person attendance, as always. Unless officially excused you are required to be present in person.

However, classes will be recorded and live streamed. For students to watch a live stream of an Echo360 recording, they would simply click on the Echo360 link during the time the class is live and they can view live instead of having to wait until the recording is available. All homeworks will be assigned online. You are responsible for all the assigned homework, from the first day of class, whether you are in-class or not, unless excused.

All that said, I will make every reasonable effort to assist and accommodate whatever comes up and whatever request you may have.


Brandeis seeks to create a learning environment that is welcoming and inclusive of all students, and I want to support you in your learning. If you think you may require disability accommodations, you will need to work with Student Accessibility Support (SAS). You can contact them at 781-736-3470, email them at, or visit the Student Accessibility Support home page. You can find helpful student FAQs and other resources on the SAS website, including guidance on how to know whether you might be eligible for support from SAS.

If you already have an accommodation letter from SAS, please provide me with a copy as soon as you can so that I can ensure effective implementation of accommodations for this class. In order to coordinate exam accommodations, ideally you should provide the accommodation letter at least 48 hours before an exam.