CSCI-313:
Data Structures, Fall 2007
Course Structure * Course Topics * Assignments * Resources
Instructor:
Dr. Matt Huenerfauth
Office: Science Building A330
Phone: 7 1 8 - 9 9 7 - 3 2 6 4
Email: matt (AT) cs (DOT) qc (DOT) cuny (DOT) edu
Web: http://www.cs.qc.cuny.edu/matt
Office Hours: Wednesdays from 5:15pm to 6:15pm.
Class Schedule:
Monday and Wednesday afternoons, 6:30pm to 7:45pm.
Classroom: Science Building B131.
Online:
The public website for this course is: http://www.cs.qc.cuny.edu/matt/csci313/
Lecture slides, assignments, and handouts are only available on the BlackBoard site.
Course Prerequisites:
CSCI-211 (C++), CSCI-212 (Java),
CSCI-220 (Discrete Structures).
Required Textbook:
Data Structures and Algorithms in Java (4th edition).
Authors: Michael T. Goodrich and Roberto Tamassia.
Publisher: John Wiley & Sons, 2006.
ISBN: 0-471-73884-0
Grading Percentages:
Your final grade in the class will be calculated as follows:
30% Homework Projects
30% Midterm Exam
30% Final Exam
10% Class participation
These percentages are tentative. Any changes will be announced in class.
Exam Policy:
The midterm exam will be administered in class sometime in the middle of the semester. The date will be announced in the first few weeks of the semester. There is no scheduled make-up for the exam; so, if for some reason you are unable to attend the exam, you should contact the instructor ahead of time to discuss the circumstances.
The final exam will occur during the final exam period of the semester.
Class Participation Policy:
Your class participation grade will be determined based on your attendance and active participation in class throughout the semester. Participating in discussions, answering questions, reading the textbook before class, and participating during in-class activities are all good ways to show "active participation." There are also CUNY/Queens College policies that can become applicable if there is an excessive number of lateness or absences.
Being considerate of your fellow students in the classroom is also an important part of your "class participation" grade. You can do this by not causing a distraction for your fellow classmates -- you can remember to turn off your cell phone before class, arrive on time for class, avoid side conversation or noise during class, etc. A good learning environment is also one in which everyone feels welcome and comfortable; so, please be respectful of the diversity of backgrounds, beliefs, and lifestyles of the students in our class.
Textbook Policy:
We will be following the organization and terminology of the textbook throughout the semester. (We will be covering some topics in a different order than they are presented in the textbook -- see the "COURSE TOPICS" section below.) You are encouraged to read the relevant chapters of the textbook before each class.
Grading Questions:
Your grades will be posted on BlackBoard during the semester. If you have specific questions about your grade on an assignment or exam, then the best way to proceed is to send an e-mail with your question to the instructor. You should mention which problem/question you are referring to, and you should discuss why you feel the grade should be reexamined.
Students with Disabilities:
If you are registered with the Office of Special Services for Students with
Disabilities (OSS), please feel free to make an appointment with the course
instructor to discuss any academic accommodations you may need. It is
best if this is done at the beginning of the semester. If you need
academic accommodations and are not registered with the
Students with Other Concerns:
If you are having academic concerns beyond issues specifically connected
with this class, you may find it useful to make an appointment with an academic
counselor at the
The following is a tentative set of topics that will be discussed in
class. Specific calendar dates for each topic will be determined during
the course of the semester. The numbers in the "
Topics |
|
Java Programming |
1, 2 |
Algorithm Analysis |
4 |
Recursion |
3.4 |
Arrays and Linked-Lists |
3.1-3.3 |
ADTs, Vectors, Lists, Iterators |
6.1-6.4 |
Stack, Queues, and Deques |
5 |
Trees |
7, 9.3, 10.1, 10.2, 10.4, 14.2.1, 14.3 |
Heaps (Priority Queues) |
8.1, 8.3 |
Sorting |
8.2.3, 8.3.5-8.3.6, 11.1-11.5, 14.4 |
Graphs |
13.1-13.6 |
Hash Tables |
9.1, 9.2 |
Algorithm Design Techniques |
11.1, 13.6 |
Lecture Slides:
Slides will appear in the Course Documents page of the BlackBoard site.
An initial version of the slides will be posted shortly before class, and a final version of the slides will be posted after class. (We will use a TabletPC in class for lectures, and sometimes we will add additional drawings/comments to the slides during lecture.)
Assignments will be posted on the class page on BlackBoard as they are announced. Tentatively, there will be three homework projects for the semester. (Each would be worth 10% of the final grade.) Each project will require you to answer questions and write programs that use or implement some of the data structures we discuss in class.
Assignments will appear in the Assignments page of the BlackBoard site.
Homework Projects:
Homework projects will be handed out in class and posted on the course page on BlackBoard. Unless otherwise specified, homework is due at the beginning of class. (Depending on the assignment, some homeworks may be submitted via Blackboard and some may be submitted as a paper copy in class.)
Late homeworks will be penalized according to this
policy:
-- after class on the day that the HW is due: 20% penalty.
-- after class on the following class
day: 35% penalty.
-- after class one week after the HW was
due: 50% penalty.
If homework will be submitted more than two weeks late, then you should discuss the circumstances ahead of time with the instructor. Such homework will be accepted on a case-by-case basis. After the answers to a homework assignment have been discussed in class or handed out, then homeworks can no longer be accepted.
Academic Integrity Policy:
There is no group work in this class. It is fine to discuss course topics with other students and to discuss assignments in general terms with other students. However, you should think about and work on all assignments yourself, and you should write your own solutions to any problems which are assigned. You should not search the web for computer code which you can copy and submit for your homework assignments. In general, the instructor will have also performed an extensive search for code on the web that could be similar to the assignments you will be asked to write, and it's pretty easy to see past surface modifications to detect when code has been adapted from another source. If asked, you should be able to explain any code which you submit. Since assignments are a much smaller portion of your total grade than the exams, it is in your interest to do the assignments yourself (and to understand them) since these skills will be tested during the in-class exams.
At the bottom of each assignment, I'd like you to include a section entitled: "Resources that Helped Me." If you had a good conversation with someone in the class, you had a good discussion with me during office hours, or you found a useful website that helped you understand a concept (without copying code from the website), then you can list these resources at the end of your assignment. I'd like to know about information sources that you found helpful (they might also be good to share with other students in the class). If you only used the textbook and the in-class lectures when you did your assignment, then you don't need to include a "Resources that Helped Me" section on your assignment.
The textbook for the course is your primary resource for background information about the important data structures we will be learning about. You may also find it useful to consult websites about the Java programming language or about the BlackBoard course website.
Logging-In to the BlackBoard Online Course
System:
http://qcpages.qc.edu/edtech/BlackBoard/loggingOn.html
Information about Using BlackBoard:
http://qcpages.qc.edu/edtech/BlackBoard/students.html
SUN Java Tutorials Websites:
http://java.sun.com/javase/reference/tutorials.jsp
http://java.sun.com/docs/books/tutorial/