Data structures is an essential area of study for computer scientists and for anyone who will ever undertake any serious programming task. This course deals with the fundamentals of organizing and manipulating data efficiently using clean conceptual models. Students study many of the important conceptual data types, their realization through implementation, and analysis of their efficiency. Implementations in this course are carried out in the Java programming language, but the principles are more generally applicable to most modern programming environments.
Students should have at least one semester
of programming experience (two semesters is even better) with either Java or
C++. An overview of the Java essentials will be provided at the beginning of
the course, but students with less Java experience are expected to
familiarize themselves appropriately with Java during the first two weeks. This
course is a prerequisite for all more advanced programming courses.
The lectures will provide an overview of Java, the tools for
analyzing data structures and algorithms, and a number of the most common data
structures. Topics include:
Required text:
Goodrich and Tamassia. Data
Structures and Algorithms inJava, 4th edition. John Wiley and Sons,Inc.
2004. ISBN 0-471-46983-1.
Optional Java texts:
Arnold, Gosling, and Holmes. The
Java ProgrammingLanguage, 3rd edition. Addison-Wesley.2000. ISBN
0201704331.
Flanagan.Java in a Nutshell. O'Reillly,
4thedition, 2002. ISBN 0596002831
The tentative grading break-down (subject to change) is
as follows:
All assignments will be turned in electronically and are
due by the date and time specified on the assignment. Assignments may be turned
in up to 5 days late, with a penalty of 10% for each day late. No credit will
be given after 5 days. Exceptions will be made only for notes from the
dean's office or a physician's office.
The strength of the university depends on
academic and personal integrity. In your studies, you must be honest and
truthful. Ethical violations include cheating on exams, plagiarism, reuse of
assignments, improper use of the Internet and electronic devices, unauthorized
collaboration, alteration of graded assignments, forgery and falsification,
lying, facilitating academic dishonesty, and unfair competition.
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 any other solutions (including program code) to
your homework problems or similar problems. However, you may discuss assignment
specifications with others to besure 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 of 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 or TA, as you are always encouraged to do, rather than from other
students. (3) Cite any questionable sources of help you may have received.
Students who cheat will suffer a serious course
grade penalty in addition to being reported to university officials. You must
abide by JHU's Ethics Code:report any violations you witness to the
instructor. You may consult the associate dean of students and/or the chairman
of the Ethics Board beforehand. For more information, see the guide on Academic Ethics for
Undergraduates(http://www.advising.jhu.edu/ethics.html)and
the Ethics Board web site (http://ethics.jhu.edu).
All of the above apply to this class. For exams, the line is
pretty clear: Do not communicate with anyone else or use
disallowed materials during the exams. For programming assignments, you may
find the line more fuzzy. It's okay to discuss ideas and concepts with other
people, but not to share code. If the programming assignment is
designated as a team project, you may only share code with the other members of
your designated team. To ensure this, do not look at anyone else's code
or communicate direct examples from your own code. If you want to help someone
debug a programming problem, do not do it by showing them how your code looks.
Avoid stepping through someone's code with them line-by-line, because the
tendency will be to fix problems by making the code exactly like yours, or to
incorporate identical fixes into your own code. Learn together by discussing
ideas of how things should function in various cases.
All cases of confirmed plagiarism will be
reported to the Student Ethics Board. In addition to receiving 0 credit for
the assignment in question, you could receive an F for the course and even
be expelled from the university. In addition to human review, we
apply sophisticated software to find cases of plagiarism among students of
the current semester as well as those of previous semesters. So don't do it.
This syllabus is available on the world-wide web at:
http://www.cs.jhu.edu/~hager/Teaching/cs226/syllabus.html
March 8, 2005