Welcome to Data Structures and Algorithms II -C950! This course focuses on non-linear data structures, hashing algorithms, dictionaries, sets, self-adjusting data structures, self-adjusting heuristics, NP-Completeness, and Turing machines, all using Python examples.
If you've passed software I and II, proceed to step 1; otherwise, go here (link to be added). For those coming from Java or C#, Python is not a big adjustment. Every language has its nuances, but the overall approach to any object-oriented language will be similar. Search and learn specific needed skills, e.g., reading a .csv file with Python 3. As you become accustomed to Python's approach and syntax, you will be able to focus less on Python and more on problem-solving. Run your code often and use the debugger! Avoid discovering a logic error 500 lines after the fact.
Understanding the project
Watch Getting started in C950
Read C950 directions and FAQ and review student comments in the course chatter.
Hash table
Watch C950 - Webinar-1 - Let’s Go Hashing - Recording, hash table with lists, reading CSV files into Python
Write a hash table using only Lists that does the following:
Can store the package data (preferable as objects).
Uses a package's ID to map the package data to a location in a data structure.
Uses a package's ID to retrieve the package ID faster than a linear search.
Has one self-adjusting element.
Reading and Importing Data
Create a package class and write code to import the package objects into your hash table.
Import the distance data into a data structure
Write a function that can look up the distances between any two addresses.
Main file
Watch C950 - Webinar-4 - Python Modules - Recording (10 min)
Run everything through your main file.
Simulate the delivery
Create a truck class
Manually choose package lists and simulate the delivery with no optimization by recording when a package leaves for delivery, when a package is delivered, and how many total miles are traveled.
The user-interface Write a console user-interface that does the following:
Reports on the total miles traveled by all trucks
Allows the user to enter a specific time, and reports the status of every package at that time.
Improve the mileage and find a delivery solution.
Write code that using at least one self-adjusting element to improve mileage and/or find a delivery solution meeting all the requirements.
Watch C950 - Webinar-2 - Getting Greedy, who moved my data - Recording (14 min)
Watch C950 - Webinar-3 - How to Dijkstra - Recording (20 min)
The directions above meet the requirements to pass. If you'd like to submit a good project, use something more advanced to make the code fully self-adjusting, e.g., simulated annealing or genetic algorithm.
Weekly C950 live webinars: Computer Science Webinar Calendar
C950 - Webinar-2 - Getting Greedy, who moved my data - Recording (14 min)
C950 - Webinar-2 - Getting Greedy, who moved my data - Presentation PDF
C950 - Webinar-2 - Getting Greedy, who moved my data - Complete Python Code
From <https://srm--c.na127.visual.force.com/apex/coursearticle?Id=kA03x000000sp95CAA>
Assessment Code: NHP2
Performance Assessment
Current Version: 2
Unofficial Task Directions C950 directions and FAQ (it's recommended you use this.)
IDE PyCharm
Sample Algorithm Overview.docx (don't use this as a template)
official rubric requirements (don't use)
C950 Task Directions and Rubric Summary (use this).
Additional Resources
LibreOffice (Free Office version for Linux, Mac, and Windows)
Learning Resources ~ always available ~ to improve:
Academic Confidence, Study Skills, Test Anxiety, Test-Taking Skills. Find them at
Student Success tab / Student Success Center / View Our Learning Resources (large white box top right)