Description

Early computers were text-based. Data was entered as text, programs were run from the command line, etc.
Then computer systems began to use images -- but only for output. Computer graphics was invented, and
the compute gaming industry was born. We began to have special-purpose graphics computers,
and traditional computers were outfitted with window-based operating systems. Now we are entering
the next phase: images and video streams as input. Every computer and cell-phone has a digital
camera, but how do we take advantage of all this raw visual data? This course tries to begin answering
this question.

Prerequisites

In order to understand the material in this course you must be
comfortable with linear algebra, and with computational geometry
expressed through linear algebra. For example, you should be able to
give a geometric interpretation of the dot (inner) product and cross
product of two vectors, and for matrix multiplication. You should
understand homogeneous coordinates and the mathematics of perspective
projection. You should know the basic reflectance models (Lambertian,
specular, and hybrid). You should know the basics about color spaces.
This material is covered in CS410, which is a prerequisite for this
course.

In order to do the programming assignments in this course, you must
be able to write complex programs in either C++ or Python. (C, Java,
MATLAB, and other programming languages are not acceptable.) You will
be using the OpenCV library and TensorFlow as well. Note that
writing complex programs includes designing, testing and documenting
your own programs from scratch.

Textbook

There is no required textbook for this class. This does not mean
there is no reading. This means that on-line reading materials are
associated with each lecture, as indicated on the progress page. The
resources page also includes links to some generally useful on-line
computer vision resources.

Grading

Here are the formally graded elements of the course and associated
weighting:

Activity

Weight

Programming Assignments (6, maybe 7)

40 %

In Class - Worksheets/Presentations

20%

Midterm

20%

Final Exam

20%

Students in this class are expected to do more than attend; they
are expected to participate. This includes having read and understood
the reading assignments before class, answering questions in class
when called upon, and most importantly asking questions in class. The
midterm will cover material from the start of class to the date of
the midterm exam, with an emphasis on material not covered by the
programming assignments. The final exam will cover material from the
midterm exam through the end of the course (i.e. it is not
cumulative), again with an emphasis on material not covered by the
programming assignments. There will be four programming assignments:
a quick warm-up exercise due in week #2 (and worth half of what the
other three are worth), and then three larger assignments.

Exams and programming projects will be done individually and grades
assigned on an individual basis. Students not already familiar with
the CSU
Honor Pledge should review this clear and simple pledge and
always adhere to it.

Late and Makeup Policy

Midterm and Finals: Make-up
exams are only given for extraordinary circumstances (e.g., illness,
family emergency). Students must consult with the instructor as soon
as possible, preferably before the start of the exam. Course
examination dates are listed in the syllabus; be aware of them and
plan accordingly.

Projects: Always check the
assignment page for due dates. Late assignments will not be accepted
except in extraordinary circumstances (e.g. illness, family
emergency).

Important Dates

Midterm

Wednesday, March 7

Midterm 2

TBD

Final Exam

Monday, May 7th, 4:10-6:10pm

The midterm and the final exam will be held in the same classroom
as regular lectures. While no change to the midterm dates is
anticipated, the instructor reserves the right to change these dates
with a weeks notice. These exams will be administered through CANVAS.
Students may use their own laptop. Should a student not have a
suitable device then alternate arrangements will be made with the
instructor prior to the exam.

In Class Participation

All students taking this course are expected to participate
actively. This includes asking and responding to questions. Students
may be asked to present their programming assignments in class, in
which case the presentation becomes part of the graded portion of the
assignment.

Professional Conduct

All students are expected to conduct themselves professionally. We
assume you are familiar with the policies in the student
information sheet for the department. Additionally, you are
computing professionals, albeit perhaps just starting. You should be
familiar with the code of conduct for the primary professional
society, ACM. You can read the ACM Code of Conduct HERE.

We work to maintain an environment supportive of learning in the
classroom and laboratory. Towards that end, we require that you be
courteous to and respectful of your fellow participants (i.e.,
classmates, instructors, GTAs and any tutors). In particular:

Please turn off the ring on your cell phone. If you are expecting
an emergency call, sit near the door and slide out discretely to
take it.

In class use of electronic devices in general, and laptops
specifically, is permitted as a courtesy so that you may better
participate and learn. If at any time the instructor judges that an
electronic device is becoming a distraction the student may be asked
to to turn it off and put it away.

All exams and quizzes are to be done without the aid of notes of
any kind. Laptops and all other electronic devices must be shut and
put away during exams and quizzes.