ITMD 569 Policies

See the ITMD 469/IT-D 825 Policies

Course Description

This course covers fundamental principles and methods for programmatically accessing and parsing data returned by internet-available data APIs. The course guides students in carefully examining the structure of API endpoints expressed as URLs and the conventions of RESTful architecture. Students will learn to locate and read the documentation for data APIs and gain familiarity with API documentation conventions, while also approaching documentation with a healthy degree of skepticism. Students will also engage in a thorough study of three common, platform-neutral data-serialization formats: comma-separated values (CSV), Extensible Markup Language (XML), and JavaScript Object Notation (JSON).

In anticipation of the problems of parsing API data at scale, the course emphasizes approaches to non-blocking I/O through JavaScript’s growing set of asynchronous features and patterns. Students will build on their existing knowledge of JavaScript to begin to write next-generation JavaScript according to the ECMAScript 6, 7, and 8 specifications both in the browser and server-side, in Node.js. Although JavaScript is the course’s shared programming language, the overall principles of API consumption the course covers are applicable to any language capable of opening remote URLs, receiving data, and parsing the result.

Additionally, the course looks at building interfaces for end users to query API data and receive useful results targeted to specific tasks or informational needs. While the course emphasizes the consumption and manipulation of API data, the course concludes by looking at techniques, approaches, and conventions for producing a basic data API for others to consume.

Course Outcomes

Students completing this course will learn to:

  • Recognize the conventions of API documentation, including coverage of authentication, endpoints, responses, and acceptable use as governed by both professional ethics and legal documents, such as terms of service
  • Programmatically access and parse API data in a variety of data-serialization formats, including CSV, XML, and JSON
  • Leverage JavaScript and the asynchronous features of Node.js to consume API data and deliver it in web-friendly formats
  • Effectively structure, design, and present consumed API data to serve specific user needs through responsive web interfaces
  • Thoughtfully evaluate and adopt only the most standards-compliant documentation, libraries, and development techniques for accessing, authenticating to, and parsing API data
  • Write valid, well-formed semantic HTML; error-free, backward- and forward-compatible CSS; and error-free, progressively enhanced JavaScript over HTML pages that continue to function in the absence of JavaScript
  • Make use of validators, linters, and custom test suites to ensure code quality both in terms of expected function and adherence to published standards and documentation
  • Effectively comment on and format source code for maximum readability
  • Track the development of a project over time and collaborate with others using version control

Course Objectives

At the conclusion of this course, successful students will be able to:

  • Explain the client and server architecture of the internet and related web technologies for the delivery and consumption of data APIs
  • Recognize and parse API data in common serialization formats, including CSV, XML, and JSON
  • Identify and write syntactical and semantic features of ECMAScript 6, 7, and 8, such as arrow functions, block-scoped variable declarations, and template literals
  • Use Babel and other JavaScript preprocessors, compilers, and polyfills to generate client-side JavaScript from next-generation ECMAScript syntax to achieve broader backward-compatibility
  • Make use of asynchronous features of JavaScript, including Promises and the async/await operators, to handle non-blocking I/O
  • Engage in agile, iterative development supported by version control
  • Write useful, descriptive messages attached to granular commits in a version control system
  • Make liberal use of feature and release branches in a version-control system to enhance experimentation and streamline problem-soliving

Books and Technologies

Required Books

  • Haverbeke, Marijn. Eloquent JavaScript. 3rd ed. No Starch Press. Available on the web in multiple electronic formats.
  • Subramaniam, Venkat. Rediscovering JavaScript: Master ES6, ES7, and ES8. Pragmatic Bookshelf. $24.95 (beta eBook; must be bought directly from Pragmatic Bookshelf). ISBN 9781680505467
  • Wilson, Jim R. Node.js 8 the Right Way: Practical, Server-Side JavaScript that Scales. Pragmatic Bookshelf. $19.95 (eBook). ISBN 9781680501957

Recommended Books

  • Morgan, Joe. Simplifying JavaScript: Writing Modern JavaScript with ES5, ES6, and Beyond. Pragmatic Bookshelf. $25.95 (eBook). ISBN 9781680502886
  • Swicegood, Travis. Pragmatic Version Control Using Git. Pragmatic Bookshelf. $25.00 (eBook). ISBN 9781934356159

My policy for assigning books: Required Books are all required in the edition indicated; the total retail pricetag for the entire course should be less than $100 (this one is $95 on the high end, assuming you opt for the electronic formats, including the Recommended Books); and each book should be worthy of a place on your bookshelf or electronic device of choice long after the class has ended.

I want to help you build your professional library while also being sensitive to your personal finances. While many things about the course calendar may change, the reading schedule will not. I invite you to hold off on purchasing specific books until closer to the time that we read them.

Required Materials and Technologies

  • A blank, bound paper sketchbook of 100 pages or more
  • An email account that you check regularly
  • A browser- or cloud-based bookmarking scheme to aid your information management
  • A Basecamp account (invite will arrive via email); Basecamp, not Blackboard, will be where we coordinate our work and communication in- and outside of class.
  • A GitHub account (see note about anonymity in the course technology policy below)
  • A personal computer, running a Unix-based operating system, such as Linux, BSD, or MacOS. A Linux running virtualized on Windows is fine, but Windows itself is not—you will need access to a variety of dev tools that are hard to come by on Windows. Your computer should also have the following software installed:
    • A plain-text editor capable of syntax highlighting; set up to use UTF-8/Unicode character encoding and Unix-style line endings (LF), entabbed with spaces (two spaces per tab)
    • Firefox Developer Edition (free)
    • Git (free)
    • Node.js (free)

Grading Policy

  • Project 1: 10pts
  • Project 2: 10pts
  • Data Format Report: 10pts
  • Weekly Problems: 20pts
  • Basecamp Participation: 50pts
  • TOTAL: 100pts

A = 90+ pts; B = 80-89pts; C = 70-79pts; E =< 69 pts

Grading Criteria

  • A - Student has turned in all required components of a project, the work is exceptional in quality, and reflects the student’s dedication to adjusting the project to his or her own interests.
  • B - Student has turned in all required components of a project, and the work is exceptional for graduate work.
  • C - Student has turned in all required components of a project and submitted work that is acceptable as graduate level.
  • E - Student has not turned in all required components of a project.

Assignment Submission

All major projects for this course will be submitted via email to the instructor, at, as will your initial Weekly Problem (thereafter, the instructor will directly check your fork of the Weekly Problems repository for your work). Emails should not include email attachments, but rather URLs pointing to your project’s Git repository. Examples will be shared on Basecamp.

Late Work

I do not accept late work. All work must be submitted before the date and time specified in each project description. Weekly Problems are due Sunday nights. My deadlines, including for draft work, are no different from exam dates in classes that have exams. Treat them accordingly.


This is a discussion-based course. There is no lecture component or videos. Your active participation in reading, problem, and project discussions is required both for your own success in the class, and for the success of the class as a whole: 50% of your grade is based on your participation in discussions. I do not give reading quizzes, but I assign a lot of reading. And I expect you to be prepared to discuss that reading all week long on Basecamp. A participation grade of A means you’re posting an average of 12 or more times per week, and that your posts include both discussion threads that you initiate, and comments on threads initiated by other students and the instructor. While in most classes you're probably encouraged to come up with good answers, this class is equally weighted to reward you for asking good questions. A grade of B means you’re posting about 10 times a week. A C is around 8 posts per week, and anything less than that is a failing, zero grade for participation, which by simple math will translate into a failing grade for the course.

Course Technology Policy

Technology is an essential part of learning and day-to-day living. It is therefore essential to this class. You are just as responsible for learning to command various technologies as for any other course content. Difficulty with technology is not an acceptable excuse for being unprepared for class or late with assignments.

If you are having trouble with technology or any other material covered in this course, it is your professional responsibility to do research beyond the resources and guidance provided in class and find supplemental materials that work for you. I also encourage all students to meet with me during my office hours or at another arranged time. I prefer that you contact me via Basecamp Ping, email, or GChat well in advance of assignment and project deadlines.

Note that posting to Basecamp for help with broken or malfunctioning work is far better than turnin in a project with an excuse like “I just didn’t get it.” For most of the semester, it is expected that you’ll show up with broken work. When you’re learning, effort is more important than perfection. Just be sure to put in the effort early, and not the night before a project is due.

Also, I have asked you to sign up for a GitHub account for this class. Note that GitHub accounts are public, as are most social-type accounts. To protect your privacy you are certainly allowed to use a pseudonym/alias for GitHub and any other account. You may also push to repositories that you keep private, so long as you add the instructor as a collaborator, for grading purposes. At the same time, you might want to think about the high value of establishing GitHub and other accounts under your own name or professional alias. Public accounts where you conduct yourself professionally might well be an asset to your online presence, improving the search results that future schools or employers turn up when they look for you on Google and elsewhere.

Academic Integrity

As with any course at IIT, you are expected to uphold the Code of Academic Honesty as described in the IIT Student Handbook. All work for this course must be your own original effort, including print and digital page design and computer code. Summarizations and quotations of text, as well as any use of open-source code libraries and images not of your own making, should be clearly cited as legally and ethically warranted and rhetorically appropriate. Access, storage, dissemination, and other use of data from third-party sources must conform to the source’s terms of service, licensing, and other relevant legal and ethical restrictions.

If you are at all uncertain as to whether you are submitting work that in whole or in part may violate the Code of Academic Honesty, please contact me immediately and before the work is due. The consequences of academic dishonesty are severe. Any student who violates the Code of Academic Honesty will be subject to expulsion from this course with a failing grade, and I will report the student to the Dean of the School of Applied Technology, who may take additional disciplinary action, including reporting violations to the relevant offices of Undergraduate or Graduate Academic Affairs.

Special Needs Statement

I place a very high value on developing courses that are welcoming and accessible to all students. I will make additional reasonable accommodations for students with documented disabilities. In order to receive formal accommodations, students must obtain a letter of accommodation from the Center for Disability Resources. The Center for Disability Resources is located in IIT Tower, 3424 S. State Street - 1C3-2 (on the first floor). Contact the Center by telephone at 312-567-5744, by TDD at 312-567-5135, or via email at

Students who have any difficulty (either permanent or temporary) that might affect their ability to perform in class should contact me privately, either in person or electronically, at the start of the semester or as a documented difficulty arises. Methods, materials, or deadlines will be adapted as necessary to ensure equitable participation for all students.