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 assignments.
Goals:
- 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.
Announcements
and Upcoming Events
9/6/05
|
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: mmartin@cs.csustan.edu
Office Phone:
(209) 667-3787
Web
Page:
www.cs.csustan.edu/~mmartin
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 mmartin@cs.csustan.edu 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: http://majord.csustan.edu
Enter your email address and cs3100-1 as the name of the list.
Alternately, send email to:
cs3100-1-request@pollux.csustan.edu
with the following in the message body:
subscribe
end
COURSE COVERAGE:
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.
BASIC INFORMATION ABOUT CLASS SESSIONS:
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
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,
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:
- 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
problems, and
- turn in a working solution to every one of the
programming problems.
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.
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,
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:
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
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
- any printed material available for student check-out in our
library,
- our course text, or
- 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,
- 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.
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.
|