600.226 Data Structures
Course Syllabus -- Fall 2011

Meetings: Tue & Thu 3-4:15 pm, Shaffer 301

Instructor: Dr. Joanne Selinski
Office: New Engineering Building, Room 222, (410)516-4117
E-mail: joanne -at- cs.jhu.edu
Office Hours: best on Mon & Wed mornings, Tue & Thu afternoons before class, open door or by appointment
Teaching Assistants: We will have several assistants for this course. See the posted schedule for details.

Catalog Description: This course covers the design and implementation of data structures including collections, sequences, trees, and graphs. Other topics include sorting, searching, and hashing. Course work involves both written homework and Java programming assignments. An overview of Java will be provided. Prerequisite: AP CS, 600.107 or equivalent. [General] 3 credits

Course Web Pages: http://www.cs.jhu.edu/~joanne/cs226 and blackboard.jhu.edu
Thses are VERY important sources of course information and must be checked regularly!!

Required Text: Mark Allen Weiss, Data Structures and Algorithms Analysis in Java, Pearson Education, 2nd edition, 2007. Weekly reading will be assigned, and perhaps some exercises.

Recommended Reference: Many students like to use a more reference style book when writing programs, and for later coursework in computer science/programming. Here are some popular ones. You can find them for purchase on-line. Be sure to get the most recent editions. The Java language class library documentation is also available on-line and serves as a great reference.

Course Outcomes: Upon completion of this course students should be able to:

Course Topics: The goal of the course is to teach fundamental data structures, which allow one to store collections of data with fast updates and queries. We will cover most of chapters 1-9, and parts of 10-12 as time permits. A detailed schedule will evolve as the semester progresses. Key topics will definitely include: JAVA refresher & generics, analysis tools, linked lists & iterators, stacks and queues, search trees, maps, hashing, priority queues, sorting, and graphs.

Grading: Students will complete written homework assignments, programming projects, a midterm and a final. They must also maintain an assignment journal throughout the semester. Each assignment will be assigned a point value. Homework and program averages will be computed as total points earned divided by total points possible. These grading components will be weighted as follows. Letter grades for the course will be subject to my evaluation of your overall class performance. Please keep your own record of your grades so that you will know your standing in the course and can double-check my records. All grades will be available on Blackboard.

Assignment Journal: The purpose of this journal is to provide reflections on your assignments - both written and programming. You must have an entry for each assignment, which includes the date and the assignment type and number. Comment on things like: how hard was the assignment and why? where did you need help? how long did it take to complete? what did you learn from the assignment? what were the best and worst parts and why? what mistakes did you make and where could you have done better? how would you redesign this assignment if you were the teacher? You should have a paragraph or two of well-written (properly formed English) reflections for each assignment. You are expected to add to this journal weekly on Blackboard. We will be reading them regularly to get feedback on what material to review and how to structure future assignments.

Programming Logistics: All programming assignments must compile with the standard Java compiler, which is freely available to download for any system. NO CREDIT WILL BE GIVEN FOR CODE THAT DOES NOT COMPILE! This means that all components of a program must compile together or you will not receive any credit for any of them!! Many students prefer to write their programs on their own computers. However, students will be given access to the CS Lab in NEB 225 in order to meet with course assistants and will have the option to use either a unix or windows account from the CS department. If you don't already have an account or access, you must fill out a request form and return it to Joanne. You will then need to see Steve in NEB 226 (hours posted on the door) with your Jcard in order to get it validated. You are welcome to use any development environment you like, as long as it uses the standard java compiler. Popular choices are jGRASP and Eclipse.

Late policy: No late homework or programs. If a program is not working perfectly, turn it in as is with detailed comments as to which parts are complete, and which are not. NO CREDIT WILL BE GIVEN FOR CODE THAT DOES NOT COMPILE! Exceptions for illness will be given only by Joanne (not by any TAs). Exceptions for poor planning will NOT be given. Now is a good time to develop incremental coding skills, so that you always have a working program to turn in, even if parts are incomplete.

Collaboration: You must solve your written assignments without consulting other students. Some programming assignments will be individual, others will require colloboration with a specified partner or small team. For homework help you may only consult the instructor, the teaching and course assistants, or tutors. You must abide by the Computer Science Academic Integrity Code (see below), as well as the University's Ethics Code.

Miscellany: You are expected to attend and actively participate in all class sessions. Inevitably, students who do not attend regularly do poorly on tests and assignments. You are responsible for all material presented while you are absent. If you have trouble or need extra help, don't hesitate to contact a teaching assistant or me. Please don't wait until you're hopelessly behind.


Course Schedule (will evolve throughout the semester)

WeekTopicText
8/30 & 9/1So you want to be a better programmer?
JAVA refresher & generics
Ch 1
9/6 & 9/8Finish generics, start AnalysisCh 2
9/13 & 9/15Analysis Tools and TechniquesCh 2
9/20 & 9/22Iterators & Linked ListsCh 3
9/27 & 9/29Stacks & QueuesCh 3
10/4 & 10/6TreesCh 4
10/13Midtermreview
10/18 & 10/20More Trees, Maps, DictionariesCh 4
10/25 & 10/27HashingCh 5
11/1 & 11/3Priority Queues (Heaps)Ch 6
11/8 & 11/10SortingCh 7
11/15 & 11/17GraphsCh 9
11/22Sets
Enjoy Thanksgiving Break!!
Ch 8
11/29 & 12/1Huffman Codes & Pattern Matching
Misc & Review
Ch 10-12
12/8, 2pmFinal exam 


Computer Science Academic Integrity Code

Cheating is wrong. Cheating hurts our community by undermining academic integrity, creating mistrust, and fostering unfair competition. The university will punish cheaters with failure on an assignment, failure in a course, permanent transcript notation, suspension, and/or expulsion. Offenses may be reported to medical, law or other professional or graduate schools when a cheater applies.

Violations can include cheating on exams, plagiarism, reuse of assignments without permission, improper use of the Internet and electronic devices, unauthorized collaboration, alteration of graded assignments, forgery and falsification, lying, facilitating academic dishonesty, and unfair competition. Ignorance of these rules is not an excuse.

Academic honesty is required in all work you submit to be graded. Except where the instructor specifies group work, you must solve all homework and programming assignments without the help of others. For example, you must not look at anyone else's solutions (including program code) to your homework problems. However, you may discuss assignment specifications (not solutions) with others to be sure you understand what is required by the assignment.

If your instructor permits using fragments of source code from outside sources, such as your textbook or on-line resources, you must properly cite the source. Not citing it constitutes plagiarism. Similarly, your group projects must list everyone who participated.

Falsifying program output or results is prohibited.

Your instructor is free to override parts of this policy for particular assignments. To protect yourself: (1) Ask the instructor if you are not sure what is permissible. (2) Seek help from the instructor, TA or CAs, as you are always encouraged to do, rather than from other students. (3) Cite any questionable sources of help you may have received.

On every exam, you will sign the following pledge: "I agree to complete this exam without unauthorized assistance from any person, materials or device. [Signed and dated]". Your course instructors will let you know where to find copies of old exams, if they are available.

For more information, see the guide on "Academic Ethics for Undergraduates" and the Ethics Board web site (http://ethics.jhu.edu).