Data Structures
Computer Science 362 - Fall 2009 - Ms. Katz
Tuesdays & Thursdays
10 AM - 11:45 AM
in Roddy 147 (Tuesdays) and in Roddy 136 (Thursdays) and a few times in the Linux Lab
Instructor
♦ Ms. Beth Katz
- katz@cs.millersville.edu - (http://cs.millersville.edu/~katz)
♦ Office: Roddy 139
♦ Office Hours: 8:30 AM - 10:00 AM and 12 noon - 1:00 PM Tuesday and Thursday (and by appointment)
♦ Phone: 871-2269 (office on class days) or 872-5740 (home; 8 AM to 9 PM only)
♦ Class Web Page:
http://cs.millersville.edu/~katz/cs362.html
Prerequisite
You are expected to have earned a C- or better in both CS 162 and CS 140 before taking this course.
You should be somewhat proficient in programming in Java or C++. Java background is assumed.
No C++ experience is expected. The course will use C++ and the Unix command line.
Required Textbook
Data Structures and Algorithm Analysis with C++, Third Edition,
Mark Allen Weiss, ISBN: 0-321-44146-X.
It has orange along the spine and a purple and orange cover. We have used this text for a few years.
Catalog Description and Course Goals
This course is a systematic study of data structures and their algorithms, organized around the unifying concept of data and code abstraction.
Emphasis is placed on ADT-based and object-oriented design, incremental development and testing, and comparison of data structure implementations.
At the end of this course, a successful student will be able to
♦ implement elementary data structures such as linked lists,
stacks, queues, and binary trees;
♦ apply a variety of more advanced data structures, such as hash tables,
balanced search trees, and graphs, to solve problems;
♦ perform simple algorithm complexity analyses;
♦ formulate divide-and-conquer algorithms using recursion; and
♦ describe the importance and key points of a code of ethics.
The student will also have more software development experience
and have a greater understanding of the planning required and scope of
the software development process.
Grading
Test 1 (October 6) = 20%
Test 2 (November 17) = 20%
Final exam (December 16, 2:45 - 4:45pm) = 25% (Note afternoon time. Plan ahead.)
In-class activities (pop quizzes, hands-on labs, and other activities) = 15%
Extended activities = 20%
I use a ten-point grading scale (93 = A; 90 = A-; 87 = B+; 83 = B; ...). Tests and in-class quizzes will be completed individually. Some of the in-class activities may be done in pairs or assigned groups. You must complete the many extended activities either by yourself or with your partner in pair programming. Any other collaborating is cheating.
Refer to the pair programming guidelines. On some assignments, I may require that you work alone.
Attendance
I expect you to attend class, read the text,
and keep up with the assignments.
Getting notes from a friend is not sufficient.
Tests emphasize what we have covered in class.
The in-class activities cannot be made up without prior arrangements.
Exceptions may be made at my discretion.
We anticipate health disruptions this term. Not every sniffle or cough is the flu. Follow university suggestions about isolating yourself when ill. If you are running high fever (over 100F) and are feeling wiped out, please don't come to class.
Cover coughs and sneezes. Wash your hands frequently. Use the hand sanitizers. Eat well. Try to stay healthy.
If you do miss class for illness, let me know by email, and I will email you the classnotes. I will be flexible on assignment due dates, but as you recover, I expect you to catch up. Don't abuse my flexibility. Students who attend class, do better in the course.
Tests
Tests will be in the classroom.
They will be cumulative with closed book, notes, and neighbor.
The only allowed tools are pen or pencil, blank paper, and your brain.
If you miss a test, you will receive a grade of zero for that test.
Exceptions may be made at my discretion for reasons of illness or
university excused absences.
Contact me immediately, preferably before
the exam, if you have a problem.
Academic Honesty
You may ask me questions at any time.
Copying or collaboration with anyone else on tests
is not permitted and may result in failure in the course.
Working with anyone other than your pair programming partner is also cheating.
Refer to the university policy on academic honesty for details and penalties.
This is a fundamental core course in your major. If you believe you need to cheat to get through the assignments, reconsider why you are in the course and major.
In defense of your work, protect your password, be sure your course files are not readable (including on your machine at home or dorm room), don't leave paper listings lying around, and log off when leaving the lab. Conceal your paper when taking tests. Be careful when helping other students.
Programs - Early, Late, and Faulty
There are no late programs.
A program must be delivered by the time specified for the assignment to my katz362 account.
If your program is not complete, submit what you have.
Develop your programs incrementally, and you will always have something to turn in.
I do give partial credit.
All programs must pass through the g++ compiler (using the -Wall option) on the MU CS department's Linux computers without compiler errors. Programs that do not compile have a maximum grade of 0.
A program that compiles cleanly is not necessarily correct. I deduct points for missing, incomplete, and incorrect features. Be sure your program meets the problem specification which often includes using specific data structures and algorithms. Read your programs for errors and test them with several suitable test sets. I am extremely good at breaking programs. You should try to break your program before I do.
Style Matters
Code quality is important. I deduct points for poor program style.
Write your code so that you can read and understand it while you build it.
This helps you complete the programs more quickly and accurately.
Include a short summary comment at the top including your name and the month and year of program creation. Each function should have a descriptive name and a short comment describing what it does. The code indentation should match the code's structure. Always use brackets around contained statements. Use functions extensively. Use parameters and parameter passing methods that are as restrictive as possible. Keep cohesion high and coupling low.
Contacting Me
If you have a question, don't wait to get help.
Ask questions in class.
Stop by and ask me questions in person.
I have office hours as noted and by appointment.
I am most accessible through email. I check my mail several times a day. If you have a question about your program, submit the source code as if you are turning it in and then send me email asking your question and letting me know you submitted the program. I usually answer within a few hours, but you may call me at home if you need a more immediate answer.
I expect you to check your email on cs regularly and at least once a day. Examples, answers to questions other students have asked or problems I've seen, and other helpful information will be available through email or on the course web page. Take advantage of these resources.
This is your education, and you are responsible for it.