Preliminary Syllabus:
Fall 2017 EE599-002 (AKA EE699-002)
Cameras As Computing Systems

Instructor: Professor Hank Dietz
Office: 203 Davis Marksbury Building
Home URL:
Course URL:
Course Meetings: TR 9:30-10:45 in 265 FPAT
Course Text: None; handouts, primarily distributed via the course WWW site.


Cameras as Computing Systems is essentially an embedded computer engineering course about operation, construction, control, and programming of digital cameras.

Course Content

The topics covered can be summarized as:

  1. Introduction
  2. Photographic concepts and techniques
  3. Design of cameras and lenses
  4. Basic camera algorithms (autofocus, demosaicing, etc.)
  5. Control of camera operation (bracketing, motion detection, scripting, tethering, etc.)
  6. Image data (raw formats, EXIF, JPEG, etc.)
  7. Computational processing after capture (HDR, panoramas, stereo transformations, etc.)
  8. Graduate project presentations and discussions

This course will begin with an introduction to the basic principles of photography and operation of digital cameras. No experience or expertise in photography is required as a prerequisite, although many aspects of the discussion will be motivated by explaining photographic techniques. About one third of the course will be about the basic mechanisms and processes asociated with digital cameras.

The second third of the course will focus on control of image capture. Various techniques and mechanisms will be discussed, including in-camera environments such as Android and CHDK (the Canon Hack Development Kit, which allows users to run arbitrary C code inside PowerShot cameras). Tethered control also will be discussed in detail. Each student will implement at least one program controlling camera capture and will test it using actual camera hardware.

The last third of the course will center on novel types of digital manipulations of captured image data. Emphasis will be placed on techniques that are intimately tied to specific aspects of the capture process -- this is not a course in classical image processing and is intended to have minimal overlap with Matlab-heavy Image Processing, Computer Vision, or Computational Photography courses.

The primary distinction between the graduate and undergraduate versions of the course will be the handling of the projects. Graduate student (EE 699) projects will be significantly more open-ended, involving at least one project for which each student must individually propose, write-up, code, and present their final result to the class.

A good knowledge of C programming is expected, as all the programming will use environments building on C.

Homework, Projects, Quizzes, & Exams

This course is largely about the projects, and there will be several. At least two will involve actually running code inside a camera. Both stand-alone and tethered cameras will be used. Approximately 60% of your course grade will come from the projects, and at least one of graduate student (EE699-002) projects will be somewhat more open-ended, and require a short presentation.

Each project is expected to be accompanied by a short Implementor's Notes document detailing design decisions made and any bugs or problems encountered. A documented bug will loose only half the credit the undocumented bug would loose -- even to the extreme case of getting 50% credit by simply turning in an empty project with an Implementor's Notes document saying "my project doesn't work because I never got around to doing it."

Access to cameras and computers appropriate for the project development and testing will be provided in 108 Marksbury.

Professor Dietz tries to minimize travel during the semester, but he probably will be presenting research at LCPC 2017 October 11-13, 2017 and at IEEE/ACM Supercomputing 2017, November 12-17, 2017. Arrangements are not yet final, so there may be some adjustment to the regular class meeting schedule. Any schedule changes, including changes made due to weather, are announced on the course website.

The schedule for the exams will be announced in class and at the course URL, but there are typically two exams, the second of which is generally given in the final exam timeslot. Final exams are scheduled by the office of the registrar. The Fall 2017 EE380 final is listed as 10:30AM Monday, December 11, 2017.

The University of Kentucky gives very specific conditions that would justify taking an exam at other than the scheduled time and place, and we will honor all requests complying with university guidelines. Beyond that, we will try to accomodate any request to take an exam at other than the scheduled time provided that the request is made in writing or email before the scheduled exam time. In such cases, the course staff may elect to use a different format (e.g., an oral exam) for the specially-scheduled exam.


The grading in this course will generally follow the usual scale of "A" starting at 90%, "B" at 80%, "C" at 70%, and "D" at 65%; these grade thresholds will never be increased, but may be lowered slightly as the course staff find appropriate. There will two exams, the last of which probably will be given in the final exam timeslot (also used for project presentations from grad students). The exams will be weighted roughly equally, counting for a total of approximately 40% of your course grade. The projects will count for roughly 60% or your grade. Additionally, to ensure that students do not neglect either aspect of the course work, your course grade is constrained to not be more than one letter grade above the lower of your exam or project average. Thus, a project average of 100% and a exam average of 50% might numerically average to a "B", but would yield a "D" by this rule.

Mid-term grades are intended to help you know what grade your current trajectory is likely to result in for the complete course, and mid-term grades will be posted to myUK consistent with university guidelines. Expect mid-term grades to be weighted estimates of the grade you can expect in the course overall, not necessarily using the final weightings for the exam and projects completed to that point.

You will generally have at least a week to do each project, but projects will generally be accepted until a solution is posted or presented in class. The first exam is generally graded and returned to the students and the answers reviewed. So that any possible grading errors can be consistently handled for all students, regrade requests (preferably in writing) must be made promptly and must be specific as to the reason a regrade is requested. At the option of the course staff, any work submitted for regrade may be re-evaluated in its entirety.


Students are expected to generally behave in an ethical manner, but violations will be treated as serious offenses. Altering graded exams and then submitting them for regrade is obviously unethical, but you do not need to be trying to enhance your grade in order for your behavior to be inappropriate. For example, attempts to break into computer accounts associated with this course or to falsely identify yourself are serious ethical violations even if there was no intent to "cheat" per se.

There are lots of study materials for this course, including old exams, widely available; using them as study aids is perfectly acceptable, but be warned that an apparent reuse of an old question usually has the question slightly reworded so that repeating the old answer will get no credit. Although students are encouraged to discuss course material with one another, everything you submit must be entirely your own original work. Similarly, for in-class exams that specify no textbooks, no calculators, etc., use of the banned resources is a serious offense.

University of Kentucky guidelines do not treat ethics violations as minor infractions. Violation of the policy can result in all involved students failing the course; more severe penalties also may be applied. Contact Professor Dietz beforehand if you have any doubts about how this policy might apply.

Cameras As Computing Systems.