"...ut in omnibus glorificetur Deus."
(...that in all things God may be glorified.)
Rule of St. Benedict (RB 57:9)

      CS 310-Programming Languages

Syllabus


Instructor: Br. Boniface Hicks, O.S.B.
Office: Physics, Room 205
Office Hours: Tuesday 8:00-9:30PM ; Thursday 1:00-2:30PM and by appointment
Email: bhicks@stvincent.edu
Phone: 724-539-9761 ext. 2367

Prerequisite: CS 111, Computing and Information Science II (or equivalent) and Calculus II (or equivalent)
Course Hours: MWF 12:30 - 1:20 PM
Course Location: Commons 101 (also in CIS Lab periodically)
Text: Computer Graphics Using Open GL (Second Edition) by F.S. Hill
Supplemental Reading: Open GL Programming Guide (3rd Edition) by Woo, Neider and Davis: This is the main reference for the Open GL libraries.
Lab Hours: The CIS lab on the ground floor of the Physics building will be available according to a schedule that will be posted outside of the lab and under the CIS Department Web Page. The lab will normally be staffed by tutors who may be able to assist you with this course.

Guiding Principles

"St. Vincent College is an educational community  rooted in the tradition of the Catholic faith, the heritage of Benedictine monasticism, and the love of values inherent in the liberal approach to life and learning." (College Bulletin, p. 5)

"It is necessary to work towards a higher synthesis of knowledge, in which alone lies the possibility of satisfying that thirst for truth which is profoundly inscribed on the heart of the human person.  Aided by the specific contributions of philosophy and theology, university scholars will be engaged in a constant effort to determine the relative place and meaning of each of the various disciplines within the context of a vision of the human person and the world that is enlightened by the Gospel, and therefore by a faith in Christ, the Logos, as the center of creation and of human history." (Ex Corde Ecclesiae, 16)

"An area that particularly interests a Catholic University is the dialogue between Christian thought and the modern sciences." (Ex Corde Ecclesiae, 45)

"And first of all, whatever good work you begin to do, beg of Him with most earnest prayer to perfect it, that He who has now deigned to count us among His children may not at any time be grieved by our evil deeds.  For we must always so serve Him with the good things He has given us,...
And so we are going to establish a school for the service of the Lord.  In founding it we hope to introduce nothing harsh or burdensome.  But if a certain strictness results from the dictates of equity for the amendment of vices or the preservation of charity, do not be at once dismayed and fly from the way of salvation, whose entrance cannot but be narrow,..." (Rule of St. Benedict, Prologue)

Course Description

Computer Graphics refers to both the applications that use and the tools that are used to develop graphic images on computers.  This is one of the most important areas of computer science, since graphic images saturate our daily experience, from the World Wide Web, to the books and magazines that we use, to television and motion picture special effects.  They are also used in practically every other discipline to one degree or another, from scientific modelling to Magnetic Resonance Imaging to digital photography.

Course Goals 
The primary goal of the course is to develop an understanding of the techniques used by the graphics programmer to produce actual images on a hardware device.  The course material examines the mathematical and algorithmic basis of graphics concepts and the implementation of these procedures in a representative interactive graphics system.  A major emphasis is placed on the structure and use of a device-independent application programmer's interface (API) to create graphical applications. 

Goals

  1. The student should gain an expanded vocabulary for discussing issues relevant to computer graphics (including both the underlying mathematics and the actual programming).
  2. The student should gain an appreciation and understanding of the hardware and software utilized in constructing computer graphics applications.
  3. The student should gain a comprehension of windows, clipping and viewports in relation to images displayed on screen.
  4. The student should gain an understanding of geometric, mathematical and algorithmic concepts necessary for programming computer graphics. 
  5. The student should gain a facility for programming using the device-independent graphics API, Open GL.
Course Organization

In general, we will follow the outline of the book, focusing on chapters 1-8, 11 and 12.  The course will cover the topics of graphics hardware and software, including tools and applications.  It also covers the vector and matrix mathematics background for doing 2D and 3D graphics.  Windowing and clipping, vectors, curves, surfaces, meshes, texture maps and camera manipulations will be covered.  Also, some aspects of event-driven programming will be covered.  A calendar is provided on the course web site that tentatively maps out the course.

Assessment
Goals will be assessed through homework problems (usually in the form of programming assignments) and exams.

Assignment Policy

According to an ancient Chinese parable, "I hear and I forget.  I see and I remember.  I do and I understand."

Since a major goal of this course is to develop the skills necessary for graphics programming, practical experience is a necessary complement to the underlying theory that will be taught in class.  The programs in this course, therefore, will be challenging and fairly complex.  They will involve building on existing programs in order to apply knowledge learned in class.  The programs will be a major tool for really learning the material in this class.  Therefore, the student should start them early, work on them diligently and ask for help from the instructor or tutors whenever necessary.  The student should begin the assignments sufficiently far in advance of the due date so that there will be time to get help.  The programs assume a familiarity and ease in object-oriented programming using C++.  The student is expected to have this facility as a pre-requisite to the course.

This is not a software engineering course.  At the same time, however programs should be done with care and should be in a form that is easy to read and understand. A software standard has been provided for this purpose.  Documenting one's code both by choosing appropriate names for variables and functions and also with explicit comments is always helpful in gaining a better understanding of how the code works.

All assignments are due at the beginning of the class period on the day stated at the time the assignment is given. No late assignments will be accepted.  However, partial credit will be given for partial solutions.  Programs must compile and execute in order to receive credit.  If your program only works for some input, then errors should be described and a description of what works should be provided to receive partial credit.

All programming assignments must include a copy of the source code stored in a file as well as a printed copy of the source code. In addition, if required by the assignment, a copy of results for specified input values is to be included.

We will use compilers and interpreters that are already installed on the machines in the Lab.  You may use another implementation of a given language or library, but only at your own risk (or with my permission).  My ultimate test (and your grade) will be determined on the basis of whether it runs in the Lab.

Grading Policies

Knowing human weakness, St. Benedict understood that in the school for the Lord's service, "...we hope to set down nothing harsh, nothing burdensome.  The good of all concerned, however, may prompt us to a little strictness in order to amend faults and safeguard love." (Prologue, 46-47)

The purpose of having examinations is to provide the professor with a method of evaluating the teaching and learning process in the course. They are not designed to put the instructor and the class in a competitive or adversarial position. They are to be used for obtaining information that will help both the student and the instructor measure progress and achievement in understanding, assimilating and mastering the content of the course.

There will be one exam during the semester and a final exam. Each of these will be cumulative and students will be responsible for all material presented up to the time the exam is given.

Exams will be of a closed-book, closed-notes nature as the material in this course is of the type that a programmer or other computing professional should know without having to repeatedly look it up.

Course Policies

Attendance is expected.  "For man and woman thus created and commissioned by God, the ordinary working day has great and wonderful significance.  People's ideas, activities and undertakings--however commonplace they may be--are used by the Creator to renew the world, to lead it to salvation, to make it a more perfect intrument of divine glory."  (statement issued by Pope John Paul II on May 27, 1989)  Even in the classes you don't want to attend or don't feel you need to attend, you can bring glory to God by fulfilling your vocation as a student and coming anyway.  To reflect the importance of attendance and to reward faithful attendance, after two unexcused absences each absence will result in a loss of 2% of your final grade.  Also, class attendance will be used in deciding borderline grades at the end of the semester. Note that +/- grades will be given in accordance with the college Bulletin.

To be excused from class a student must provide the instructor with a written excuse. Acceptable written excuses include those provided by the college health center, a doctor's office, a sports coach, and the dean of students office.  Those on a sports team are expected to provide the instructor in advance with a schedule showing what classes may have to be missed.

The grade for a missed quiz or exam is 0. Make-up exams will not be given, except in special circumstances and with the consent of the instructor. See your instructor ahead of time if you know you must miss an exam or quiz (e.g. due to sports).

Academic Honesty
It is expected that all work turned in by a student will consist solely of the efforts of that student.  Knowing how tempting it is to copy just a line or two of code when you're stuck, all precautions should be taken to avoid the temptation.  When two students are working on a project at the same time in the lab, they would be wise not to sit next to each other.  It is acceptable to share ideas orally or to point a fellow student to the relevant place in the text, but no code should ever be shared.  Similarly, projects may not be downloaded from the Web.  In some cases, it will be helpful to consult tutorials and code sources on the Web for coding a routine.  In this case, that source should be clearly documented.  If a student needs help, he should consult the instructor, another faculty member or one of the tutors.  To help students remain honest, the instructor reserves the right to ask a student to explain his code in order to receive full credit for the assignment.  All cases of plagiarism will be referred to the Academic Dean.

Be sure to read and follow the CIS Department Policies statement, available under the CIS Department Web Page. (This statement covers especially the proper use of departmental computing facilities and department-wide course policies.) In addition, read the Regulations section of the College Bulletin (which covers such things as grading and academic honesty) and the Student Handbook (especially the section on academic honesty and the section on the misuse of computers or computer networks).

Students with documented disablities should meet with the instructor at the beginning of the semester to find reasonable accomodations.


Instructor: Br. Boniface Hicks