Course Information

Instructor:   Gabriel Kaptchuk
Office:   307 Malone Hall
Email:   gkaptchuk (at) jhu (dot) edu
Office Hours:   TBD

Instructor:   Joanne Selinski
Office:   225 Malone Hall
Email:   joanne (at) cs (dot) jhu (dot) edu
Office Hours:   TBD

TA:   Erin Chen
Email:   echen41 (at) jhu (dot) edu
Office Hours:   TBD

CA:   Eduardo Aguila
Email:   eaguila6 (at) jhu (dot) edu
Office Hours:   TBD

The course syllabus can be found here.

Don't forget to *see Piazza/Resources* for lecture notes, in-class worksheets, and other resources.

Textbook Reference: OpenDSA

Course Resources


Course Schedule

Schedule is pretty complete, but will be updated for assignment releases later.

Dates Topics Prep/Resources Assignments
Mon 7/1 Course Overview

Java review; Interfaces

Development Tools

OpenDSA Ch 1, (intro) Java Code Examples

OpenDSA Ch 4.1-4.3 & 5.1-5.5, Java Object-Oriented Tutorial

OpenDSA Ch 3.1-3.2, see Piazza Resources/General, Checkstyle website

Assignment 1 out, due Thu 7/4
Tue 7/2 Abstract Data Types, Arrays, Generics

Exceptions, Iterators

OpenDSA Ch 4, Java Generics

Iterator Interface, For-Each Loops

Assignment 2 out, due Mon 7/8
Thur 7/4 NO CLASS
Fri 7/5 Linked Array Implementation


Counting Calls

Wikipedia on Linked Lists, OpenDSA Ch 5.6-5.7, (Recursion review OpenDSA Ch 10)

overview, JUnit 4 website, OpenDSA Ch 3.9-3.13

Assignment 3 out (Pairs), due Thur 7/11
Mon 7/8 Searching & Quadratic Sorting

Asymptotic Complexity

OpenDSA Ch 7, Ch 13.1-13.7

OpenDSA Ch 6, 8

Tue 7/9 Stacks

Queues & Deques

OpenDSA Ch 9.8-9.11, wikipedia

OpenDSA Ch 9.12-9.14, wikipedia

Assignment 4 out, due Mon 7/15
Thur 7/11 Lists


OpenDSA Ch 9.1-9.7

OpenDSA 6.2, wikipedia

Fri 7/12 Midterm 1

Trees; Binary Trees

OpenDSA Ch 18.1, 12.1-12.8, Wikipedia tree, binary tree
Mon 7/15 Priority Queues, Heaps

More Priority Queues, HeapSort, Comparators

OpenDSA Ch 12.16-12.17, Wikipedia priority queue, heap

OpenDSA Ch 13.12, [Jb Website]

Assignment 5 out, due Thur 7/18
Tue 7/16 Maps and Binary Search Trees

Balanced BSTs

OpenDSA Ch 18.1, 12.1-12.8, Wikipedia tree, binary tree

OpenDSA 26.1

Thur 7/18 AVL Trees


OpenDSA 26.2, wikipedia


Assignment 6 out, due Mon 7/22
Fri 7/19 Divide & Conquer Sorting

Lower bounds, linear sorting, stable sorting

OpenDSA 13.9-13.11, Wikipedia mergesort, quicksort

OpenDSA Ch 13.13-13.17

Mon 7/22 Midterm 2

In class work time

Tue 7/23 Hashing and Hash Tables OpenDSA Ch 15, wikipedia Assignment 7 out (Pairs), due Sat 7/27
Thur 7/25 Graph Concepts

Graph Implementations

OpenDSA Ch 19.1-19.4, wikipedia
Fri 7/26 Shortest Path Problem, Dijkstras Algorithm

In class Assignment 7 work

OpenDSA 19.5, 19.8, wikipedia Assignment 8 out, due Thur 8/1
Mon 7/29 Minimum Spanning Tree

Union Find

OpenDSA 19.6-19.7, wikipedia

OpenDSA 6.2, 18.1-18.2, wikipedia

Tue 7/30 Test Processing, Huffman Codes



OpenDSA 12.18, wikipedia

OpenDSA 12.19, wikipedia

Thur 8/1 Misc


Fri 8/2 Final Exam