CSC301: Data Structures II (Fall 2017/2018)
James Riely

News
2017/08/30
Welcome to the course home page! Useful links are to the left. Preliminary lecture slides and reading assignments are to the right. Slides are available if a check is shown; click on the check to see the slides. Reading assigments are listed beneath the lecture title; read this material before the lecture. Lecture slides are likely to change near the time of class.
Class Links

Syllabus

D2L

Google group

(Mail the class) (Mail the prof)

Code examples

(Public javadoc) (Private javadoc) (Source)

Code examples ZIP

Online students

(Exams)

Tutors

Student Services

Textbook

Booksite

COS226 at Princeton

Algs4 on Youtube

Algs4 at Coursera

Princeton Slides

(Demos)
Eclipse

Getting Started

Eclipse IDE Tutorial

Debugging Tutorial

More Tutorials

Java

Java Resources

Java API

Algs4 API

IBM Intro to Java Course

Java Tutorial

MIT 6.005 [Search]

How to Think Like a Computer Scientist

(PDF) (See also here and here.)

Java for Python Programmers

(PDF) (See also here.)
Important Parts of the Java Tutorial

Java Language

Exceptions

Formatting Output

Formatting Numbers

Collections

More Java

Lambda expressions

(From this text)

My Java Visualizer

(included in the code for the class)

Another Java Visualizer

GrepCode

Princeton Java Book

(First Chapter) (Creative Assignments)

COS126 at Princeton

Classmexer API

Recursive drawing

Fractals

Recursive drawing

(Examples)

A coding walkthrough

Interview questions

Interview questions

techiedelight leetcode adventofcode hackerrank codinggame code gamkedo teachyourselfcs gainlo
Algorithms

Foundations of Computer Science

A classic text.

Algorithm Visualizations

Java version

Visualizing Algorithm

Javascript Algorithm Visualizations

Sorting Visualizations

Sound of sorting

Visualizing data structures in javascript

Open DSA

(under construction)
Schaffer's textbook

Mergesort for linked lists

Algorithm Design: Parallel and Sequential

A more advanced text.
Lecture Materials
1. Trees, iteration and recursion (3.2) [09/06-11]
2. Binary Search Trees (3.2) [09/13-18]
3. Symbol Tables (3.1, 3.5) [09/20-25]
4. Balanced Search Trees (3.3) [09/27-02]
5. Hash Tables (3.4) [10/04-09]
6. Midterm [10/11-16]

Midterm exam in class Monday, October 16, 2017

Homework

7. Undirected Graphs (4.1) [10/18-23]
8. Directed Graphs (4.2) [10/25-30]
9. String sorts (5.1) and Tries (5.2) [11/01-06]
10. Data Compression (5.5) [11/08-13]
11. Final exam [11/20]

Final exam is on November 20, 2017, from 2:30 PM to 4:45 PM

Contact Hours
Class Hours: Mon/Wed 3:10pm-4:40pm in CDM 224 [Section 401]
Online, Anytime [Section 410]