CSC301: Syllabus

Contact Information

Instructor:James Riely
Home Page:
Address: School of Computing, DePaul University
243 South Wabash Avenue
Chicago, IL 60604-2301
Office:CDM 845
Class Page:
Class Hours: Mon/Wed 3:10pm-4:40pm in CDM 226 [Section 502]
Online, Anytime [Section 410]

Course Homepage for Lectures

Mailing List

You must subscribe to the course discussion forum on google groups. Do it as soon as possible.

The discussion forum is an extension our time in class. This is particularly great for students that miss the live lecture. If you are watching the class online, you should write down any questions that arise, including the time from the recording for reference. Then send the list of questions to me, and I will post a reply to the group.

I will also use Teamviewer for communication. With teamviewer, you can show me your computer screen while we talk over the phone.


This is the second course in a two-course sequence on data structures using Java. The course focuses mainly on the following data structures, their analysis, and their applications: trees (search trees, balanced search trees), heaps, associative arrays, hash tables, and data structures for representing graphs. The implementation of the basic operations on each data structure are discussed and analyzed in terms of their efficiency. The applications discussed highlight and exploit the unique characteristics of the different data structures, and emphasize problem solving and recursive thinking.

From Wired Magazine: Code is far from a utilitarian means to an end. Like painting or sculpting, it's a medium with which you can create something. And as such, code can take many forms: beautiful or ugly, elegant or clunky.



Lecture Plan

The following lecture plan is tentative and subject to change as the course progresses.

Lecture slides will be available after each lecture. They will not normally be available before the lecture.


CSC300/402 C- or better.


If you are delayed in getting the texts, you can view them online via Safari.

Required Books

Core Java SE 9 for the Impatient, 2nd Edition [Amazon, Indiebound]

by Cay Horstmann (Addison-Wesley, 2017)

Available as Ebook

Available online via Safari

Companion site.

Older edition is fine.

Algorithms 4e [Amazon, Indiebound]

by Robert Sedgewick and Kevin Wayne (Addison-Wesley, 2011)

Available as Ebook

Available online via Safari

Companion site.

Do not get an older edition. They are completely different books.

Recommended Books

Schaum's Outline of Data Structures with Java 2e [Amazon, Indiebound]

by John Hubbard (Schuams, 2009)

This book is a good source of example problems with solutions.

Available as Ebook

More books

Algorithms 4e (with videos) [Amazon, Indiebound]

by Robert Sedgewick and Kevin Wayne (Addison-Wesley, 2011)

Available as Ebook

How to Think Like a Computer Scientist

by Allen B. Downey.


An good introduction to Java.

Skip the GridWorld chapters, which are intended to help with the AP exam in CS.

See also these lecture notes from MIT. The first three lectures are particularly useful.

Java for Python Programmers

by Brad Miller.


See also here.

Introduction to Programming in Java (Chapter 1)

by Robert Sedgewick and Kevin Wayne


This is the first chapter of the introductory text written by the authors of our primary textbook.

It presents the same material as section 1.1 of the primary text, but at a slower pace.

Effective Java 2e [Amazon, Indiebound]

by Joshua Bloch (Addison-Wesley, 2008)

Available as Ebook

Available online via Safari

The algorithms text describes all of the Java that is required for the class. The discussion is terse, making it an excellent reference. If you would like a longer discussion of Java, you might want a supplementary text. In this case, you might consider one of the following.


We will discuss concepts in class.

You will have weekly programming assignments.

Getting the homework correct is not enough. The first time you solve something it could take days, and may require help. Once you get a solution, you are not done.

From the Chronicle of Higher Education: People often mistake familiarity for understanding. They open the textbook after getting home from a lecture, and they recognize the material. They think: I get this. Then they take a test -- and bomb it.

I do not give out solutions to homework problems.

How to succeed:


You must attend class!


Grades will be determined as follows.

You must pass the final exam in order to pass the course.

DePaul's academic integrity policy

For in class students: Participation will consist of me calling on students in class. If you are not here or don't hear, then you will lose participation credit.