CSC300: Data Structures I (Winter AY1617)
James Riely

Class Links

Syllabus

D2L

Google group

(Mail the class) (Mail the prof)

Code examples ZIP

(Public javadoc) (Private javadoc) (Source)

Online students

(Exams)

Tutors

Student Services

Textbook

Safari online version

Booksite

Youtube

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

Interview questions

Interview questions

techiedelight leetcode adventofcode hackerrank codinggame code gamkedo teachyourselfcs gainlo
Recursive drawing

Fractals

Recursive drawing

(Examples)

A coding walkthrough

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. Java and Eclipse: Arrays, Iteration and Recursion (1.1) [03/27-29]
2. Induction, Iteration and Recursion [04/03-05]
3. Simple Objects and Linked Structures (1.2, 1.3) [04/10-12]
4. Mutating Linked Structures (1.3) [04/17-19]
5. Union Find and Intro to Analysis (Linear and Logarithmic) (1.5, 1.4) [04/24-26]
6. Midterm [05/01-03]

Midterm exam in class Monday May 1, 2017

7. More Analysis, Resizing Arrays (1.4, 1.3) [05/08-10]
8. Elementary Sorts, Objects as Data: Comparable, Objects as Functions: Comparator (1.2, 2.1, 2.5) [05/15-17]
9. Priority Queues and Heaps (2.4, 6.1) [05/22-24]
10. Mergesort and Review (2.2) [05/31]
11. Final exam [06/07]

Final exam Wednesday June 07, 2017, from 11:30 AM to 1:45 PM

Contact Hours
Class Hours: Mon/Wed 1:30pm-3:00pm in CDM 224 [Section 602]
Online, Anytime [Section 611]