
Sinbad is a software library for Java, Python, and Racket that makes it very easy to uniformly access online data sources provided in standard formats (CSV, JSON, XML).
If you are a novice programmer, you probably should go through the tutorials below after installing Sinbad. Experienced programmers may benefit more from the quick start guides. You will also find links to a quick reference and detailed API documentation below.
For a list of data sources, visit the Bazaar .
Installation
Instructions for:
Quick Start
These links provide a concise introduction to the most prominent features of the Sinbad library. Use these if you are experienced in the programming language that you are using:
Tutorials
These pages provide a more leisurely and explanatory coverage of the features of the Sinbad library in the respective language. These are good if you are learning to program for the first time and are interested in using Sinbad to access data.
- Java/Processing
- Python
-
Racket
This set of tutorials/guided activities roughly follows the sequence of topics in How to Design Programs, 2nd edition.
- Expressions & Weather Data (simple expressions/data)
- Functions on Weather Data (atomic data)
- Describing Differentials (intervals)
- Bike Share Usage Fees (enumerations)
- Structures with Weather Data (simple structures)
- Latitude/Longitude Functions (simple structures)
- Nested Structures with Weather Data (nested structures)
- Bike Share Trips and Users (itemizations/nested structures)
- Simple Lists with Earthquake Data (lists of strings/numbers)
- Bike Share User Ages (lists of atomic data/non-empty lists)
- Mapping Quakes (lists of structures)
- Alternate: Selecting & Mapping Quakes (lists of structures + abstract list processing functions)
- Weather Stations and Observations (lists of structures)
- Kiva.org Microfinance Borrowers (lists of structures + abstract list processing functions)
Quick Reference
These may be used as “cheatsheets”.
API Reference
Publications & Presentations
- ACM SE ‘20 paper “Lightweight Automated Structure Inference and Binding of Data Sources to Predefined Data Types”
- SIGCSE ‘18 panel “Preparing, Visualizing, and Using Real-world Data in Introductory Courses”
- CCSCSE ‘18 paper “Automated inference of fixed-width data formats”
- CCSCNE ‘18, CCSCSE ‘17 workshop slides
- ITiCSE ‘16 paper: “A Generic Framework for Engaging Online Data Sources in Introductory Programming Courses” [ local copy] [ slides]
- SPLASH-E ‘15 workshop presentation: “A Generic Framework for Engaging Online Data Sources in Introductory Programming Courses”
- SIGCSE ‘14 poster: “Towards engaging big data for CS1/2” [ local copy]
About the name
SINBAD was selected as a rough acronym for Structure INference and Binding Automatically to Data – the main idea behind the library initially developed in Java. The name was also selected to invoke the sense of adventure, magical experience, and fantastic achievement reminiscent of the voyages of Sinbad the Sailor in the stories of the Arabian Nights. Through this library, we hope to help students experience some of the adventure and magic of Computer Science early on in their programming courses.
Contact
Bug reports, suggestions for improvement, code contributions, or requests for help using the library are very welcome.
Use this form or email: sinbad.data@gmail.com.