Last modified January 17

COMP 271—Data Structures
Syllabus

Prerequisite

COMP 170 or, with permission of the instructor, knowledge of Java and experience in programming using the object-oriented paradigm.

Instructor, time, & place

Conrad Weisert
Office hours: 75 minutes before class or by appointment
Class: Teaching Assistant for help especially during Lab sessions: Sravani Giddu

General Description

This is an intermediate course in computer programming focusing on common useful data structures and related algorithms. The class discussions and reading material will interleave two interdependent tracks:

  1. Concepts and good practices of advanced computer programming. emphasizing the object-oriented paradigm in Java.
  2. Building, using, and analyzing certain, mostly dynamic data structures to solve practical problems.
See the companion week-by-week schedule.

Note that the course is not about certain tools and techniques that the textbook author integrates into his presentations. They include:

  • JavaDoc user-documentation tool,
  • JUnit unit-testing tool,
  • Test-driven development sequence.
We shall discuss them in class and you should be well acquainted with their purpose, their strengths, and their weaknesses, but you're free to choose whether to use them or not, as long as your programs are well organized, clearly documented, and thoroughly tested.

Assignments and project

There will be 8 assignments. Some of them can be started in our scheduled laboratory period. Your worst assignment grade won't be counted (see Grading below).

Because of the wide range of detailed topics, we won't do a large class project. However, if you have an opportunity in your job or in another course to make use of the concepts and techniques of this course, you can talk to me about substituting a special project for some of the homework assignments.

Tools

We shall use Java, JDK 1.6.x or a comparable development platform. You may use any computer hardware and operating system that supports Java at that level.

Loyola's laboratories are equipped with BlueJ and Eclipse, which you are free to use or not use.

Note:   The instructor and the lab assistant may not be able to help you if you encounter trouble using a platform or tool not supported at Loyola.

Textbook and other reading

Required

Specific reading assignments are given in our week-by-week schedule. In order to conserve class time, you should study each session's assigned reading before that session and come to class prepared to ask questions about anything that you either don't fully understand or disagree with.

Recommended supplementary reading

To do the assignments you'll need access to a comprehensive book on Java programming, such as the one used in COMP 170. I shall recommend and let you examine some specific texts from time to time.

I may occasionally recommend an interesting article or book related to our course. However, our required reading load is rather heavy, so we'll keep those recommendations to a minimum.

Attendance and keeping up

Although the concepts and techniques covered in COMP 271 are accessible to a competent Java programmer, they're far from trivial and they demand serious study. If you find yourself falling behind or if you don't understand something well enough to explain it to someone else, either ask questions in class or see me during office hours.

Since most of the material will be presented and discussed in our class sessions, you'll be at a serious disadvantage if you miss a session. Unless you're already a very senior programmer, no amount of independent reading can substitute for participation in the class sessions.

A copy of each session's presentation slides will be posted (link from the schedule topic) in a condensed form (4 per page) a few days before class, so that you'll rarely have to copy something you see on the screen. But the presentation slides are only an outline of what we shall actually discuss and examine during our class sessions, so studying them won't compensate for missing a session.

If you have to miss one or more sessions, please confer with the instructor as early as possible to determine how best to master the material you miss.

Examinations

The final examination will cover the full course content.

A mid-term examination (just before the drop deadline) will confirm your mastery of the mainstream concepts discussed up that point.

Examinations may consist of a closed book part, emphasizing your grasp of concepts, and an open book part, emphasizing actual programming. Computers and electronic devices must be turned off for both parts. In the open-book part, you may consult:

We regret using so much paper, but it's a way of giving you access to the course material without opening up the whole Internet.

I may give an occasional brief quiz at the beginning of class to verify your understanding of some important point raised in the previous session or in the assigned reading.

Grading

The usual grading criteria apply to this course.

These are the weights for the various course components:

Final Examination 25 points
Mid-Term Examination 21 points
Homework and workshop exercises (7) 7 points each
Class participation and labs5 points

The following table is used both for converting your total score to a course grade and for converting letter grades on assignments to numeric scores.

Numeric score ≥9087-89 83-86 80-82 77-79 73-76 70-72 66-69 60-65 <60
Letter grade A A- B+ B B- C+ C C- D F