CMSC 341 Data Structures Fall 2005
Section 0201 (Mon/Wed 7:10-8:25 PM )
Section 0301 (Mon/Wed
5:30- 6:45 )
both sections meet in MP012
Mr. Mitch Edelman
Announcements
- 12/30/05 grades were submitted. if you wish, send me an email and I'll reply
with your grade and scores on final and Project 5
- 12/10/05 Final Exam location for both sections is FA018
If you go to MP012, you will be in the wrong room.
- 11/22/05 I will hold a final exam review session on Monday, 12/12 (starting at
8:30 PM) and Tuesday 12/13, from 7:00 - 9:00 PM. All 341 students are welcome to attend
- 11/18/05 The third midterm (aka Final Exam) will be held on Monday, 12/19.
Times: the 5:30 section will have its exam from 6:00 - 8:00 PM
the 7:10 section will have its exam from 8:30 - 10:30 PM
- 11/1/05 BS/MS Program Presentation
On Monday, 11/7, the 7:10 section will have a visitor: Dr. Mark Olano
On Wednesday, 11/9, the 5:30 section will have a visitor, Dr. Brooke Stephens
They will be presenting information on the combined BS/MS program
- 9/7/05 Extra Power Point slides for Templates
the example for "method 2"
(using an instantiation file) to deal with "compiling" templates can be found
here. You should try to break the code in different ways
and see what errors (compiler or linker) you come up with.
Course Description
Data Structures are the paramount concern of this course. The principle objective
of the course is for you to learn to design and analyze a wide range of data
structures.
Course Content
The course covers data structures and associated algorithms. Relationships
among data structures, their utility in various situations, and factors
affecting their performance in algorithms will be considered. You will learn to
analyze the time and space demands of algorithms, how to choose data structures
appropriate to problems you will solve, and to design programs that use them
effectively.
Textbooks
Required: Data Structures and Algorithm Analysis in
C++, 2nd Edition, by Mark Alan Weiss, Addison-Wesley
Recommended:
- Your favorite C++ reference book -- here are some of mine
- The C++ Programming Language, Special Edition by Bjarne
Stroustroup
(He's the guy who invented the language)
Addison-Wesley,
2000, ISBN 0-201-70073-5
- C++ Primer, Third Edition by Stanely B. Lippman, Josee Lajoie
Addison-Wesley, 1998, ISBN 0-201-82470-1
- C++ FAQs, Second Edition by Marshall Cline, Greg Lomow, Mike
Girou
Addison-Wesley, 1999, ISBN 0-201-30983-1
- Effective C++ Second Edition by Scott Meyers
Addison-Wesley
- More Effective C++ by Scott Meyers
Addison-Wesley
- Thinking in C++ by Bruce Eckel.
This book is available in its
entirety on the web at
http://www.mindview.net/Books/TICPP/ThinkingInCPP2e.html
- Data Structures and Algorithm Analysis by Clifford Shaffer,
Prentice-Hall, 1996. This book has good coverage of data structures and
algorithm analysis in C++. It has excellent descriptions of a number of data
structures.
- Data Structures, Algorithms, and Applications in C++ by Sartaj
Sahni, McGraw-Hill, 1998. Covers some material not covered by the Heileman
text.
- Data Structures and Algorithms by Alfred Aho, John Hopcroft, and
Jeffrey Ullman, Addison-Wesley, 1983. This is one of the all-time classics,
written in Pascal.
- Fundamentals of Data Structures by Ellis Horowitz, Sartaj Sahni,
and Dinesh Mehta, 1995. Another classic. In C++.
- Abstract Data Types by Nell Dale and Henry Walker, D.C. Heath and
Company, 1996. A high-level view of data structures and algorithms, with no
programming language specified. A very worthwhile and modern text with an
alternative viewpoint.
Prerequisites
We will assume that you have mastered the material from CMSC 201, CMSC 202, and CMSC 203, including
mastery of the C++ language. We will not review material that has been covered
in the prerequisite courses. We cover some of the data structures from CMSC
202, but more extensively. A few advanced C++ topics such as templates and
exceptions will be reviewed.
Grading
Your grade for this course will be based upon 5 projects, 2
in-class exams and the final exam. The projects are worth 40% of your grade,
each project weighted equally. Each in-class exam is worth 20 percentage points;
the final is worth 20 points. Note that the due dates for the projects and the
dates of the exams are already set, that late projects will not be accepted
(q.v., the syllabus and project policy
handout). Please plan your schedules accordingly. Makeup exams will not be given.
Your final letter grade is based on the standard formula:
0 <= F < 60, 60 <= D < 70, 70 <= C < 80, 80
<= B < 90, 90 <= A <= 100
These levels may be adjusted
slightly in your favor, but grades will not be "curved" in the conventional
sense.
Your grade is given for timely work done during the semester;
incomplete grades will only be given for medical illness or other such dire
circumstances.
Attendance and Readings
You are expected to attend all lectures,
preferably in advance of the lecture. You are responsible for all material
covered in the syllabus, even if it is not in the textbook. You should keep up
with the assigned readings during the semester. Some reading material will be
distributed through the course web page. You are responsible for the material
in the readings, even if it is not covered during lecture.
You must study to do well in this course. It will not be enough to attend
lectures and do the homework. As advanced undergraduates, you will be
responsible for learning material that is not necessarily covered in lectures. A
prime learning requirement is that you contribute to class discussions and raise
questions about the course material.
A note on coding You will find that your knowledge of the materials
we cover in lecture will be enhanced by coding the data structures and experimenting
with them. If the only coding you do is the projects, you may reasonably expect
to earn a "C" for the semester. In other words, you should engage this material
in as many different ways as you can.
BlackBoard Discussion Board
A BlackBoard site has been created for this
course. This site is used primarily to support discussion boards, but
announcements are also posted there. A discussion board will be established for
each programming project. Students are encouraged to post general project
questions, answer questions posted by other students or just browse the
discussion board to find answers to project questions. Your instructors and TAs
will also be posting questions and answers. Your questions may be posted
anonymously. Other discussion boards for topics such as general C++ questions
will also be established. The course BlackBoard is accessed by logging on to
my.umbc.edu and clicking on the BlackBoard tab at the top of the page.
Contacting Me or the TAs
Please feel free to visit me or the TAs during
our office hours. If you can't make it during the regular hours, please ask for
an appointment. We will do everything we can to be available to provide help
with this course. Office hours, phone numbers and other contact
information is available on-line. If you need to contact any of the course
staff outside of lecture and office hours, email is much better than the
telephone. You should, however, observe the following etiquette:
- Do not email program code. If you want me or the TA to help you
debug your code, submit it in the usual way, and then send email about
the problem. We will look at the submitted code. Please, do NOT mail code
to me or to the TA's!
- Note that the Help Center does not offer help with code for this course.
- I receive in the order of 200 pieces of junk mail and spam a day.
Please use your real name, send mail from your UMBC email account,
and add "CS341" to the subject line - or else your mail may wind
up being filtered out.
- Include a meaningful subject line, something like "CMSC 341 Project 2
question."
Academic Integrity
Cheating in any form will not be tolerated. Instances
of cheating will be reported to the UMBC Academic Conduct Committee. These
reports are filed by the Committee and can be used for disciplinary action such
as a permanent record on your transcript. Academic honesty is absolutely
required of you. You are expected to be honest yourself and to report any cases
of dishonesty you see among other students in this class. Reports of dishonest
behavior will be kept anonymous.
Further details on honesty in doing
projects for this course are on-line at the Project
Policy link.
Students are welcome and encouraged to study together for exams, but
examinations are to be your own work -- not your neighbor's and not your notes.
All exams are closed-book, closed-notes. Only pencils (or pens) and erasers are
permitted in the exam room unless otherwise indicated. Scratch paper is provided
to you, as needed. Having any other materials in your possession during an exam
will be taken as evidence of cheating and dealt with accordingly.
Class Schedule
Class |
Date |
Topic |
Reading |
1
| Wed Aug 31
| Introduction and C++
| MAW 1
|
2
|
Wed Sep 7
| C++ and OOP
| MAW 1
|
3
| Mon Sep 12
| Asymptotic Analysis
| MAW 2
|
| Mon Sep 12 |
Project 1 Assigned |
|
4
| Wed Sep 15
| Asymptotic Analysis
| MAW 3
|
5
| Mon Sep 19
| List ADT and Implementations
| MAW 3
|
6
| Wed Sep 21
| List Implementations
| MAW 3
|
| Sun Sep 25
|
Project 1 Due at 11:59pm
|
|
7
| Mon Sep 26
| Stacks, Queue, Dequeue ADT
| MAW 3
|
8
| Wed Sep 28
| Stacks, Queue, Dequeue ADT
| MAW 3
|
9
| Mon Oct 3
| Recursion
| class notes
|
10
| Wed Oct 5
| Binary Trees
| MAW 4
|
| Wed Oct 5
|
Project 2 Assigned
|
|
11
| Mon Oct 10
|
Exam 1
| classes 1 - 10
|
12
| Wed Oct 12
| Binary Search Trees
| MAW 4
|
13
| Mon Oct 17
| Balanced Search Trees
| MAW 4
|
14
| Wed Oct 19
| Balanced Search Trees
| MAW 4
|
| Wed Oct 19
|
Project 2 Due at 11:59pm
|
|
| Thurs Oct 20
|
Project 3 Assigned
|
|
15
| Mon Oct 24
| Balanced Search Trees
| MAW 4
|
16
| Wed Oct 26
| Balanced Search Trees
| MAW 4 & 12
|
17
| Mon Oct 31
| K-D Trees
| ???
|
| Tues Nov 1
|
Project 3 Due at 11:59pm
|
|
18
| Wed Nov 2
| Priority Queues and Heaps
| MAW 6
|
19
| Mon Nov 7
| Priority Queues and Heaps
| MAW 6
|
20
| Wed Nov 9
| Disjoint Sets
| MAW 8
|
| Wed Nov 9
|
Project 4 Assigned
|
|
21
| Mon Nov 14
|
Exam 2
| Classes 11 - 20
|
22
| Wed Nov 16
| Hashing
| MAW 5
|
23
| Mon Nov 21
| Hashing
| MAW 5
|
| Tues Nov 22
|
Project 4 Due 11:59pm
|
|
24
| Wed Nov 23
| Hashing
| MAW 5
|
| Mon Nov 28
|
Project 5 Assigned
|
|
25
| Mon Nov 28
| Skip Lists
| MAW 10 + notes
|
26
| Wed Nov 30
| Skip Lists
| MAW 10 + notes
|
27
| Mon Dec 5
| B - Trees
| MAW 4 + notes
|
28
| Wed Dec 7
| B - Trees
| MAW 4 + notes
|
| Sun Dec 11
|
Project 5 Due 11:59pm
|
|
29
| Mon Dec 12
| Review
|
|
| Monday, Dec 19
|
Final Exam
early section exam is 6:00 - 8:00 PM
late section exam is 8:30 - 10:30 PM
NOTE ROOM CHANGE to FA 018
| Classes 19 - 29 |
- Dates and topics are subject to change as required by class progress
- MAW = Weiss text "Data Structures & Algorithm Analysis in C++"
Course Web Page
A few handouts will be provided in paper form at the
first class. After that, all handouts will be provided only on the web. The
course web page URL is
www.cs.umbc.edu/courses/undergraduate/341/fall05/index.shtml
Please
check the web page frequently. Any changes to the page will be mentioned in the
"Latest News" link.
Last modified on Sunday, Aug. 28, by Mitch Edelman
email: edelman@cs.umbc.edu
Back
up to Fall 2005 CMSC-341 Homepage