Computing & Software Systems 343:
Data Structures and Algorithms
Winter 2006
In this course, you will be introduced to the bulk of the basic abstract data types, algorithms, and computational models used by computer professionals. By the end of this quarter, you will be a confident C++ programmer and will be comfortable with the basics of object-oriented design and programming. You will understand how to analyze a problem and design a solution, recognizing when existing techniques and software are reusable. You will understand the tradeoffs among memory, running time, and implementation time associated with different data structures and algorithms. Topics include: trees, tables and priority queues, graphs, grammars, data abstraction, object-oriented design, OO programming, computational complexity and algorithm analysis.
Kenneth H. Rosen, Discrete Mathematics and Its Applications, Fifth Edition, McGraw Hill, 2003.
Bjarne Stroustrup, The C++ Programming Language, Third Edition, Addison-Wesley, 1997. The canonical reference. Make sure you get the third edition.
Harley Hahn, Harley Hahn’s Student Guide to UNIX, 2nd edition, McGraw-Hill, 1996. If you’re unfamiliar with Unix or Linuxand want to learn more, get a book like this.
Herbert Schildt, STL Programming from the Ground Up,Osborne/McGraw-Hill, 1999. A very good introduction to the Standard Template Library, with lots of examples. However, it is not a reference; for example, it doesn’t provide complete lists of methods for each class.
Nicolai M. Josuttis, The C++ Standard Library,Addison-Wesley, 1999. Much more of a complete reference than the Schildt book. Includes some examples, but is not intended as a tutorial.
I don’t grade on a curve. I use my judgment to determine what averages correspond to an ‘A’, ‘B’, etc. for the quarter, after the fact. Some quarters assignments, etc. turn out harder, and so the averages are lower. Other quarters, averages are higher. So, I adjust for that at the end. Decimal grades are then computed using the equivalencies in the Time Schedule, linearly interpolating between letter-grade boundaries.
I am well aware of the significance of assigning a grade below 2.0, in terms of impact on your career here at UWB. I can assure you that I examine in detail the performance in this course of each student before assigning a grade below 2.0.
What is the difference between this and grading on a curve? With the latter, the goal is to have X% ‘A’s, Y % ‘B’s, etc. My way, I would be happy to give out all ‘A’s (if they were earned). FYI, in a “typical” quarter, below 60% might be a ‘D’, 60%-75% a ‘C’, 75%-85% a ‘B’, and above 85% an ‘A’. You may use this as a rough guide; however, if you really want to know how you’re doing, please see me. I reserve the right to adjust these scores to reflect the specifics of assignments, test questions, etc. for each quarter.
This doesn’t mean that if you are presenting you must understand everything before the class — it will be perfectly legitimate to have some open questions coming in. However, as presenter you are responsible for very clearly presenting what you do understand and for structuring what you don’t understand so that we can discuss it together in class. In other words, “I don’t understand X,” is not a good way to organize a discussion. In particular, I ask that each presenter deliver a set of open-ended questions for everyone else by email to me at least a day before class.
As presenter, you are responsible for going beyond the textbook to gather additional information about the topic at hand. This could be information about major applications of these ideas, products that use the algorithms or data structures, on-line animations of algorithm operation, alternative explanations of concepts, etc. You may use a computer projector, overhead projector, or whiteboard for your presentation (or any combination of these); whichever you think is most appropriate. Please check in with me by email to let me know what you will use so I can make sure that we have everything ready for you. Requests for equipment not already in the classroom may take a day or two to arrange. My evaluation will, in general, be based on the following criteria:
As implied above, we will be cooperating with Alan Leong’s entrepreneurs workshop, CSS 490/BBUS 479, http://courses.washington.edu/uwben. His class is TTh 5:45-7:50 — right after ours. You are all welcome to visit his class. At the beginning of the quarter, we will get a list of projects proposed by students in his class that are open to us for implementation. If we like one or two of them, then our class could serve as a “prototyping lab” for them. Students from Prof. Leong’s class may visit ours from time to time.
I will be an ex officio group member, to help out where necessary and to ensure that the project scope stays reasonable for the class. I will attend all group meetings scheduled during class times. You are of course free to schedule group meetings outside of class, too, and by default I will assume that you prefer that these meetings occur away from my “watchful eyes”. Since I will be well aware of each group member’s responsibilities and performance, I will assign individual grades for project contributions.
I call the following an “example” course schedule because we may need to modify the order of topics to accommodate whatever project(s) we do. Regardless, this summarizes the topics that will be covered this quarter. The assignment list is largely fictional.
Date | Topics | Reading | Assignment |
1/3 | Course introduction; Inheritance | Weiss, Ch. 4 |
|
1/5 | Inheritance, cont’d |
| Program 1 assigned |
1/10 | Trees | Weiss, Ch. 18; Rosen, § 9.1-9.3 | Written HW 1 assigned |
1/12 | Trees, cont’d | Weiss, Ch. 18, § 13.1 | Program 1 prelim. spec. & design due |
1/17 | Trees, cont’d |
| Written HW 1 due |
1/19 | Binary Search Trees | Weiss, Ch. 19 | Program 1 due |
1/24 | BST, cont’d |
| Program 2 assigned |
1/26 | BST, cont’d |
|
|
1/31 | Hash tables | Weiss, Ch. 20 | Program 2 prelim. spec. & design due |
2/2 | Hash tables, cont’d |
|
|
2/7 | Midterm review |
| Program 2 due |
2/9 | Midterm exam |
|
|
2/14 | Priority queues | Weiss, Ch. 21 | Program 3 assigned |
2/16 | Priority queues, cont’d | Weiss, Ch. 14.2 |
|
2/21 | Graphs | Weiss, Ch. 15; Rosen, Ch. § 8.1, 8.2, 8.3 (pp. 557-9), 8.4 (pp. 567-72), 8.5, 8.6, 9.4, 9.5 | Written HW 2 assigned; Program 3 prelim. spec. & design due |
2/23 | Graphs, cont’d |
|
|
2/28 | Boolean Algebra | Rosen, § 10.1-10.3 | Program 3 due; Written HW 2 due; Written HW 3 assigned |
3/2 | Boolean Algebra, cont’d |
|
|
3/7 | Modeling Computation | Rosen, § 11.1-11.3 | Written HW 3 due |
3/9 | Modeling Computation, cont’d |
|
|
3/14 | Final exam |
|
|