CS 201: Data Structures

Course Information

Welcome to Data Structures. The material in this class is really interesting, and a ton of fun. (Sure, I'm biased. But really, this is great stuff.) I'm looking forward to working with you all.

Book

Data Structures: Abstraction and Design Using Java by Elliott Koffman & Paul Wolfgang.

I think these authors are focused on the right themes (notably Abstract Data Types, the distinction between interfaces and implementations, and the mathematics of complexity analysis). They also have nicely detailed explanations and examples for all the data structures we'll study. Read the book, think about it, compare differences (if any) between their code and explanations and mine, ask questions, etc.

Homework

Unless I specify otherwise, you'll submit homework via moodle's homework-submission mechanism. Login to moodle, click on the assignment in question, click on "Add submission", etc.

Each assignment will have a specific time for which it will be due. For each deadline, an assignment turned in late within one day of the due time will be docked 50%. An assignment turned in later than one day of the due date will receive no credit. Please start your work early so you can hit the deadlines. I do make exceptions occasionally, but you need to talk to me ahead of time if you need an extension. Sometimes I say no even if you ask nicely ahead of time, but I almost always say no to last-minute panic requests.

Working together

For most programming assignments, I will assign you a partner. Partnerships will change a couple times during the term so you'll meet and get to work with several of your classmates.

You and your partner should work together in person. When planning your strategy for an assignment, whiteboards and paper are great tools. When you're at the computer, I strongly recommend that you use the "pair programming" model: You sit together at a single computer, one of you "drives" (i.e. uses the keyboard and mouse), and the other follows along. The non-driver can stop bugs before they happen, suggest techniques and improvements, etc. You should make sure that over the course of an assignment that both partners spend roughly the same amount of time driving.

I will periodically ask you to turn in a partnership evaluation form.

There will be some assignments for which you'll work without a partner. I encourage you to collaborate with your classmates about these assignments to share ideas and help each other get past problems, but the solution you turn in should be your own.

Grading

Your grade will be based on your performance on a variety of programming and problem-set assignments (40%), a midterm exam (25%) during week 5, a late-term exam (25%) during week 9 or 10, and a final project (10%) due on the last day of finals.

Rough schedule