CS310: Advanced Algorithms and Data Structures
Fall 2009

Department of Computer Science
UMass Boston

Class: Mo, We 4–5:15 in M-1-210

Instructor: Nurit Haspel
email: nurith@cs.umb.edu
Office: S-3-71
Office hours: Th 9:00–10:30AM


Course Description: A systematic study of the methods of structuring and manipulating data in computing. Application programming interfaces, data abstraction, and the encapsulation of implementations. The design and analysis of algorithms. Advanced techniques for program development and organization.

See the course syllabus for a detailed list of topics.

Prerequisites CS210, CS240, Math 140. There will be a qualifying programming assignment given on the first day of class (and posted on this page) that will allow you and me to determine how well you're prepared for the course.


Homeworks and programming assignments

Late days on programming assignments: All written (homework) assignments should be submitted on time! Each student has 5 late days for use over the programming assignments. Any number of days can be used on each assignment, totaling no more than 5 over the term. Write a note in your README file saying you are using late days so I will know.

Qualifying Assignment, due at class Monday, Sep. 14. SinglyLinkedList.java. Solution.


HW1 due Wednesday, Sep. 23, in class, on paper. Solution.

 

HW2 due Wednesday, Sep. 30, in class, on paper (except q1 which should be submitted in your account). Solution.

 

PA1 due Wednesday, Oct. 7 by midnight, in your cs310/pa1 directory. Solution.

 

HW3 due Wednesday, Oct. 14, in class, on paper. Solution.

 

PA2 due Wednesday , Oct. 21, by midnight, in your CS310/pa2 directory. Solution.

HW4 due Wednesday , Oct. 28, in class, on paper. Solution.

 

PA3 due Tuesday , Nov. 10, by midnight, in your CS310/pa3 directory.


 

Class Notes

Wed. , Sep. 9 notes . Intro to qualifying assignment, review of encapsulation, APIs.

Mon. , Sep. 14 notes . Runtime analysis, logarithms.

Wed. , Sep. 16 notes . The Collection interface, lists.

Mon. , Sep. 21 notes . The Collection interface - Sets, Maps.

Wed. , Sep. 23 notes . Maps, Hash tables, Hash functions.

Mon. , Sep. 28 notes . Hash tables, hash functions, linear and quadratic probing.

Wed. , Sep. 30 notes . Hash tables, hash functions, implementation of HashSet.

Mon. , Oct. 5 notes . Hash implementation, set operations.

Wed. , Oct. 7 notes . Set operations.

Wed. , Oct. 14 notes . Priority queues, event driven simulations.

Mon. , Oct. 19 notes . Sorting and binary search.

Wed. , Oct. 21 notes . Greedy algorithms, divide and conquer, dynamic programming.

Mon. , Oct. 26 notes. Handout - the Game API . Introduction to the Game project.

Wed. , Oct. 28 notes. Midterm review.

Wed. , Nov. 4 notes. Game project. Handout - the Game package


Textbooks

Required:

Mark Allen Weiss, Data Structures and Problem Solving in JAVA, (3rd Edition), Addison Wesley 2006). The source code is available on line.

Recommended supplement to help with JAVA.

Core Java 2, Volume I--Fundamentals, by Cay Horstmann and Gary Cornell, Sun/Prentice Hall, 7th or 8th edition, ISBN 0-13-148202-5 or 0-13-235476-4, at Amazon

Your Unix account

You will do all your work on the Department's network of UNIX systems, or deliver working code there. Apply for an account as soon as possible, following the instructions posted in the Unix lab (S-3-158). You need to apply for cs310 even if you already have a UNIX account here.


email

When your application for a course account has been approved you will have been added to the cs310 mailing list. You should check for email at least several times per week. If you wish, you can put a .forward file in your home directory to forward your email to another mailbox.This file simply contains your other mail address, such as user@yahoo.com.


On line material

All material for this course will be kept in /courses/cs310/public_html, which we will abbreviate as $cs310. It is visible from our Unix network and on the Web as http://www.cs.umb.edu/cs310. This file is $cs310/index.html .


Written work

There will be about 6 programming assignments and about 5 written homeworks, a midterm and a final exam. For more information, see the syllabus.

Grade Composition

Also, you will have to pass the final exam to pass the entire course.


Honesty

You must do your own work in this course. You are encouraged to discuss problems/projects with classmates, or to ask for help with debugging. When you do share ideas or get help you must acknowledge that help in writing. However IT IS NOT ALLOWED TO USE ANOTHER STUDENTS CODE IN ANY WAY WHILE DOING YOUR HOMEWORK, even if you acknowledge that.

Working from home

All the software you need to work from home is available for free. We have written a primer on setting up your home pc here. Warning: In the past, many students have had problems setting up their home computers. We will provide some informal help with this task (and some of you may be able to help others) but we cannot provide technical support for your home computer. Difficulties you encounter working from home will not be accepted as excuses for late assignments. You may bring your laptop to office hours for some help (no guarantees!)

Resources