CS310 Home Page

CS310: Advanced Algorithms and Data Structures
  Fall 2020

Department of Computer Science
UMass Boston

Class: MW 7:00-8:15pm online. Details by UMB email.
Note that I have sent out the Zoom info. If you haven't received it, please email me at elizabeth.oneil at umb.edu.

Please make sure you have a device with camera and microphone for attending classes, office hours, and exams, preferably the same system you also use for programming for this course.

Instructor: Elizabeth (Betty) O'Neil
email: elizabeth.oneil@umb.edu
Office: M-3-201-20 (not available currently) 
Office Hours: MW 1:30-3:00, F 2-3pm by Zoom meeting 930 3005 8095, passcode in UMB email.

TA: Ramin Dehghanpoor (ramin.dehghanpoor001 at umb.edu)    

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 syllabus for a detailed list of topics. 

Prerequisites CS210, CS220, CS240.


Homework and programming assignments

Homework 1, Runtime Analysis, Java concepts, due Monday, Sept. 21 on Gradescope Solution
Homework 2. JDK Classes and their elements, due Monday, Oct. 5 on Gradescope Solution
Homework 3 Hashing, Inner Classes, More on Maps and Sets, due Thurs, Oct. 29 on Gradescope  Solution

Project 1 JDK Collections classes, Interfaces  Solution (both parts): pa1soln.zip
Part 1a due Sun Oct 11 by midnight (i.e., end of this day) on users1.cs.umb.edu in ~/cs310/pa1
Part 1b due Thurs., Oct. 15 by midnight on users1.cs.umb.edu in ~/cs310/pa1
RegexTokenizer.java

Project 2 (steps) Hashing and Map performance, due Friday, Nov. 6 by midnight in your ~/cs310/pa2 directory on users.cs.umb.edu
pa2setup.zip

Late days on programming assignments:  Each student has 5 late days for use over the programming assignments (the pa's, not the hw's).  At most 3 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 2 late days, or whatever, so I'll know when everyone's done.

Class Slides, Videos, Notes: finalized after class

Thanks to K. Malik for recording and cleaning up videos so that no faces are shown.

Wed., Sept. 9 slides (6pp) Introduction, slides (6pp) Runtime Analysis 
Mon., Sept. 14 slides(6pp) Runtime Analysis, part 2
Wed., Sept. 16 slides(6pp) APIs and Java interfaces for them slides (6pp) Intro to JDK Collections
    Video
    Code: BankAccount example: bankaccount bankaccount.zip
Mon., Sept. 21 slides(6pp) JDK Sets and their elements slides(6pp) JDK Maps
    Video
Wed., Sept. 23 slides (6pp) JDK Lists  slides (6pp) JDK Specialized lists, performance
   Video
   Code: TestArrayList.zip  ListRemove.zip  TestMap.zip (including FrequencyCounter)
Mon., Sept. 28 Finish JDK Specialized lists, slides (6pp) Intro to Project 1 (pa1) slides (6pp) Intro to Hashing
   Video
Wed., Sept. 30 slides (6pp) Hash Tables, also notes on inner classes and downcasting (near end of slide set, start of video)
   Video
Mon., Oct. 5 slides (6pp) More on Sets
   Video
Wed., Oct. 7 slides (6pp) Project 1 Ideas slides (6pp) Simulation and Priority Queues
Wed., Oct. 14 slides (6pp) Project1a Solution slides (6pp) Sorting: Review and JDK Support
Mon., Oct. 19 slides (6pp) Inheritance: via subclasses, interfaces
   Code: PersonStudent.zip
Wed., Oct. 21 slides (6pp) Algorithms: Divide and Conquer, Greedy, Dynamic Programming (with new slides on combo(n,k))
Mon., Oct. 26 slides (6pp) Intro to Project 2: Hashing slides (6pp) Algorithms: an Image Processing Example
Wed., Oct. 28 slides (6pp) Midterm Review
Midterm Exam: Mon., Nov. 2 at class time.
Practice Exam(html) (docx)  (Solution)
Wed., Nov. 4 slides (6pp) Topics  slides (6pp) Intro to Games

Textbooks 

Required: Algorithms, by Robert Sedgewick and Kevin Wayne 4th ed, by  (also used in CS210) website Library sources

Recommended: Mark Allen Weiss, Data Structures and Problem Solving in JAVA  (4th Edition), Addison Wesley 2010). website Not as good for algorithm explanation as Kleinberg and Tardos, but has Java code that we will be using for more complex applications than those in S&W. Can be rented (see eTextbook) from Amazon.

Recommended: Algorithm Design, Jon Kleinberg and Eva Tardos, Pearson, ISBN-13: 978-0321295354, ISBN-10: 0321295358. website No code, but excellent explanations for algorithms.
 

UNIX accounts, class email

You can do all your work on the Department's network of Unix systems, or you can work on your home computer and deliver projects to the Department's systems, but be sure to test them there. Either way, you need an account for cs310 at our site.

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/Linux network and on the Web as http://www.cs.umb.edu/cs310. This file is $cs310/index.html.

Resources

Gradescope info How to submit homework, etc.

Our Piazza Site for questions and answers. Please use a private question if you include a code snippet.    

Access to cs.umb.edu systems from offsite Logging in and transferring files.  

Student Information Form (for the first class)

Development Setup Installing Java on your home system. Installing eclipse. A few things needed on cs.umb.edu hosts as well.

Unix/Linux guide here.

Spring '20 class site

Java We are using version 8 (or 11 or higher). JDK API Language spec  Java classpath explainedJava 8 Double-colon explained

Using your programs from CS210: See cs210support.zip It has a sample program built outside the cs210 VM. Start by reading the README.