Welcome to Data Structures!
You’re in the right place if you want to improve your Java programming skills and learn lots about the various ways to organize data efficiently for your applications.
Basics
Catalog Description: This course covers the analysis, design, and implementation of data structures including arrays, stacks, queues, linked lists, binary trees, heaps, balanced trees, and graphs. Other topics include sorting, hashing, Java generics, unit testing, and benchmarking. Course work involves both written homework and Java programming assignments.
Prerequisite(s): 600.107: Introductory Programming in Java or 600.120: Intermediate Programming.
Policies: Please read the course policies and take them to heart.
Coordinates
- Instructors: Joanne Selinski and Peter H. Fröhlich
- Piazza: https://piazza.com/jhu/spring2017/600226
- Lecture (Joanne): Monday, Wednesday, Friday, 1:30 pm – 2:45 pm
- Lecture (Peter): Monday, Wednesday, Friday, 3:00 pm – 4:15 pm
- Location (both): Shaffer 301
Text Books
There is no required text book for this course, but it’s highly recommended that you obtain reference material to supplement lecture. Here are some suggestions.
Algorithms and Data Structures
- Shaffer, Cliff: OpenDSA. Interactive online text. (An older version is available in print if you prefer that.)
- Sedgewick, Wayne: Algorithms. Fourth Edition, Pearson, 2011. Also available online at JHU.
- Cormen, Leiserson, Rivest, Stein: Introduction to Algorithms. Third Edition, MIT Press, 2009. Also available online at JHU. (This text is often required for 600.363/463: Introduction to Algorithms.)
- Weiss: Data Structures and Algorithm Analysis in Java Third Edition, Pearson, 2012.
Programming in Java
- Dean, Dean: Introduction to Programming with Java: A Problem Solving Approach. Second Edition, McGraw-Hill, 2013. (This text has recently served as the required text for 600.107: Introductory Programming in Java.)
- Sestoft: Java Precisely. Third Edition, MIT Press, 2016.
- Deitel, Deitel: Java How to Program. Ninth Edition, Pearson, 2012. Also available online at JHU.
- Flanagan: Java in a Nutshell. Fifth Edition, O’Reilly, 2005. Also available online at JHU.
Other Resources
Algorithms and Data Structures
- algoviz.org collection of visualizations for various data structures and algorithms
Programming in Java
- Java API description of Java classes and methods
- Code Examples from Intro Programming in Java (600.107); look in the sub-directories for examples of each topic.
Unix and Linux
- Joanne’s CS@JH Account Basics
- Joanne’s Unix Overview describes key commands
- An excellent Unix Tutorial
- A printable Unix Reference Card
- Learning emacs: Reference Card, Beginner’s Tutorial, GNU Emacs Tutorial, GNU Emacs Reference Card
- Learning nano: Nano Tutorial, GNU Nano Website
- Learning vi: Reference Card, Beginner’s Guide, Cheat Sheet Tutorial, Interactive Tutorial
- Windows users can download putty for remote access to CS Linux machines