California State University Stanislaus

CS 3100: Data Structures and Algorithms

Fall 2006

MWF 11:15 am - 12:13 am, P 113,  Dr. Melanie Martin

[Basic Information]         [Announcements]         [Calendar/Assignments]               

Welcome to CS 3100, Data Structures and Algorithms

Course Description

Fundamental concepts and abstraction of data structures. The design and analysis of algorithms involving such data structures as arrays, stacks, queues, lists, trees, strings, graphs, and files. Techniques for estimating the time and memory requirements of computer programs. Several large programming assign­ments.


Announcements and Upcoming Events


Welcome to CS 3100!

Basic Information

Textbook is Data Abstraction and Problem Solving with C++(Fourth Edition), by Frank M. Carrano
            The 5th edition will also be acceptable. 


Instructor: Dr. Melanie Martin                                  Office: Demergasso-Bava Hall 276

Email:                               Office Phone: (209) 667-3787

Web Page:

Office Hours: 

Monday, Tuesday and Wednesday 3:30 pm to 5:00 pm
Thursday 3:30 pm to 4:00 pm
and by appointment.

Best way to contact Dr. Martin:  Email  Please put "CS3100" in the subject line of the email.

Prerequisite: Passing grade in CS 2500 (Computer Programming II) or equivalent.

Warning: I reserve the right to make changes to the syllabus at any time during the term by announcing them in class and on my web page.

Course Email list: There is an email list set up for this course. Please join it at your earliest convenience, since class announcements and discussion may take place on the list.
To sign up, go to:
Enter your email address and cs3100-1 as the name of the list.
Alternately, send email to:
with the following in the message body:


We will cover most of chapters 5, 9, 8, 11, 12, 13 and portions of 10 as necessary: recursion, algorithm efficiency and sorting, advanced C++ topics, tables and priority queues, advanced implementation of tables, and graphs.


Each class session will be some mixture of laboratory and lecture activities. Mainly the purpose of class sessions is twofold: to help students absorb the readings and related material, and to help them complete the programming assignments.

Students are responsible for working on programming assignments outside of class time. Doing the assignments can fill up a lot of hours. To keep the pace, you will need to "work smart." In any case, expect to spend up to ten hours per week on this class, in addition to class time.

My expectation is that everyone will attend all the class sessions and keep current with everything that is happening in class. 

Grading and Policies


Your grade will be based on two main components: tests and programs. In addition, 10% of your course grade will be for participation. This component will include attendance, and participation in discussions, and presentations.

There will be a set of five tests and a set of four or five programming problems (possibly including written exercises).

Your score on the set of tests will be the average of your four best scores on the individual tests.

Your score on the set of programming problems will be the average of your scores on all the individual programs.

To pass the course you must: If you meet the conditions above I will compute your course grade by giving a weight of 50% to your score on the test set, a weight of 40% to your score on the set of programming problems and a weight of 10% for participation.


I will give no make-up, late, or early tests.

Get started early on assignments. That way, if you run into difficulty, you can seek help in class and/or office hours in a timely fashion.

I will assess a late penalty of 10% credit per calendar day (including holidays and weekends) on programming assignments turned in between one and five days late. I will not accept programming assignments late more than 5 days.

We can have class discussions about test dates and program due dates. I may be willing to change some of these dates. If you want a change in the schedule, please bring this up (in class, preferably) as soon as possible, and not at the last minute.

If you cannot finish a programming assignment on time, please turn in whatever you have done. It may be possible to get partial credit on an unfinished program, depending on the quality of the work and the circumstances. If you are having difficulty on a program it is crucial to get help as soon as possible and to maintain communication about your progress.

I'm sorry but if you fail to turn in the final version of just one program by the fifth day after the due date, you fail CS 3100. You will not be allowed to continue in the class. I will not make exceptions. Final grades will be based on projects and assignments, a term project and exams. A plus and minus grading scale will be used to assign final grades.

Academic Honesty: The work you do for this course will be your own, unless otherwise specified. You are not to submit other people's work and represent it as your own. I consider academic honesty to be at the core of the University's activities in education and research. Academic honesty is expected at all times in this course. As further clarification:


Sometimes it can be difficult for students to figure out the difference between 'cheating' and 'working smart.' Here is some guidance:

Programming Assignments: When your purpose is to clarify the meaning of program specifications, you may discuss programming assignments with other people, including your classmates, as much as you like. You may also freely discuss the relative merits of various general approaches to designing and engineering solutions to a programming assignment.

You are permitted to use algorithms or segments of code from

  1. any printed material available for student check-out in our library,
  2. our course text, or
  3. any programming textbooks to which you have access.
You are permitted to share such material, as described in 1-3 above, with other members of this class. When you make use of such material you must cite the source appropriately.

You may ask me for help and hints on assignments. I prefer that you ask questions in class, so that everyone has a chance to benefit from the discussion.

On the other hand, Tests: You must write your tests with no discussion or help from anyone. The one exception is that you are allowed to come forward and ask me to clarify the meaning of a test question, if you wish. It will be up to me to decide how to answer, or whether to answer at all. I will tell the class any new information that arises from such an exchange.

Penalties: If there is compelling evidence that an assignment or test was not done according to the above criteria, I will withhold credit.

(Portions of the above are borrowed from Dr. John Sarraille's CS 3100 course description, with permission.)

Cell Phone Policy:
During class time, your cell phone is to be turned off and out of sight. Any use of a cell phone during class will result in confiscation of the phone until that day's class has ended or your removal from the class for that day. If you attempt to use your cell phone or leave it on during an exam, you will be considered to have finished your test, and I will collect your exam at that time.  Exceptions may be made only if you discuss your situation with me prior to the start of that day's class, in this case, your cell phone must be set to vibrate/silence.

Important dates:

(See Schedule of Courses or Academic Calendar)

Last day to add a class:                     

Sept 12;

Last day to drop a class:

Oct 3;

Last day to change grade options (CR/NC): 
Nov. 22;

No classes:

Oct 11, Nov 10, Nov 23, Nov 24, Dec 12.