Phone: No need to call me
Course Webpage:
Office Hours:

Do not email me. You have a discussion board for knowledge and administrative questions, and you see me weekly. If you miss class 'cause you're in the hospital, e.g., then email is appropriate.

Teaching Assistant: will be sent to all of the TAs.


Course Objectives:

Data structures form the basics for the programmer's toolbox.  You will become familiar with the basic common data structures, and learn to modify them or create your own.  Further, the notion of data abstraction is important from several aspects.  You will start down the road of separating interface from implementation, to viewing a problem simply in terms of  functional requirements and dependencies (or lack of).  On the flip side, we will explore various issues involved in implementing a given interface.

After this semester you will:


6 credits of some "higher-level" language, and CS265 (or equivalents).

EntryMath.pdf contains some examples of skills we assume before coming to this course. Note, mastery of these skills does not guarantee success in this course, but bafflement will certainly annoy us.

Course Requirements and Grading:

1 midterm during week 6 (30%); weekly homeworks (written and implementation) (35% total), and a final exam (35%).

Last date to withdraw with a "W" grade:

Extra Credit
I wouldn't rely on there being any.

Adjusting Final Grades

A scaling will be applied to the final grade, bringing the mean up to a mid-high C. The curve will not be normalised; it is typically bimodal, and if so, will remain that way.



There will be weekly homeworks, each in 2 parts:

  1. Written (theory) - 60%
  2. Implementation (programming) - 40%

Due dates are discussed on the lecture frame.

Do not email work to me or the TAs w/out prior consent. It will be deleted, unread, and with prejudice.

Written work must be legible, and multiple pages affixed together w/a staple. Please, do not dog-ear the pages, nor use paper clips. All work will have your name, section, and the date. A title would also be nice.


Written work will be submitted electronically, as a PDF, via Blackboard

Stay tuned. Format may change.

The implementation will be submitted via Blackboard.

Target Platform

While the focus of the course is understanding the theory of algorithms and the data structures that support them, implementation is an important part of the course. Details of implementation, however, are not the course focus, so all assignments will be done using Python. (It really will make your life simpler, although that may not be obvious in the first couple weeks.)

Note that Python has libraries that implement many of the algorithms we will discuss. Don't use them. If in doubt, ask. Remember, the purpose of the implementation assignments is to gain a deeper understanding of the algorithms and data structures we study, not to gain a deeper understanding of Python per se.

All programs will be graded on the department Linux machines. It's interpreted, but you should check that the files run on the dept. Linux machines before submitting. The submit program should help with this.

The department Unix machines

You all have an account on the CS servers ( Click here for a quick tour, logging in, creating a directory, creating, compiling, and running a C++ program. Also on my front page are some links for basic Unix commands, and a quick reference for using the vi editor.

Classroom Attendance

By the laws of most states, you've reached the age of consent. If you don't want to come to class, I won't cramp your style. But you are responsible for getting notes and in-class announcements from someone other than me.

In general, you are responsible for anything I say, write on the board, and all assigned reading, unless I specify otherwise.

A simple observation: while there have been exceptions, generally (more than 95% of the time) students who don't come to class regularly don't do as well on exams, and often receive poor grades, often lower than that student, in my estimation at least, could've done.

Classroom Participation

Again, your grade is not affected directly by how often you raise your hand. However, I strongly encourage you to do so, either to respond to my questions, or to ask your own.

Do not think your question is not worthy. That would be my call. I may, at times, defer your question until I can give it better attention. And while we all know platitudes about best intentions, I try never to insult anybody. If I do, blame my ignorance, at least until you tell me about it and hear my side.

In short, I need feedback, I need to know if you're bored or you're lost (those 2 expressions look oddly similar), and the class (and hence, the learning process) goes much better, and is more fun (and doesn't seem to take as long), if the classroom interaction isn't clearly one-sided, but more energetic. I will occasionally make mistakes on the board (always intentional, of course); I expect you to catch them out and call me on them.

Academic Honesty