16-311 Introduction to Robotics
         Main         Schedule         Homework         Labs         Links

  16-311 Homework 0

16-311 Homework 0

Learning Objectives

  1. Ensure basic C proficiency.
  2. Ensure basic MATLAB proficiency.
  3. Introduce basic website creation and hosting.
  4. Indtoduce basic academic formatting.



One of the skills necessary for this class is proficiency with C. We will use a programming language called ROBOTC, which is based on C, but geared toward common educational robotics platforms like the LEGO MINDSTORMS (which will be used in Labs 3 through 10). Though 15-122 is not a prerequisite for this course, knowledge of C or the willingness to pick it up is necessary.

The following is a list of helpful C resources:

  • "The C Programming Language" by Brian Kerighan and Dennis Ritchie is a book (commonly referred to as K&R) is a great resource for learning C. Though the second edition was published in 1988, C has remained relatively standardized and this book is still relevant. There are .pdf files of this book available online.
  • This is a CMU-based C tutorial: Short C Tutorial
  • Ths is a guide for compiling in CMU clusters: Crash Course In Compiling/Debugging In The Clusters
  • This is a well-organized C tutorial from Drexel University: C Language Tutorial
  • Here is a website to download PuTTY and PSCP (Windows): PuTTTY Download Page
  • Here are two instructions for using PSCP: Using PSCP to transfer files securely and PSCP (this one is easier but more constrained).
  • MobaXterm is a GUI that would take the place of PuTTY and PSCP. It can be downloaded here: MobaXterm Download
  • For a Mac user, Xcode is the Apple web developer GUI: Xcode Download. After creating a .c file, you can use Terminal to create and run your executable (There are many tutorials available for this, including: How to use Terminal on a Mac-Macworld). After navigating to your directory with your .h file, .c file, main file and make file. You will type "make clean" to remove any previous executables, then "make" which will go to your make file and look for the instructions to compile and run your code. The sample code uses the command gcc *.c -o to compile all files in that directory and then calls the name of the executable (p1) right after this to run it.

MATLAB is a programming language and envirnment that can be extremely useful for editing images. We will be using it to manipulate and extract information from images for our Vision Unit. You do not need to be an expert in MATLAB to take this course, we feel that proficiency in most common languages will carry over to MATLAB and that you will be able to learn the imageiediting functions as you go.

MATLAB is available on Virtual Andrew and most cluster computers. You can access virtual Andrew through a web browser or through VMware Horizon client: Virtual Andrew.

All students at Carnegie Mellon can download a version of MATLAB that will work when they are on the CMU network. MATLAB Version 2018b is recommended for HW2. Some students (depending on their major) are permitted to download the standalone version. Both downloads are available from this site: CMU Software Downloads. If you have the network-dependent version, you can use it anywhere with CMU wifi or in conjunction with a VPN client like Cisco AnyConnect: CMU Cisco AnyConnect Download.


Python is one of the most common scripting languages for Robotics. For this assignment, you will be using Python 3 to create a basic program.


Websites are a convenient way to display information. Most websites use HTML (HyperText Markup Language) as their source code, as well as CSS (Cascading Style Sheets) and JavaScript for added features. In this homework, you are only required to create a basic website so you have experience in this medium.

First, you need to create the website document. You can create this using HTML with any text editor or create a document in another language (for example a Word Document) and convert it to HTML. This website provides an online editor and HTML tutorials: w3schools HTML Tutorial>.

After this, you need to put your HTML file online. CMU provides every student with webspace (CMU Personal or Course Pages). This tutorial was created by CMU students and provides good instructions for publishing your page through your CMU account: How To Publish Your Personal Website Using the Andrew File System.

Google Sites is another free method of sharing webpages that is perhaps more visual than writing and publishing HTML through your AFS space(Google Sites).

Academic Documents

Finally, this homework has a LaTeX component. LaTeX is a common program for creating academic documents including published papers and theses. LaTeX enables the user to keep an automatically updating reference list, easily caption and refer to images and create items like a table of contents more easily than a word processor like MS Word. You do not need to have experience with LaTeX before taking this course, but we feel it is a helpful still to have in academia.

To use LaTeX, we recommend using an editor/compiler or using a web-based tool. We recommend Overleaf (overleaf.com, which works very similar to Google Docs. You can edit your document from any computer with internet access and collaborate live with other people. Overleaf also has templates you can start from and great help resources. Alternatively, a nice editor is texstudio, which can be downloaded from texstudio.org.

A note on file format: a LaTeX compiler will likely create many different files while creating the finalized .pdf. If you are sharing the document with someone and you want them to be able to edit it, it is important to sent them the .tex file, as well as any images that you embed in the file.

Linear Algebra

Linear algebra refers to the study of vectors and linear functions. Linear algebra come up all the time in robotics from computer vision to manipulation. It is helpful to have a solid understanding of vectors and matrices for robotics. This homework touches on the basics of vector definitions and matrix arithmetic. Further reading can be found here: Orthogonal Matrix, Transpose and Inverse.

Homework Requirements

The Specifications for Homework are presented in the following document.

Homework 0 Handout


Last updated 01/14/2019 by Hannah Lyness
(c) 1999-2019: Howie Choset, Carnegie Mellon