Using Data Structures, Spring 2020


Course Description:
In this course we will both study commonly used data structures, and develop programming skils that go further than what we might see in an introductory programming course. Our programming language of choice will be Java, but the concepts and techniques we will see apply equally to programming in any object oriented or imperative language. As an application domain, we will be writing programs to solve real life problems. In terms of data structures, we will see lists, stacks, queues, trees, and graphs, among others, as well as techniques for sorting and searching. Students should expect to have programming assignments close to weekly, as well as two midterm exams and a final exam. Please note that this course is not a substitute for COMPSCI 187. If unsure of whether this course or COMPSCI 187 is more appropriate, please contact me at jaimedavila@cs.umass.edu.

Please note: This course meets, as a lecture, Tuesdays and Thursdays from 2:30-3:45 PM. In addition, students need to register for one of several lab sessions. Lab session all meet on Mondays, from 9:05-9:55, or from 10:10-11 AM, or from 12:20-1:10 PM.

Instructor: Jaime Davila

Textbook:
Java Software Structures: Designing and Using Data Structures Fourth edition, by Lewis and Chase

Grading scheme:
Midterm #1 12.5%
Midterm #2 12.5%
Final exam 25%
Assignments 50%


General course outline
Weeks Topic Details
1 Quick review of Java Input/Output, conditional statements, loops, functions, arrays, objects
2, 3, 4 Lists Append, insert, delete, search, introduction to algorithm analysis, code testing and debugging
5 Stacks Push, pop
6 Queues Enqueue, dequeue
7, 8 Trees terminology: node, root, child, parent, leaf
types of trees: ordered, unordered, binary, non-binary, balanced
add(), delete(), search(), traversal()
9, 10, 11 Graphs representations: lists, matrices
operations: AddVertex(), AddEdge(), Neighbors() types of graphs: connected, oriented, complete
auxiliary structures: maps and sets
12 Sets union, intersection, difference, subset, is_element_of, size.
13, 14 Maps put, get, remove
15 Implementing linked lists where we will see my favorite operations, inserting and deleting elements from the middle of a list.