600.226 Data Structures [Selinski]
Syllabus

 

600.226 Data Structures
Course Syllabus -- Spring 2013

Course Overview

Meetings: MWF 3-4:15 pm, Shaffer 100
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 am, Tue/Thu pm, open door or by appointment
Teaching Assistants: We will have several assistants for this course. See the posted info page 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.

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

Textbooks: No one textbook is ideal for this course, however it can be helpful to have a consistent reference that covers the topics you will be learning. Below are two options. We are trying the first this semester, since students didn't like the second one very much in past semesters. However, you can also find pretty good coverage of the concepts in on-line resources as well. References to these texts and on-line resources will be given throughout the semester.

  • R. Sedgewick & K. Wayne, Algorithms, Addison-Wesley, 4th edition
  • Mark Allen Weiss, Data Structures and Algorithm Analysis in Java, Pearson Education, 2nd or 3rd edition

Java References: 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.

  • D. Flanagan, "Java in a Nutshell", O'Reilly.
  • Deitel & Deitel, "Java How to Program", Prentice-Hall.
  • Arnold, Gosling & Holmes, "The Java Programming Language", Addison-Wesley Professional.

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

  • Evaluate and compare the time complexity of functions using mathematical techniques.
  • Design an algorithm that produces the correct results according to specified inputs and time or space complexity restraints.
  • Understand the operation of common data structures and algorithms.
  • Use analysis techniques to choose the data structure/implementation appropriate for a given problem.
  • Write advanced object oriented solutions in Java to significant problems, by implementing appropriate data structures and algorithms.

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. Key topics will definitely include: JAVA refresher & generics, analysis tools, sorting, linked lists & iterators, stacks and queues, search trees, maps, hashing, priority queues, and graphs. A detailed schedule will evolve as the semester progresses.

Teaching Approach: This course is being taught with a "guided exploration" approach, meaning that students will be actively engaged in learning concepts through questions, discussions, and problem solving during class meetings. Please bring a charged laptop to class. Peer teaching will be utilized as a learning tool as well. Class material will then be reinforced and continued in homework assignments. You are strongly advised to prepare for and actively participate in all class meetings.

Homework Logistics

Grading: Course grades will be based on participation, weekly homework assignments, a midterm and a final, according to the percentages below. Letter grades for the course will be subject to my evaluation of your overall class performance. Participation will be based primarily on in-class activities, as well as Piazza usage to a lesser extent. Each assignment will be assigned a point value. Overall homework grades will be computed as total points earned divided by total points possible. 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.

  • 5% - participation
  • 55% - assignments
  • 15% - mid-term (tbd, in class)
  • 25% - final (Monday, 5/13, 9am)

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. We recommend programming in Eclipse or a Unix environment for this course.

Late policy: No late homework. 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: Students are expected to collaborate on in-class exercises. Most homework assignments will be individual, some 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.

Attendance: You are expected to attend and actively participate in all class sessions; this counts as 5% of your grade. Inevitably, students who do not attend regularly do poorly on tests and assignments. You are responsible for all material presented while you are absent. Students who miss class due to illness, religious holidays, etc. should inform Joanne as soon as possible if requesting any accomodations as a result. 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.

Miscellany: Any student with a disability who may need accommodations in this class must present to Joanne an accommodation letter from Student Disability Services (385 Garland, studentdisabilityservices@jhu.edu, (410) 516-4720). In addition, you must email Joanne at least two weeks prior to any tests to request accomodations.

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).