COURSE DESCRIPTION:
CS661 is an elective graduate level course intended primarily for computer science majors, but also useful for students in other disciplines including electrical and computer engineering, mathematics and other sciences. It provides an introduction to algorithms, heuristics, data structures, and computational frameworks for problem-solving from the field of computational geometry. The course falls into the ALC (Algorithms and Complexity) group.
COURSE PREREQUISITES:
The only prerequisite for CS661 is that you be a graduate student in good standing. If you have not passed 560 or its strict equivalent then you may not be sufficiently prepared for CS661. You should have a basic understanding of the analysis of algorithms and data-structures, using such tehniques as asymptotic notation and sorting, search and balanced search trees. A passing familiarity with very elementary probability theory is also helpful. If you have questions or concerns about your background, please send an email to or stop by the office of the instructor.
COURSE CONTENT:
From the Preface of your text:
Computational geometry emerged from the field of algorithms design and analysis in the late 1970s. It has grown into a recognized discipline with its own journals, conferences and a large community of active researchers. The success of the field as a research discipline can on the one hand be explained from the beauty of the problems studied and the solutions obtained, and, on the other hand, by the many application domains--computer graphics, geographic information systems (GIS), robotics, and others--in which geometric algorithms play a fundamental role. For many geometric problems the early algorithmic solutions were either slow or difficult to understand and implement. In recent years a number of new algorithmic techniques have been developed that improved and simplified many of the previous approaches. This course focuses on these modern solutions.
The course title, "Algorithms for Spatial Reasoning", has been chosen to emphasize that the course will focus on the design, analysis, and implementation of algorithms and associated data structures for problems which have an inherent spatial or geometric component. Even though the book title and indeed the name of the field of study addressed by the course are referred to as "Computatational Geometry". It is important to distinguish that term from the study of formal systems that can be used to prove geometric facts, which would fall more squarely under the field of artificial intelligence. It is interesting to point out some of the kinds of problems that CS661 will be focused on. The most basic example is finding a convex hull--a convex polygon containing precisely a certain set of points. Many geometric algorithms build on techniques for this simple problem. Finding intersections of a set of line segments is another common problem that many applications need. For example, in a graphics rendering algorithm we would like to know as quickly as possible which lines are in front of which other lines in a set. Polygon triangulation (dividing up a polygon into triangular subpieces) is core to some famous problems such as the "Art Gallery" problem where we must determine the positions of cameras to guard an arbitrarily shaped gallery. Orthogonal range searching has many applications both in GIS and other types of information systems. Locating points, constructing so-called Voronoi diagrams, particular data structures such as interval trees and segment trees--these are all potentially the subject of our study.
The course syllabus outlines the detailed material we will cover during the semester. Students will be engaged in group as well as individual efforts, both in and out of the classroom. There will be homework assignments as well as a few programming projects, and written exams.
COURSE TEXTS:
Computational Geometry: Algorithms and Applications, 2008
Mark de Berg, Otfried Cheong, Marc van Kreveld, Mark Overmars, 3rd Ed., Springer.
-Available at SDSU Bookstore
CLASSROOM POLICIES:
Attendance
Attendance and participation are considered important parts of your learning experience in this course. Occasionally, either at the beginning of or during class, you may be asked to write a short paragraph discussing some issue or problem from the current or recent class sessions. Students aware of an immanent absence are requested to contact the instructor; arrangements may be made concerning these writing assignments, if any are to be missed.
Tardiness
Some students, due to work or other external situations, may be unable to arrive at the beginning of class or may have to leave before it has concluded. These students are requested to contact the instructor concerning the situation at the beginning of the semester. Also, unforeseen difficulties occasionally arise which force tardiness or the need to leave early. In these situations, please enter or leave the classroom quietly and respectfully. Sitting near an exit is a good idea. It is the responsibility of students in any of these situations to ask the instructor if an in-class writing has been or will be given in the current class. They will have the opportunity to turn it in appropriately as discussed with the instructor. Students who do not speak to the instructor on the day of tardiness will not be offered the opportunity to turn in these response writings.
Collaboration
On assignments not specifically identified as group-based, students are welcome to study together. Discussing algorithms, techniques, readings, etc. can be a fruitful way to learn. Students are required, however, after developing ideas together, to write solutions individually. Work that is obviously copied among a group will be considered plagiarism.
Dishonesty
The SDSU course catalog addresses cheating and plagiarism and other forms of academic misconduct. With programming assignments, similarity that qualifies as plagiarism can be more difficult to detect. The first time such an issue arises, the instructor will discuss with the concerned students the possibility that they are not clearly separating their shared work. The second time it occurs the students will be referred to the Office of Judicial Procedures. In all other cases (e.g., plagiarism on an individual paper), referral to that office will occur on the first offense. The student who engages in such behavior not only jeopardizes his position at SDSU, but interferes with his own learning, which is one important reason for being here. Please don't do it.
Cell Phones
Please show the instructor and (more impactfully) your fellow students the same respect you wish others would show at a theatre, library, etc. with their cell phones. Before entering class, turn it off or set it to silent ring! If you must answer, leave the classroom quietly before beginning your conversation.
Crashing
The final course size will be allowed to reach approximately 110 to 115 percent of its original closed size (in this case, due to seating limitations, approximately 40). The number of students allowed to add will depend, therefore, on the number of seats emptied by those who drop or are no-shows for the first week. Those who wish to add should continue to attend class from the first day on. When the number of available seats is known, those who have continued to attend will be considered for adding. If that number still exceeds the available seats, the determination will be made as a function of the following criteria, roughly in order of significance: having the required prerequisites and/or possessing sufficient background, graduate vs. undergraduate status, in some cases order-of-request (including contact with the instructor prior to the semester), and finally, if these are not sufficient, random drawing. Students who sincerely want to do the work of the course are quite likely to be able to add.
STUDENT ASSESSMENT:
Student assessment will be based on both group and individual measures. Student groups may participate in presentations and/or poster sessions for their project work. Details of assessment on group programming projects will be discussed (and posted on the web) as the course progresses, as will details for the assessment of papers and exams. Below is a breakdown that indicates how these assessments will be combined into a final course grade.
Grading is an evolving endeavor, subjective and approximate at best. Also, student performance can be subject to many influences and skill differences. Respecting this, certain heuristics will be followed. As an example, generally high performance punctuated by lower performance in one particular domain will typically be assessed in favor of the higher. As another example, scores which monotonically increase over the course of the semester will typically favor the higher side of their average. As a baseline, no student will ever receive a grade that is lower than her average as weighted below. Letter grades will be assigned to grade ranges based on the scores of the class as a whole. This will generally follow closely the familiar 10 point ranges of 90,80,70,60 for A,B,C, and D. If you have questions or concerns at any point about your performance in the course, you are strongly encouraged to visit the instructor.
Pair (or Solo) Programming Project ----------------24% Exam I ------------------------------------------- 20% Exam II ------------------------------------------ 23% Exam III ----------------------------------------- 15% Set of 6 homework assignments -------------------- 18%