CPSC 215L: Data Structures and Algorithms
(Spring 2008)
Syllabus

Course Description

In this course we will study data structures and algorithms using the Java programming language. The basic data structures (lists, stacks, queues, trees) and basic algorithms (searching, sorting, recursion) will be introduced and implemented or applied. This course is a programming course and builds on the programming and design skills introduced in CPSC 115 (Introduction to Computing). Emphasis will be placed on designing and implementing object-oriented programs that implement or use the basic data structures and algorithms. This course will also introduce some basic concepts used in the complexity analysis of algorithms. Details related to programming will be covered in a required weekly lab.

Course Goals

The objectives of the course are:

Grading Policies

Final grades are determined by taking weighted averages of your grades on exams, programs, labs, and quizzes. There will be 2 hourly exams and a 2 hour comprehensive final exam. To calculate your letter grade at any given time during the course, just calculate your average on exams, programs, labs and quizzes, multiply each by its weight and add them together. A final average of 90% or better is A-, 80% or better is B-, and so on.
Category Weight
Hour Examinations (2) 30%
Final Examination 20%
Weekly Lab Assignments 20%
Programming Assignments 20%
Quizzes and Graded Homework 10%
TOTAL 100%

Attendance Policy

Attending class is crucial. The lecture sessions are your opportunity to ask questions about the reading material, homework, and other course content. The laboratory sessions are your only opportunity to get hands-on help on the programming assignments. If you must miss class or lab for any reason -- e.g., illness, travel, oversleeping -- you must demonstrate that you have adequately mastered the material for that day's class. This will be done by writing a 1-2 page paper on that day's class material (in addition to completing any missed assignments). These papers will be due at the next class. They will be graded PASS/FAIL. Each failure (or failure to turn in the makeup paper) will result in your final grade being lowered by one point (e.g. 87 to 86).

Textbooks

Required Text Book

  • Data Structures and Algorithms in JAVA , 4th Ed., Goodrich and Tamassia, (Wiley, 2006)

    Java Language References (Not Required)

  • Java, Java, Java!, 3rd Edition , R. Morelli, (Prentice-Hall, 2006)
  • Java in a Nutshell, 2nd Edition, David Flanagan, (O'Reilly, 1997)

    Lab Grades

    Most weekly labs will not be graded. These sessions will focus on a programming exercise and the Lab Instructor and TA will provide assistance, and answer questions. However, even though these sessions are not graded, you are required to complete the lab exercise. Missed labs should be completed in a timely fashion and are subject to the same penalties as missed lectures. There will be three or four graded labs during the semester. During these labs, you will be given a programming problem but the Instructor and TA will not provide help on the programming exercise, although they will be available to help with system problems.

    Programming Assignments

    There will be 2 out-of-lab programming assignments. These will differ from lab exercises in that you will be asked to design, code, test and debug an entire program on your own and you will be evaluated on the program's design, correctness, and readability.

    Homework/Quizzes

    The online course schedule lists the reading and homework for each lecture session. These assignments should be done BEFORE coming to class. We will try to use the lectures to go over questions that come up in the reading or homework. There may be periodic quizzes on the reading and homework.

    TA Sessions/Study Halls

    To help establish a supportive environment for the homework and reading assignments, the TAs will conduct regular evening study hall sessions.