Summary

In nearly every software application, data must be stored and managed to meet the needs (i.e. time and space efficiency) of the user. This course introduces basic data structures and their application using the Java programming language. We will first review the basics of Java and introduce object-oriented design as a strategy for writing understandable and maintainable software. We will then introduce a mathematical framework for evaluating the efficiency of Java code, and develop implementations of basic data structures such as lists, stacks and queues. We will then study searching and sorting algorithms, and introduce recursion as a strategy for improving the running time of these algorithms. This will lead us to study more advanced data structures that are defined recursively, such as trees and heaps. If time permits, we will cover additional topics, such as hash tables and the storage and exploration of graphs.

At the end of this course, students should be able to:

Topics Covered

  1. Java Programming and Object-Oriented Design
  2. Algorithm Analysis
  3. Lists, Stacks and Queues
  4. Algorithms for Searching and Sorting Lists
  5. Recursive Algorithms for Searching and Sorting
  6. Recursive Data Structures
  7. Hashing
  8. Graph Algorithms

Meeting Time/Place

Lectures: MWF 11:15a-12:05, Eng Lab 303
Discussions: Th 9:30-10:45p, 11:15-12:30p, 1-2:15p, Eng Lab 307

Instructors

Lectures: Prof. Ramgopal Mettu
Telephone: 413.545.4217
Office: Knowles Eng. Bldg. 211D
Email: mettu@ecs.umass.edu
Office Hours: Th 4-5p

Discussion Sessions: Alodeep Sanyal
Telephone: 413.545.3899
Office: Knowles Eng. Bldg. 314
Email: asanyal@ecs.umass.edu
Office Hours: Tu 11-12p

Teaching Assistants

Email: ece242@ecs.umass.edu
Office: Marcus 214

NameOffice Hours
Sailaja MadduriMonday 12:15-1:15p
Deepak UnnikrishnanWednesday 9:30-10:30a

Textbook & References

Software