CSCI H343 Data Structures Fall 2025

Indiana University, Fall 2025

This course studies the fundamental ideas for correctly and efficiently analyzing large amounts of data, such as DNA sequence databases and geographic information. These fundamental ideas come in two kinds: algorithms and data structures. Algorithms are instructions for solving problems and data structures are strategies for organizing information on computers. To implement algorithms and data structures correctly relies on software engineering skills such as testing, debugging, and reasoning logically about the code, which we practice in this course. Efficient algorithms require appropriate data structures, and vice versa, so the study of algorithms and data structures is tightly linked. In this course we learn about the algorithms and data structures that form the building blocks for many of Today’s large-scale computer systems. We apply these ideas to solve challenging problems in bioinformatics and geographic information systems. Warning: a possible side-effect of taking this course is doing better on job interview questions.

Lecture

Labs

Expect at least one quiz per month during lab time.

Instructors

Teaching Assistants

Office Hours

Office hours with TAs are in Luddy Hall Room 0121.

Time Monday Tuesday Wednesday Thursday Friday
10am          
11am     Jeremy    
12pm          
1pm          
2pm Matei Calvin Matei    
3pm         Calvin
4pm   Jeremy      
5pm          

Textbook

Data Structures and Algorithm Analysis in Java, 3rd Ed. by Mark A. Weiss

Slack (communicating with instructors and other students)

Signup

Assignments, Collaboration, AI, and Office Hours

You may work together with other students on the assignments.

You may use Artificial Intelligence.

You may come to office hours to get help from Real Intelligence.

You are responsible for learning all of the material. The midterm and final exam questions are designed to test whether you learned everything from the assignments.

Schedule

Day Lecture Topic Reading Due Assignments and Due Dates Link
Aug. 25 Introduction      
Aug. 27 Arrays, Rotation, Testing Ch.1    
Aug. 29   Lab: Array Search and Testing code, test
Sep. 1 Labor Day (no class)      
Sep. 3 Algorithm Analysis Ch.2    
Sep. 5   Project: FloodIt! code
Sep. 8 Algorithm Analysis, Merge Sort Ch.7 Sec.6    
Sep. 10 Linked Lists and Abstract Data Types Ch. 3 sec. 1-5 Homework 1  
Sep. 12   Lab: Merge Sort submit
Sep. 15 Programming in Deduce with Linked Lists Programming in Deduce    
Sep. 17 Sorting: Insertion, Quick Ch.7 Sec.2,7    
Sep. 19   Lab: Linked Lists in Deduce submit
Sep. 22 Writing Proofs in Deduce Proofs in Deduce    
Sep. 24 Binary Trees and Binary Search Trees (BST) Ch.4 Sec.1,2,3 Homework: Deduce Proof Exercise 1 submit
Sep. 26   Project: Segment Intersection (BST) code, test
Sep. 29 More Proofs and Induction      
Oct. 1 Balanced Search Trees (AVL) Ch. 4 Sec. 4    
Oct. 3   Project: Segment Intersection (AVL) code, test
Oct. 6 Review for Midterm Exam      
Oct. 8 Midterm Exam      
Oct. 9     Homework: Quick Reverse Correct
code
Oct. 10 Fall Break      
Oct. 13 Discovering and Generalizing Lemmas      
Oct. 15 Hash Tables Ch. 5 sec. 1,2,3,5,6 Homework: Deduce Proof Exercise 2 code
Oct. 17   Lab: Hash Table code, test
Oct. 20 Heaps and Priority Queues Ch. 6 sec. 1-4,9    
Oct. 22 Binomial Heaps and Queues Ch.6 Sec.8 Homework: List Search Correct code
Oct. 24   Lab: Heap  
Oct. 27        
Oct. 27 Review Solutions: Quick Rev, Proof Ex. 2      
Oct. 29 Graphs and Breadth-first Search Ch. 9 sec. 1,3    
Oct. 31   Lab: Binomial Heaps code, test
Nov. 3 Depth-first Search Ch. 9 sec. 6    
Nov. 5 Shortest Paths Ch. 9 sec. 3    
Nov. 7   Lab: Connected Components, Homework: Search is O(n) in Deduce Connected Components Submit Code, Connected Components Submit Test, Search is O(n) Submit
Nov. 10 Union Find Ch. 8    
Nov. 12 Minimum Spanning Tree Ch. 9 sec. 5    
Nov. 14   Project: Routing Wires, Homework: Insertion Sort Correct Insertion Sort Correct Submit, Routing Wires Submit
Nov. 17 Backtracking Ch. 10 sec. 5    
Nov. 19 Dynamic Programming Ch. 10, sec. 3    
Nov. 21   Lab: work on Routing Wires,  
Nov. 24-28 Thanksgiving      
Dec. 1 DNA Alignment      
Dec. 3 More Dynamic Programming      
Dec. 5   Lab: DNA Sequence Alignment,
Quiz 3 (take home) on Hash Tables, Heaps, and Connected Components,
Homework: BST Correct
BST Correct Submit, DNA Code Submit, DNA Test Submit
Dec. 8 Code Review      
Dec. 10 Review for Final Exam      
Dec. 12   Lab: Review for Final Exam  
Dec. 15 Final Exam: Monday, 8am-10am, in SY 137      

Resources

Grade Weighting

Late Policy

This policy applies to labs, projects, textbook exercises, and quizzes. For quizzes, you can do a make-up quiz during office hours. This policy does not apply to the midterm and final exam. When you complete something up to one week late, there is a 10% deduction to its grade.

100% up to the due date
90% up to one week after due date
0% after one week past the due date