Course Information for Fall 2017
|
Instructor Information
Prof. Stephanie R. Taylor (Lecture A)
Prof. Zadia Codabux (Lecture B and Lab C)
Prof. Caitrin Eaton (Labs A and B) |
Course Description
Focuses on the common structures used to store data and the standard algorithms for manipulating them. Standard data structures include lists, stacks, queues, trees, heaps, hash tables, and graphs. Standard algorithms include searching, sorting, and traversals. Along with implementation details, students will learn to analyze the time and space efficiency of algorithms and how to select appropriate data structures and algorithms for a specific application. In homework, labs, and programming projects, students will implement their own data structures and make use of existing libraries to solve a variety of computational problems.
Learning Goals
- Students understand the advantages and disadvantages of fundamental data structures and can implement them using object-oriented design principles.
- Students understand, can implement, and can calculate the time and space efficiency of classic search, sort, and traversal algorithms, including the use of big-Oh notation.
- Students understand the tradeoffs between different implementation of data structures and algorithms and can make appro- priate design decisions based on application data requirements.
- Students can use fundamental data structures and algorithms appropriately to solve a variety of computational problems.
- Students can communicate the result of their work and describe an algorithm.
Textbooks
You may choose from any number of Data Structures with Java textbooks that are available, however, we do not require any specific text. There are also lots of on-line resources available, as listed below.
Online Resources
Algorithm Visualization:
Links to web sites comparing Python to Java:- Java Tutorial for Python Programmers
- Java vs Python comparisons
- Table of differences between Java and Python
Links to free online data structures textbooks:
- A Practical Introduction to Data Structures and Algorithm Analysis, Java version, by Clifford Shaffer
- Introducing Data Structures with Java, by David Cousins
- Data Structures and Algorithms Using Java, by William McAllister
Links to Java online documentation, tutorial, and sample code:
- Java (& Swing) Tutorial
- JDK 1.8 Library API
- Sample code demonstrating basic Java syntax
- Practice problems that can be written and checked for you within the web page --click on the "(parent)" popup menu to choose a problem and then click "Change folder:"
Links to free online Java help:
- CodingBat (a website for practicing writing Java code)
- JavaRanch (a friendly website where you don't get attacked for asking "stupid" questions)
- StackOverflow, cs.stackexchange.com, programmers.stackexchange.com (websites where professionals ask questions -- it is probably best not to post beginner questions here)
Links to free Java development environments:
- Online IDEs
- Beginning and Intermediate IDEs
- Advanced (industrial strength) IDEs