CS 406 Syllabus

Finding us Our offices are in the Engineering and Technology Suite. Here is our contact information.

You can send snail mail to us at NCSSM, 1219 Broad Str., Durham, NC 27705.

Course Objectives

  1. You will learn that a data structre is a container that stores related items under a single name and which has rules for access and modfication of its contents.
  2. You will learn how to create a data structure from scratch by creating a classes for several data structure
  3. You will learn how to use the Java Collections Interface to manage data structures.
  4. You will understand the inner workings of Java Generics and be able to use them effectively to facilitate code reuse.

Course Goal This is a course in object-oriented data structures in the Java language. You will learn about data structures from the inside out by building some, and from the outside in by learning how to use the Java Collections Framework effectively. You will integrate them into event-driven applications

Prerequisite You need to have been enrolled in CSC 404 or obtain the permission of the department. You need to have a good grasp on objet-oriented programming in Java.

Sources of Help If you run into difficulty, avail yourself of our help ASAP. You can send us email, drop by our offices or make an appointment a specific time. We may also announce our AIM handles in class. Some of our work service student will be available during certain hours to help you; the time and place of this service will be announced on this site when everyone is done scheduling.

Major Topics These areas will be addressed in the course.

  1. GUI Review (1 wk) We will quickly review Model-View-Controller programming and you will write a pure GUI project to get warmed up configured for Java. We will also spotlight some aspects of Java file IO.
  2. Sorting Methods (2 wks) The students learn about quadratic and recursive sorts. We create implementations of some of these and assign others as projects. programming and you will write a pure GUI project to get warmed up configured for Java. We will also spotlight some aspects of Java file IO.
  3. Lists, Stacks, and Generics (2-3 wks) To get warmed up we will build a simple stack class with a stack of strings. We will then discuss the basics of Generics and make this a generic class. We then turn our study to two implementations of a list: one is array based and the other is link-based.
  4. The Comparable and Comparator Interfaces (1 wk) We will use these to adapt our data structures to the Collections Framework's static Collections.sort() method.
  5. Iterators and the Iterable Interface(2 wks) Students will learn how to make their data structures accept the enhance collections for loop.
  6. Dictionaries, Hash and Tree Maps(1 wks) The students learn about the Java Swing API. Inheritance and interfaces are discussed with an extensive suite of examples. We then apply these principles to building simple GUI applications.
  7. Binary Trees and Heaps(1 wks) The students study how to maintain sorted collections which yield quick access to the largest or smallest element.
  8. Final Project A capstone project is created by students working on teams that applies all of the major concepts in the class. This project is a full-featured GUI application that functions robustly and which can save its state. It must marshal and retrieve and present material from a large pool of data.

Class Materials Obtain the book from the book room. It is the pied Data Structures in Java book. The author is Mark Allen Weiss.

You will need to configure your box for Java development. You will need a Java Developer's Kit (version 1.6 or 1.7) and a Java IDE. We use DrJava or Eclipse. Sometimes we program at the UNIX command line.

Housekeeping Matters Handouts and notes will be posted on Dr. Morrison's website. or Mr. Yeh's website. We encourage you also to make class notes in the form of commented files or text files keep these on your personal drive. You are required to archive completed assignments and keep past tests or quizzes. Keeping your old assignments, tests and quizzes will allow you to figure your grade at any time; just follow the instructions laid out here. Make sure you familiarize yourself with the ground rules document; the policies spelled out in it apply in all CS classes.

Class Organization This class is at once lab and lecture. We will demonstrate coding constructs and have you try them right away. You are encouraged to bring your laptop to class and configure your machine to your liking.

Some programming projects will be individual efforts, although there will be a few joint activities (especially in pairs). You are expected to gain an active understanding of the material; this means that you need to be a full participant in class at all times. You are encouraged to share ideas and ask questions. Unless I specify otherwise, you may help each other debug code.

Programming Assignments and Other Assessments No one really understands what is going on in a programming class until they can write programs that compile and work. It's this simple: if you can't do this, you don't really understand the material. The biggest mistake made by many CS students is that they confuse an active understanding of the material with a passive understanding. Until you attempt, fuss over and debug programs, you are nowhere. Therefore, you will see work on a variety of programs.

Grading: Your grade is computed from a numerical score; this score is comprised of three parts: your test average, your programming projects, and your quizzes. There is also a class commitment grade.

Our basic scale is a 90-80-70 scale; this is a lower bound and your grade might be higher. If you end up in the top 30% of a letter's numerical range, you get a + and in the bottom 30% you get a -.

Whoa! Back up! You are required to maintain all of your programs in in your personal drives. Do not archive the executable or .class files you generate. You are also required to keep all your graded assignments returned to you in your notebook. This is your insurance against us accidentally corrupting, destroying or misplacing your file.

Academic Honesty in this Class The department's policy on academic honesty is posted here; you are expected to read and understand it right away. All tests and quizzes are individual efforts. Projects may be individual or group efforts; this will always be made clear right at the beginning. Should you ever be in doubt, do not hesitate to ask.