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