Welcome to CS 3100, Data Structures and Algorithms
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 assignments.
- Learning how to choose and design good abstract data structures
and algorithms for computer programs.
- Improve programming skills.
- Develop a library of implementations of standard standard data
structures and algorithms.
- Be able to analyze the potential efficiency of an algorithm.
and Upcoming Events
Welcome to CS 3100!
Textbook is Data
Abstraction and Problem Solving with
C++(Fourth Edition), by Frank M. Carrano
edition will also be acceptable.
Instructor: Dr. Melanie Martin
Monday, Tuesday and Wednesday 3:30 pm to
Thursday 3:30 pm to 4:00 pm
and by appointment.
Best way to contact Dr. Martin:
Email firstname.lastname@example.org 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
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
To sign up, go to: http://majord.csustan.edu
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,
BASIC INFORMATION ABOUT CLASS SESSIONS:
Each class session will be some mixture of laboratory and lecture
Mainly the purpose of class sessions is twofold: to help students
readings and related material, and to help them complete the
Students are responsible for working on programming assignments outside
class time. Doing the assignments can fill up a lot of hours. To keep
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
current with everything that is happening in class.
Grading and Policies
TESTS & GRADING:
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,
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
scores on the individual tests.
Your score on the set of programming problems will be the average of
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
weight of 50% to your score on the test set, a weight of 40% to your
on the set of programming problems and a weight of 10% for
- receive a score of 60.5 or greater on the test set,
- receive a score of 60.5 or greater on the set of programming
- turn in a working solution to every one of the
MISSED EXAMS AND LATE ASSIGNMENTS:
I will give no make-up, late, or early tests.
Get started early on assignments. That way, if you run into difficulty,
can seek help in class and/or office hours in a timely fashion.
I will assess a late penalty of 10% credit per
(including holidays and weekends) on programming assignments turned in
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
the schedule, please bring this up (in class, preferably) as soon as
and not at the last minute.
If you cannot finish a programming assignment on time, please turn in
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
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
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
Academic Honesty: The work you do for this course will be
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
research. Academic honesty is expected at all times in this course. As
RESPONSIBILITY FOR YOUR OWN WORK:
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
program specifications, you may discuss programming assignments with
people, including your classmates, as much as you like. You may also
discuss the relative merits of various general approaches to designing
engineering solutions to a programming assignment.
You are permitted to use algorithms or segments of code from
You are permitted to share such material, as described in 1-3 above,
other members of this class. When you make use of
such material you must cite the source appropriately.
- any printed material available for student check-out in our
- our course text, or
- any programming textbooks to which you have access.
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
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
to clarify the meaning of a test question, if you wish. It will be up
to decide how to answer, or whether to answer at all. I will tell the
any new information that arises from such an exchange.
- You must not give or accept any other kind of help.
- You may not allow any part of a solution you compose
(make up) for an assignment to be communicated to another member of the
class or allow such material to be communicated to you.
- A corollary to the point above is that one member of the class
may not look at the program code of another member of the
class, whether on paper or on a computer screen.
Penalties: If there is compelling evidence that an assignment or
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
off and out of sight. Any use of a cell phone during class will result
of the phone until that day's class has ended or your removal from the
for that day. If you attempt to use your cell phone or leave it on
exam, you will be considered to have finished your test, and I will
your exam at that time. Exceptions may be made only if you
situation with me prior to the start of that day's class, in this case,
phone must be set to vibrate/silence.
(See Schedule of
Last day to add a
|Last day to drop a
|Last day to change grade options
| Nov. 22;
Oct 11, Nov 10, Nov 23, Nov 24, Dec 12.