- Prof. Dancy's Site - Course Site -

CSCI 204 (Data Structures and Algorithms) Final Project


Phase 2 Page, Final Phase Page

Objectivs & Overview

Project Deliverables

Project Point Breakdown

Project Milestones & Dates

Teams of three students

Teams will be assigned by Prof. Dancy


Objectives (Through all phases)

Combating crime one data point at a time!

Scruffy the crime dog wants you to take a bite out of crime

Final Project Overview

Back to shortcuts



You're group is an elite group of developers that have been contracted by the Chicago Information Sciences Department. You've been asked by the Police Chief to develop a new police patroll dispatch system that his officers can use to fight crime in the most efficient way possible.

Police chief (simpsons) IMAGE
The police chief is relying on you to help combat crime

The Chief made this back of the napkin drawing to help you think about what he envisions as the final system (the Decision Engine)

Confused gif

To help with this, he's given you a dataset of previous crimes so that you can decide how you'll handle those new data that you'll be reading in.

You will carry out the following steps (not necessarily in order) to bring your project from concept to completion:

The starter code

class ChicagoCrimeFun:

	def init(self):
		Constructor that could do several things, including read in your training data

	def build_loc_priority(self):
		Should be used to build your location-priority AVL tree

	def build_crime_priority(self):
		Should be used to build your location-priority AVL tree

	def decide_next_patrol(self, new_request=None):
		You will need this later, but I'm just giving this here for you to keep it as a placeholder

Phase 1 Objectives

Back to shortcuts

1. Getting Familiar with the dataset

The first step is to explore the dataset a bit. Your dataset is contained in the file called Chicago_Crimes_2018-2019_Train.csv.

As indicated by the name, the values in this file are comma-separated.

2. Using AVL Trees to store your data and keep it in order

You will need to create an AVL tree class that you can use to store data so that you can make decisions on how to prioritize any crime coming in.

For your decision-making, you should store at least 2 AVL Trees:

How should I determine the priority?

Confused gif

This is part of the challenge! How should you determine priority? There might be many ways, but I'll leave it up to you to think about that.

3. Creating visualizations of your data

This part of Phase 1 is meant to give you an opportunity to find a visualization package you like and get familiar with it.

How do I draw this thing

Great question! There are several options out there for your AVL tree:

If you're talking about general drawing (e.g., drawing other aspects of those data you have):

How should I design my viz? What should my visualization convey?

4. Presentations

Each team will be required to give a ~6 minute presentation on their implementations and the visualizations that they've created for Phase 1. You should be sure your presentation works on the classroom computer sometime before your presentation date or you must bring your own laptop, and make sure you know how to project your display on your external monitor port.

These presentations should give a good background on your design choices and the reasons for those choices. It will also be your chance to quickly discuss issues you have had or did have w/ the project.

More specifically, your presentation must provide answers to the following:

5. README.md

In your submission, include a readme.md file named README.md that provides a brief statement of your project. Include any important details needed to run your program. Use the markdown format as an opportunity to pretty things up in your readme

6. Individual Reflection

Each person in your team will be required to give an end-of-phase (Final) reflection.

You should think of this like an additional journal, but specifically for the project.

This will be the time to reflect on:

Phase 1 Deliverables

Back to shortcuts

Initial information on your group

Have one group member submit to the assignment on Moodle:

Your implementation (Code)


In your submission, include a readme.md file named readme.md that provides a brief statement of your project.

Individual reflection

Phase 1 Point Breakdown (50 pts)

Back to shortcuts

A Note

This is your opportunity to complete specific tasks, but (largely) using your own design decisions and implementation decisions.

The visualizations are your opportunity to think creatively and to think about ways to visualize data structures so that they are useful (and hopefully cool!)

By using those data, you also get a first chance at making something else that kind of looks like the start of an AI system

In general, the break down used to grade this phase of the project is as follows:
Graded item Number of points
Initial group information submitted on time 5 pts
Location Tree works as it should (including being an AVL) 12 pts
Crime Tree works as it should (including being an AVL) 12 pts
Visualizations 6 pts
README.md 5 pts
Presentation 5 pts
Reflection (individual) 5 pts

Presentation Rubric

Graded item Number of points
Your solution to the problem posed during this phase 1 pts
Display of Visualizations created for this phase and raionale 1 pts
Discussion of current issues in project 1 pts
Discussion of things learned by each group member up to that point 1 pts
Group presentation time roughly evenly distributed 1 pts

Important Milestones

Back to shortcuts

Date Milestone
28-Oct Project assigned
30-Oct, 10:00pm Group Info Sheet due
09-Nov (in-class) Phase 1 Presentations, Phase 2 assigned
09-Nov 10:00pm Phase 1 Deliverables Due
16-Nov (in-class) Phase 2 Presentations
16-Nov 10:00pm Phase 2 Deliverables Due
04-Dec Final Phase Presentation
06-Dec 10:00pm Final Phase Deliverables Due

You can find Phase 2 here

You can find Final Phase here

Back to shortcuts