Computer Science 232
Algorithms and Data Structures
Spring 2014

MWF 8:30-9:20   
Walsh  204

Instructor: David Levine

Office: Walsh 112

Phone: 375-2598

Email: dlevine@sbu.edu

Office Hours:  M 10:30-11:30, Tu 10-11, W 3:30-4:30, Th 1-2, F 10:30-11:30 and by appointment

Course Web Page: In general, announcements, readings, assignments, and laboratory exercises for CS 232 will be given in class AND published on the course web page.  Students are expected to check that page regularly for news, and are nonetheless responsible for any assignment announced in either manner.  The course web page can be found at http://www.cs.sbu.edu/dlevine/CS232/.

Text

Catalog Description

A study of abstract data types including trees, hash tables, and graphs.  A study of the analysis of algorithms, algorithm design techniques, and the study of computational complexity and levels of intractability.  Prerequisite: CS 132 AND Math 208.  3 credits.

Course Overview and Goals

Computer Science 232 studies the mathematical structures (both algorithms and data structures) that contribute to software efficiency.  The course focuses on various well known problems and their various solutions.  From these examples, general techniques are drawn out as exemplars of more general problem solving.  Students will be expected to master both the mathematical analysis of these solution techniques and to gain experience with their implementations in programs.  A mixture of applied and theoretical homework will be assigned.

CS 232 has several goals.  At the end of this course, you should be able to:

In addition to the general goals, this course has the goal of ensuring that students are capable of writing programs entirely on their own, as opposed to as part of a paired environment.  The two multi-stage programming assignments aid in the achievement of this goal.

The course content and format directly address Objectives 1-3 of Goal #1.  It would be impossible to teach a course that was even vaguely in line with the catalog description without meeting these objectives.  The two programming assignments help to meet Objectives 1 and 3 of Goal #2.  These goals and objectives are reproduced below:

Goal 1:  Discipline Specific Learning

Objectives:

1.   Students will learn core concepts of the discipline as determined by a nationally recognized professional computer science education organization.

2.   Students will understand and analyze algorithms written in pseudo-code.

3.   Students will apply the techniques of asymptotic analysis to blocks of pseudo-code and to program fragments.

 

Goal 2:  Reasoning and Inquiry Skills

Objectives:

1.   Students will write complete programs to solve small problems typical of the field.

3.   Students will design test suites for and run debugging sessions on programs they have written as well as on programs written by others.

Classroom Etiquette

Use of cell phones or other personal electronic devices during class is rude and inconsiderate of others.  Please turn off cell phones and similar devices during classes and labs.  This policy does not apply to personal laptops or tablets which may be used for notes and lab exercises.

Attendance

As mature college students, it is expected that all class members can make reasonable decisions about attending class and what constitutes a legitimate excuse for missing class.  Roll will not be taken in class (after the roster has stabilized), but students are cautioned that there will be some material covered in class that is not in the textbook and that missing a class may result in their being inadequately prepared for the homework.

In ALL cases, if a student misses class, it is the student's responsibility (and not the instructor's) to learn about pending work and to make arrangements for the timely submission of any assignments. 
 

Services for Students with Disabilities

Students with disabilities who believe that they may need accommodations in this class are encouraged to contact the Disability Support Services Office, Doyle Room 26, at 375-2066 as soon as possible to ensure better that such accommodations are implemented in a timely fashion.  Documentation from this office is required before accommodations can be made.

Grading

The final grade will be determined by a combination of  items as determined by performance on examinations and on written assignments.  The final grade will be determined approximately as follows: 
 

Best five (of eight) quizzes25%
Final examination25%
Homework exercises (includes "minor" programs)25%
Programming projects25%

 

Quizzes

The date of the quizzes are listed on the course web page.  While there are no current plans to change these dates, it is possible that they will change.  Any changes will be announced in class and on the web page at least one week in advance.  As all students may drop three quizzes, no make-up quizzes will be given, even for "excused" absences.  Should university commitments require any student to miss more than three quizzes, accommodations will be made provided that the instructor is notified in advance.

Final Examination

The final exam is Monday May 5, at 10:35 a.m. and will be comprehensive.   

Homework

Homework exercises will be assigned regularly and will generally be exercises taken from the book.  Homework assignments will not be weighted equally; rather they will be weighted according to the complexity of the assignment, i.e. a nearly trivial assignment will be weighted less than a more substantial one.  There may be one or more "small" programming assignments given out as part of the 'regular' homework; these will be short enough that they can easily be completed in a 48-hour time block.

Programming Projects

There will be two programming projects assigned during the semester.  Each will be assigned far in advance of its due date and will consist of multiple "phases" that students may turn in as they complete them.  Each phase will receive its own grade and these grades will be summed to determine the final grade for the programming exercises.  The first exercise counts twice as much as the second.

Collaboration

Students are expected to read and abide by the department’s Academic Practices and Policies, a copy of which will be distributed with the course syllabus.  Please review it:  Ignorance of the policies and procedures is not an excuse for violating them.   Unless other instructions are explicitly stated all graded work will be subject to the policy Individual Project Without Collaboration. 

Academic dishonesty in any form will not be tolerated.  Typically the first offense will, at a minimum, result in a zero on the assignment in question.  Repeated offenses will likely result in a failing grade for the course.  Any offense deemed punishable will also be referred to the Dean of Arts and Sciences. 

Academic Honesty

Academic dishonesty is inconsistent with the moral character expected of students in a university committed to the spiritual and intellectual growth of the whole person.  It also subverts the academic process by distorting all measurements.  It is a serious matter and will be dealt with accordingly.  A list of unacceptable practices, penalties to be assigned, and procedures to be followed in prosecuting cases of alleged academic dishonesty may be found in the Student Handbook.  Further details, including specific information about computer science courses, may be found in the department’s Academic Practices and Policies booklet.

Lateness

Late work will be accepted without penalty only under very unusual circumstances.  In general, if work is received the day that it was due, but after the deadline, the penalty will be 10%.  Work received on subsequent days will be penalized at a rate of 25% per day, subject to a maximum penalty of 75%.  Work over two weeks late will not be graded at all, however.

Tentative Schedule

Basically, we will be moving through the text in its natural order.   We will skip some of the later sections of many of the chapters and will probably omit Chapter 12 in its entirety.  Specific reading assignments will be given on the class web page and announced in class.