ICS 23 / CSE 23 - Fundamental Data Structures
Fall 2008
Course Syllabus

Course Summary

This course focuses on implementation and mathematical analysis of fundamental data structures and algorithms. It also covers storage allocation and memory management techniques.

Prerequisites: ICS 22/ CSE22 with a grade of C or better or Engineering EECS40; Mathematics 6A or ICS 6A. Same as CSE23. Only one course from ICS 23/CSE23 and ICS H23 may be taken for credit.

Last drop date: The end of the fifth week of class.

Instructor Information

Office hours: W F, 2:00pm-3:00pm (or appt. by request)

Contacting me: I tend to be much easier to reach via email than by phone, so I would suggest using email to contact me under normal circumstances. When you write me an email, please take a few moments to make sure that the following information is placed somewhere in your message: your name, your student ID#, and which course you're enrolled in (as I'm teaching more than one).

Times and Places

The lecture meets on Mondays, Wednesdays, and Fridays from 9:00am-9:50am in DBH 1500. Attendance at lecture is required of all students.

Although participation in the lab section is of great benefit to the student, it is not required.

There are two lab sections, led by the TA, as discussed below. Participation in a lab section is not strictly required, but it is strongly encouraged of all students.

Lab Sections

In order to be enrolled in ICS 23, you must be enrolled in both a lecture and a lab.

Your lab time is 80 minutes twice a week during which you will be guaranteed a seat in the lab, even if the lab is busy. Your TA will be available during this time to answer your questions as you work on your projects. On some occasions, your TA will gather you together -- in whole or in groups -- to discuss the projects. Other times, it will simply be open lab time. You're also welcome to ask questions about lecture material, if you'd like. Your attendance in your lab section is not an explicit requirement of the course.


You may also find it useful to purchase a Java reference book. If you took an introductory programming course using Java (e.g. ICS 21), you'll probably find your textbook from that course to be sufficient as a reference. If not, there are many suitable ones out there, and different styles will appeal to different people, so I suggest going to a local bookstore and finding one that you feel comfortable with.


Your course grade will be determined from the weighted combination of your scores on each of five projects, one Midterm, and one Final Exam. The weights of each of these are:

Course grades will be determined neither on a normal curve nor a straight scale. Nevertheless, overall scores over 90% will receive an A- or better, scores over 80% will receive a B- or better, and scores over 70% will receive a C or better. However, the actual cutoffs may be lowered at the end of the quarter.

Academic dishonesty

As ICS 23 students, you are expected to know and follow the academic dishonesty policies of both the ICS Department and the University as a whole. Please take a few minutes to read the policies, which can be found at this link.

All of your work in this course is expected to be completed solely by you. Group work and/or sharing of code between students is not permitted, nor are students allowed to have someone other than themselves perform the work. Note that "high-level discussion of course material for better understanding" is permitted and encouraged, but when it comes time to sit down and write code, that is expected to be done by you and you alone. All submissions are compared to one another using a sophisticated plagiarism detection system. This system is extraordinarily good at finding similarities between submissions, even when there are superficial differences. (Note that we also compare your submissions to those submitted during previous quarters whenever one of these assignments was given during a previous quarter, so it is an exceedingly bad idea to turn in, or even refer to, code written by a friend of yours who took the course already.)

Since all of your work is expected to be completed solely by you, you will be held responsible even if you plagiarize only a small portion of someone else's project.

Academic dishonesty is a two-way street. Providing your code to other students for them to turn in as their own is not permitted anymore than turning in someone else's code. Resist the temptation to give code to your friends "for reference." Based on my experience, I can say that your "friends" may very well betray you and turn it in, anyway.

Violators of academic dishonesty policies are subject to the penalties described in the ICS Department's policy. They are also subject to an immediate course grade of F, and you will not be allowed to drop the course to avoid the grade. Also be aware that a single documented case of academic dishonesty may preclude you from switching into an ICS major, registering for an ICS minor, joining the ICS Honors Program, and graduating from ICS with honors.