San José State University
College of Science / Department of Computer Science
CS-161, Software Project, Section 1, Spring 2016

Course and Contact Information

Instructor:  Robert Bruce
Office Location:  Duncan Hall, DH-282
Telephone: 
Email: 
Office Hours:  Mondays and Wednesdays 3pm-4pm, or by appointment
Class Days/Time:  Monday and Wednesday, 4:30pm-5:45pm
Classroom:  Duncan Hall, DH-450
Prerequisites:  CS 160 (with a grade of "C-" or better in each) or instructor consent.

Course Description

A substantial project based on material from an advanced area of computer science. Includes lectures on the project topic and on the testing and maintenance of software systems. At least 50% of the course grade to be based on the project.

Learning Outcomes

Upon successful completion of this course, students will be able to:

  • SLO 1 Design a scalable, relational database schema to support a computer vision face detection pipeline.
  • SLO 2 Apply the Postgres C application programming interface in software applications.
  • SLO 3 Use Haar cascades from the OpenCV library to locate facial features.
  • SLO 4 Use the Active Shape Modelling (ASM) algorithm from STASM to locate facial features.
  • SLO 5 Use Delaunay triangulation from the OpenCV library to create a face mesh.
  • SLO 6 Use the FFMPEG library to convert video into a series of still images.
  • SLO 7 Use the FFMPEG library to extract video metadata information (frames per second, number of frames, etc.).
  • SLO 8 Use named pipes, fork(), and exec() to implement inter-process communication in the face detection pipeline.

Required Texts/Readings

Textbook

Computer Vision: Algorithms and Applications by Richard Szeliski. This book is available electronically from the author's website at http://szeliski.org/Book/. This book is also available for purchase through online book retailers.

Other Readings

PostgreSQL: Up and Running by Regina Obe and Leo Hsu. This book is available electronically from the SJSU King Library at http://libaccess.sjlibrary.org/login?url=http://proquest.safaribooksonline.com/?uiCode=Incommon-member@co.calstate.edu&xmlId=9781449373184. This book is also available electronically from San Jose Public Library at http://0-proquest.safaribooksonline.com.catalog.sjlibrary.org/?uiCode=califa&xmlId=9781449373184

Learning OpenCV: Computer Vision with the OpenCV Library by Gary Bradski and Adrian Kaehler. This book is available electronically from the SJSU King Library at http://sjsu.eblib.com/patron/FullRecord.aspx?p=443167

Advanced programming in the UNIX environment by W. Richard Stevens and Stephen A. Rago. This book is available electronically from the SJSU King Library at http://libaccess.sjlibrary.org/login?url=http://proquest.safaribooksonline.com/?uiCode=&xmlId=9780321638014. This book is also available electronically from San Jose Public Library at http://0-proquest.safaribooksonline.com.catalog.sjlibrary.org/?uiCode=califa&xmlId=9780321638014

Active Shape Models - Their Training and Application by T. F. Cootes, D. Cooper, C. J. Taylor, and J. Graham. This article is available electronically from the University of Manchester website at http://personalpages.manchester.ac.uk/staff/timothy.f.cootes/Papers/cootes_cviu95.pdf

Active Shape Models with SIFT Descriptors and MARS by S. Milborrow and F. Nicolls. This article is available electronically from the University of Cape Town website at http://www.dip.ee.uct.ac.za/~nicolls/publish/sm14-visapp.pdf

Accurate eye centre localisation by means of gradients by Fabian Timm and Erhardt Barth. This article is available electronically from the Lakehead University website at https://cjee.lakeheadu.ca/public/journals/22/TiBa11b.pdf

Rapid object detection using a boosted cascade of simple features by Paul Viola and Michael Jones. This article is available electronically from Mitsubishi Electric Research Laboratories website at http://www.merl.com/publications/docs/TR2004-043.pdf

Other equipment / material requirements

You will be provided with a 120GB solid state drive with a USB3.1 interface. This drive has been pre-configured with Linux Mint in a graphical X-windows environment along with a host of GNU development and programming utilities, a Postres database server, the OpenCV library, STASM library, and FFMPEG library. This drive was specifically created for this class with all the tools necessary to create a computer vision pipeline in either C or C++. You are expected to use this drive during lab times. This course has no service-learning components.

Course Requirements and Assignments

SJSU classes are designed such that in order to be successful, it is expected that students will spend a minimum of forty-five hours for each unit of credit (normally three hours per unit per week), including preparing for class, participating in course activities, completing assignments, and so on. More details about student workload can be found in University Policy S12-3 at http://www.sjsu.edu/senate/docs/S12-3.pdf.

There are eight programming assignments in this course. The programming assignments are designed as building blocks which lead to a culminating final project: a computer vision face detection system. Detailed instructions and specifications for each programming assignment will be posted to my SJSU faculty webpages at http://www.cs.sjsu.edu/~bruce/ with adequate time for students to complete each assignment by the assignment deadline. Students are strongly encouraged to ask the instructor for clarification on each programming assignment specification.

Note that University policy F69-24 at http://www.sjsu.edu/senate/docs/F69-24.pdf states that "Students should attend all meetings of their classes, not only because they are responsible for material discussed therein, but because active participation is frequently essential to insure maximum benefit for all members of the class. Attendance per se shall not be used as a criterion for grading."

Grading Policy

Incomplete assignments

Points will be deducted for incomplete or partially working solutions.

Late assignments

Programming assignments submitted after their specified due date will be considered late and subject to minimally 50% loss in points (additional points will be deducted for incomplete projects as noted above).

Makeup Exams

Exams must be your own work. Makeup exams will only be given in extraordinary circumstances with instructor approval; instructor MUST be notified in advance.

Grade breakdown

Assignment or Exam Point value
Assignment 1: Database schema 10 points
Assignment 2: Extract still images from video 10 points
Assignment 3: Determine bounding boxes 10 points
Assignment 4: Draw bounding boxes 10 points
Assignment 5: Track pupils 10 points
Assignment 6: Draw pupil crosshairs 10 points
Assignment 7: Determine facial landmarks 10 points
Final assignment: Draw face mesh 10 points
Midterm Exam 10 points
Final Exam 10 points

TOTAL: 100 possible points

Grading Scale:

Percent range Grade
97% to 100% inclusive A+
93% to 96% inclusive A
90% to 92% inclusive A-
87% to 89% inclusive B+
83% to 86% inclusive B
80% to 82% inclusive B-
77% to 79% inclusive C+
73% to 76% inclusive C
70% to 72% inclusive C-
67% to 69% inclusive D+
63% to 66% inclusive D
60% to 62% inclusive D-
Below 60% F

Note that "All students have the right, within a reasonable time, to know their academic scores, to review their grade-dependent work, and to be provided with explanations for the determination of their course grades." See University Policy F13-1 at http://www.sjsu.edu/senate/docs/F13-1.pdf for more details.

Classroom Protocol

Regular class attendance is highly recommended. Students are responsible for knowing all materials covered through in-class lectures and assigned readings. Please be mindful of fellow students and the instructor by not talking on mobile phones during instruction. Students are expected to leave the class quietly in the event they must use their mobile phones.

University Policies

General Expectations, Rights and Responsibilities of the Student

As members of the academic community, students accept both the rights and responsibilities incumbent upon all members of the institution. Students are encouraged to familiarize themselves with SJSU's policies and practices pertaining to the procedures to follow if and when questions or concerns about a class arises. See University Policy S90-5 at http://www.sjsu.edu/senate/docs/S90-5.pdf. More detailed information on a variety of related topics is available in the SJSU catalog, at http://info.sjsu.edu/web-dbgen/narr/catalog/rec-12234.12506.html. In general, it is recommended that students begin by seeking clarification or discussing concerns with their instructor. If such conversation is not possible, or if it does not serve to address the issue, it is recommended that the student contact the Department Chair as a next step.

Dropping and Adding

Students are responsible for understanding the policies and procedures about add/drop, grade forgiveness, etc. Refer to the current semester's Catalog Policies section at http://info.sjsu.edu/static/catalog/policies.html. Add/drop deadlines can be found on the current academic year calendars document on the Academic Calendars webpage at http://www.sjsu.edu/provost/services/academic_calendars/. The Late Drop Policy is available at http://www.sjsu.edu/aars/policies/latedrops/policy/. Students should be aware of the current deadlines and penalties for dropping classes.

Information about the latest changes and news is available at the Advising Hub at http://www.sjsu.edu/advising/.

Consent for Recording of Class and Public Sharing of Instructor Material

University Policy S12-7, http://www.sjsu.edu/senate/docs/S12-7.pdf, requires students to obtain instructor's permission to record the course and the following items to be included in the syllabus:

"Common courtesy and professional behavior dictate that you notify someone when you are recording him/her. You must obtain the instructor's permission to make audio or video recordings in this class. Such permission allows the recordings to be used for your private, study purposes only. The recordings are the intellectual property of the instructor; you have not been given any rights to reproduce or distribute the material."

It is suggested that the greensheet include the instructor's process for granting permission, whether in writing or orally and whether for the whole semester or on a class by class basis.

In classes where active participation of students or guests may be on the recording, permission of those students or guests should be obtained as well.

"Course material developed by the instructor is the intellectual property of the instructor and cannot be shared publicly without his/her approval. You may not publicly share or upload instructor generated material for this course such as exam questions, lecture notes, or homework solutions without instructor consent."

Academic integrity

Your commitment, as a student, to learning is evidenced by your enrollment at San Jose State University. The University Academic Integrity Policy S07-2 at http://www.sjsu.edu/senate/docs/S07-2.pdf requires you to be honest in all your academic course work. Faculty members are required to report all infractions to the office of Student Conduct and Ethical Development. The Student Conduct and Ethical Development website is available at http://www.sjsu.edu/studentconduct/.

Campus Policy in Compliance with the American Disabilities Act

If you need course adaptations or accommodations because of a disability, or if you need to make special arrangements in case the building must be evacuated, please make an appointment with your instructor as soon as possible, or see the instructor during office hours. Presidential Directive 97-03 at http://www.sjsu.edu/president/docs/directives/PD_1997-03.pdf requires that students with disabilities requesting accommodations must register with the Accessible Education Center (AEC) at http://www.sjsu.edu/aec to establish a record of their disability.

CS-161 / Software Project, Spring 2016, Course Schedule

Course Schedule

Week Date Topics, Readings, Assignments, Deadlines
1 Monday,
February 1
Lecture: Project overview
Readings: none
1 Wednesday,
February 3
Lecture: Postgres RDBMS (Relational Database Management System)
Readings: none
2 Monday,
February 8
Lecture: Programming the Postgres C API (Application Programmer Interface)
Readings: none
2 Wednesday,
February 10
Lecture: FFMPEG library and systems programming tools
Readings: none
DUE: Assignment 1 (database schema)
3 Monday,
February 15
Lab: no lecture today
Readings: none
3 Wednesday,
February 17
Lab: no lecture today
Readings: none
4 Monday,
February 22
Lecture: OpenCV Haar Cascades
Read: Rapid object detection using a boosted cascade of simple features
Read: Computer Vision: Algorithms and Applications (pp. 575-585)
DUE: Assignment 2 (extract still images from video)
4 Wednesday,
February 24
Lab: no lecture today
Readings: none
5 Monday,
February 29
Lab: no lecture today
Readings: none
5 Wednesday,
March 2
Lecture: Drawing with OpenCV
Readings: none
DUE: Assignment 3 (determine bounding boxes)
6 Monday,
March 7
Lab: no lecture today
Readings: none
6 Wednesday,
March 9
Lab: no lecture today
Readings: none
7 Monday,
March 14
Lecture: Eye pupil tracking
Read: Accurate eye centre localisation by means of gradients
DUE: Assignment 4 (draw bounding boxes)
7 Wednesday,
March 16
Lab: no lecture today
Readings: none
8 Monday,
March 21
Midterm exam review
Readings: none
Note: unused remaining class time will be devoted to lab programming
8 Wednesday,
March 23
MIDTERM EXAM
  Monday,
March 28
SPRING RECESS (no class meeting)
  Wednesday,
March 30
SPRING RECESS (no class meeting)
9 Monday,
April 4
Lab: no lecture today
Readings: none
9 Wednesday,
April 6
Lab: no lecture today
Readings: none
10 Monday,
April 11
Lecture: STASM (Steve's Active Shape Modelling)
Read: Active Shape Models - Their Training and Application
Read: Active Shape Models with SIFT Descriptors and MARS
DUE: Assignment 5 (track pupils)
10 Wednesday,
April 13
Lab: no lecture today
Readings: none
11 Monday,
April 18
Lab: no lecture today
Readings: none
11 Wednesday,
April 20
Lecture: Delaunay triangles
Readings: none
DUE: Assignment 6 (draw pupil crosshairs)
12 Monday,
April 25
Lab: no lecture today
Readings: none
12 Wednesday,
April 27
Lab: no lecture today
Readings: none
13 Monday,
May 2
Lab: no lecture today
Readings: none
DUE: Assignment 7 (determine facial landmarks)
13 Wednesday,
May 4
Lab: no lecture today
Readings: none
14 Monday,
May 9
Lab: no lecture today
Readings: none
14 Wednesday,
May 11
Lab: no lecture today
Readings: none
15 Monday,
May 16
Final Exam Review
Note: unused remaining class time will be devoted to lab programming
DUE: Final Assignment (draw face mesh)
FINAL EXAM Thursday,
May 19
FINAL EXAM at 2:45PM