Computer Science 014
LEGO Robot Engineering

Williams College
Winter 2007


Instructor: Jim Teresco, TCL 304, 597-4251
Electronic mail: domain:, username: terescoj
Class Web: [Link]
Meetings: Mornings 10-12, TCL 206 or TCL 312b
Office Hours: As announced and by appointment


Everything on this syllabus is subject to change. Changes will be announced in class and updated in the online version of the syllabus.

Course Objectives

In this course, students will explore the theory and practice behind the construction of autonomous mechanical robots. Working in small teams, students will construct and program robots built from LEGO construction kits, a battery powered microprocessor control board, assorted sensors and motors. Control programs will be written in a subset of the C programming language. The majority of class time will be spent in the laboratory. Students will be expected to complete appropriate structured exercises to develop basic skills in robot construction and programming. By the conclusion of the course, each team will be required to construct a robot designed to perform a pre-determined task such as obstacle avoidance, maze navigation, etc. Each team's project goals will be selected with both the interests and prior backgrounds of the team members in mind.


None, but some programming experience will be helpful.


There is no required text for this course. A number of reference texts will be available in the lab, and some assigned readings will be available as course handouts or online.


Some meetings with involve lectures in addition to labs. Students are expected to attend class and participate in discussions. Any assigned readings should be completed before coming to class.


Labs form the bulk of the work for this course. In addition to the formal class meetings, you will be expected to spend significant time on your own working in the lab. You will have 24-hour access to the lab with your Williams ID.

Lab assignments will have a programming and a construction component. Lab programming assignments will be designated as "laboratory programs." See the honor code guidelines at the end of this document for details. The final lab assignment will include a paper describing the design of your robot.

To submit each lab assignment, you will need to submit your program electronically and demonstrate the required functionality of your robot. Please submit the final paper in a portable format (PDF preferred, avoid Word documents). If in doubt about a file format, please check with me first. Keep a copy of all submissions for yourself.

Final Project

For the last part of the course, regular lab assignments will end and you will focus your efforts on a large design project, where you are to design, construct, and program a robot to perform a complex task of your choosing. The final assignment will include a demonstration of your working robot and a paper describing your design.


Winter Study course grades are assigned as H (honors), P (pass), PP (perfunctory pass), and F (failure). If your group completes the lab assignments and submits a well-written final paper, you can expect to earn a P grade. Groups with some missing or inadequate submissions can expect a PP grade. The grade of H will be reserved for especially outstanding work. If you do not complete multiple assignments, a grade of F would be warranted.

Computer Science Department Honor Code Guidelines  

The Honor Code as it applies to non-programming assignments is outlined in the Student Handbook.

For programming assignments in Computer Science courses, the honor code is interpreted in very specific ways. When a program is assigned, your instructor will identify it as a "practice," "test," "laboratory," or "team" program. The Honor Code applies differently to each with respect to collaboration or assistance from anyone other than the TAs or instructors:

Practice Programs. These are provided to help you gain an

understanding of a topic, and are not graded. Guideline: Help on these programs is unrestricted.

Test Programs. Any assignment designated as a test program is to be

treated exactly as a take-home, open-book test. You are allowed to read your textbook, class notes, and any other source approved by your instructor. You may not consult anyone other than your instructor. The instructor encourages the asking of questions, but reserves the right not to answer, just as you would expect during an exam. Guideline: Any work that is not your own is considered a violation of the honor code.

Laboratory Programs. Laboratory programs are expected to be the

work of the individual student, designed and coded by him or her alone. Help locating errors is allowed, but a student may only receive help in correcting errors of syntax; help in correcting errors of logic is strictly forbidden. Guideline: Assistance from anyone other than the TAs or instructors in the design or coding of program logic will be considered a violation of the honor code.

Team Programs. Team programs are laboratory or test programs to be

worked on in teams of two or more students. You are allowed to discuss team programs with your partners, but work with others is otherwise restricted by the appropriate rules above. Guideline: Any work that is not the work of your team is considered a violation of the honor code.

If you do not understand how the honor code applies to a particular assignment, consult your instructor.

Students should be aware of the Computer Ethics outlined in the Student Handbook. Violations (including uninvited access to private information and malicious tampering or theft of computer equipment or software) are subject to disciplinary action.

Guideline: To protect your work dispose of printouts and diskettes carefully, and avoid leaving your programs on hard disks in labs and other public storage areas.

The Department of Computer Science takes the Honor Code seriously. Violations are easy to identify and will be dealt with promptly.