Course Description and Syllabus

This course provides a broad introduction to data structures in Java and C. Topics to be covered include:

  • Linked Lists
  • Stacks and Queues
  • Binary Trees
  • Hash Tables (?)
  • Sorting and Searching
  • Big 'O' notation
  • Recursion
  • C for Java programmers
  • Designing, testing, and debugging software
  • Using Unix effectively (AFS, jar files, RCS, gmake, etc.)

UCSC Catalog Course Description

Teaches students to implement common data structures and the algorithms associated with each data structure, through progressively difficult exercises. Topics include big "O" notation; pointers, recursion (induction), and dynamic allocation; linked lists and list processing; stacks, queues, binary trees and binary search trees; simple sorting techniques and simple search techniques. Students will gain a working knowledge of the elements of the Java and C programming languages. Prior experience with Unix is assumed. Prerequisite(s): course 12A.

Required Text:

Data Abstraction and Problem Solving with Java: Walls and Mirrors. Carrano and Prichard, Addison Wesley, 2004. Available at the Bay Tree bookstore and Amazon.com.

Optional Text:

C for Java Programmers. Muldner, Addison Wesley, 2000

Useful Resources:

On to C, McDowell, Addison Wesley, 2001. This short book came with Java by Dissection, so many of you will already have a copy.

The Java Tutorial. http://java.sun.com/docs/books/tutorial/index.html.

The Java 1.4.2 API reference manual. http://java.sun.com/j2se/1.4.2/docs/api/. Important packages include java.lang, java.io, and java.util.

Evaluation

You will be evaluated on your performance on the following course activities, with the percentage of the total course grade allocated to each activity shown in parenthesis:

  1. Programming assignments and written homework (40%).
  2. Quizzes (30%).
  3. Final (30%).

You must recieve at least 50% in each category to be eligible to pass this class. This means that if you receive less than 50% on any one of these parts, you will not pass.

However, just because you score at least 50% on each part does not imply that you will necessarily pass. For example, someone who scored 51% on each of these activities would almost certainly NOT pass.

Pair Programming

In this class, I would like all students to work with a partner on their programming assignments. Although it is not required, I strongly recommend it. Read more here...

Facilities

This quarter you will using the Unix operating system for your programming assignments. You must have a CATS account. You can apply for one here. You can work at any one of the on-campus CATS labs, or use your personal computer if you have one. Remember, though, that you must work with your partner on your programming assignments.

Programming Assignments

You will use the submit command for turning in homework. Specific instructions will be supplied with the programming assignments.

Although you can use any computer to work on your programming assignments, your program must run on the CATS Unix computer. Make sure it works there before you turn it in..

Late work will not be accepted or graded. The program should be submitted in whatever form it is in - it is possible to receive some partial credit for a program that is not working. Homework is graded in terms of it being done in a good style, being correct, being concise, being readable, and being efficient. Specific grading criteria for each assignment will be posted with the assignment description.

Syllabus

This is an approximate schedule. The course will generally follow this schedule, but topics may move around some.

Week Topic Reading
1 Class Overview, Intro to ADTs Chapters 1, 3
2 Lists Chapter 4
3 Stacks and Queues Chapters 6, 7
4 Recursion Chapters 2, 5
5 Trees, Binary Search Chapter 5
6 Intro to C  
7 More C  
8 Sorting and Efficiency Chapter 9
9 More Sorting  
10 Optional Topics