MW 9:30-10:45 Room GY 142 (Geology)
Overview
[C|H]335 will explore how programs written in a high level language are evaluated by a processor to control the physical world. In particular, we will use C to write programs that control "Goofy Giggles" - a 3 wheeled robot with an embedded processor, an infrared (IR) remote control, an audio system, and various sensors. In the process we will touch topics covered in a number of subsequent CS classes including compilers, operating systems, computer architecture, and digital design. It's obvious that we will be skimming the surface of these topics; for example, we will examine what a compiler and its associated tools (assembler, linker) do in some detail, but not how they are implemented to perform their function. My goal is that at the end of this course every student will be able to explain, in technically accurate manner, the path from program to I/0 and will be proficient in using one representative set of tools to write programs to control a defined physical world - Goofy Giggles. The progression of experiments introduces embedded system programming, programmed I/O, IR communications, PWM motor control, A/D based sensors, interrupts, and DMA. A detailed description of the topics to be covered is available online.
Prerequisites
c212, and corequisite C241; or consent of instructor.
- Computer Science C212: Introduction to Computer Science.
- Computer Science C241: Discrete Structures for Computer Science.
Staff
Geoffrey Brown (Professor)
Professor
Office Hours: TBD
Office address: Lindley Hall 330B
Indiana University, Bloomington IN, 47405 USA
Office phone: 812-855-4207
Department fax: 812-855-4829
email
office hours M 1:30-3:00
Georgi Chunev
AI
email
office hours MW 2:30-4:00, Lindley Hall 330
Valkyrie Savage
UI
email
office hours T 11:00-12:30
Textbook
Required
ARM System Developer's Guide: Designing and Optimizing System Software.
Andrew Sloss , ARM, Los Gatos, CA
Dominic Symes , ARM, Cambridge, UK
Chris Wright , Ultimodule Inc., Sunnyvale, CA
ISBN: 1-55860-874-5, 704 pages, publication date: 2004
Imprint: MORGAN KAUFFMAN
Try searching the web for prices. You should be able
to get it for around $56
Free (ARM7TDMI Reference Manual)
Helpful ARM Assembler Notes
ARM assembly programming notes
Recommended (C Programming)
- The classic is Kernighan and Ritchie, The C Programming Language, Upper Saddle River, NJ: Prentice Hall PTR, 2nd edition (1988).
- However, this one is terser but will be a longer-lived reference (includes C99): Samuel P. Harbison, III, and Guy L. Steele, Jr. C, A Reference Manual, Fifth Edition, Upper Saddle River, NJ: Prentice Hall, Fifth Edition (2002).
Laboratory
There will be a required 50 minute laboratory session each week. You will work in teams of two students (determined by your lab instructor). After each assignment, you may adopt the code base of any other team for your next assignment, but you must cite their work. We will organize a formal way of tracking such code adoptions to give credit to those whose work influences the greatest number of other teams.
Each assignment is expected to take one week. You should use the laboratory session to start the assignment and to seek clarification from the AI. A report for the assignment will be due by midnight the night before your next laboratory session. You will also be given an oral evaluation by the AI. You must write your own report. You should turn in a paper copy of your report to your AI in lab. Electronic copies of your report and code should be submitted through vincent (see links below). You must cite any work you adapt from others.
The equipment for the laboratory can be checked out of the Swain library. Only one "goofy giggles" per team should be checked out. When switching partners, if you have two "goofy giggles" you should return one to the library.
Lectures
Monday, Wednesday 9:30-10:45 Room TBD
Attendance at lectures is required. The laboratory and lectures are tightly integrated.
Teamwork
In conversations I have had with various employers I've learned that they value teamwork skills highly.
A good partner is one who is accessible for meetings, comes prepared, and participates fully in the process. I've known "strong" students who are lousy partners and "weak" students who are excellent partners.
You may work with anybody in the class for homework, but you must make clear who you work with. Furthermore, you are responsible for turning in your own homework.
You are responsible for writing your own laboratory report -- joint reports are not permitted. I will make sure that the exams test your understanding of both the homework and the labs.
Grading
Grades are calculated as follows:
- Labs 40%
- Midterm 15%
- Final 25%
- Homework 15%
- Participation/other 5%
Participation
Participation in the class can take many forms: attendance at lectures and discussions, asking and answering questions posed in class and in lab, and prepared questions even during office hours.
Quizzes and Exams
There will be one 75-minute midterm test, and a two-hour final exam. While they are weighted 3:5, I reserve the right to tune these weights. Many questions are subjective (written paragraphs, code), and it is difficult to assure that one point on the midterm is the same value as another point on the final exam.
- Midterm: Wednesday, October 22
- Final: 8:00-10:00 a.m., Monday, December 15
Excused Absences
Late assignments will be accepted only under the conditions similar to what could justify an Incomplete. All grades become final one week after the material is returned to you. If there is a foreseeable medical, personal, or professional reason requiring you to miss a lab or a test, notify us in advance and get written agreement from the instructor.
Homework
You will be given regular assignments -- each problem may have a different due date. You are responsible for checking the course web page for assignments. Your homework problems must be submitted in class on the due date. You will not be allowed to submit homework for others and you will not be allowed late homework except for documented absences due to illness, family emergency, or other university sanctioned reasons. In addition to paper copies of your homework, any programs should be submitted through vincent (see below under links).
Academic Integrity
Read the Computer Science Department's Statement on Academic Integrity to be sure you understand the rules under which computer science courses operate.
Withdrawal
The last day to drop a course with an automatic W is Wednesday, October 29. After that date, a student may withdraw only with the permission of the Dean. This approval is normally given only for urgent reasons related to extended illness or equivalent distress.
Incomplete Grade
An Incomplete (I) final grade will be given only by prior arrangement in exceptional circumstances conforming to university and departmental policy, in which there has been some emergency late in the semester that interferes with your successful completion of the course and course work has been completed in passing fashion until the emergency.
Links
- Lab FAQ http://www.cs.indiana.edu/Facilities/hardware/h335_tools/h335_lab.html
- Vincent https://www.cs.indiana.edu/cgi-pub/c335/vincent3/student.cgi
- Course specification http://www.cs.indiana.edu/classes/c335-geobrown/h335spec.html
- A reference card for the emacs editor.
- A reference card for the vi editor.
- A tutorial on make.
- A tutorial on gdb. And a quick reference card
- The ACM Homepage
- Application to join ACM
- arm assembly programming (pdf)


