Major Projects

Project One: JavaScript Program Due Thursday, September 21, 11:59pm CT

Project Description

This project asks you to build a small program in JavaScript that runs in the browser. It will operate on a small piece of JSON data that you will provide. The program should manipulate that data in some way, and present it in the browser.

Project Goals

  • Understand the basics of JavaScript values, variables, functions, and objects
  • Understand the basics of writing, accessing, and manipulating data in JSON
  • Learn to use a version control system (Git and GitHub)

Deliverables & Milestones

  1. A single HTML page that either loads your program as a separate .js file or includes your JavaScript on the page, inside of <script> tags
  2. A GitHub repository containing the draft of your project. Link posted to Basecamp by Thursday, September 14
  3. Substantive comments on all other student projects by September 18
  4. An email to the instructor containing the projects two final deliverables by September 21, 11:59pm CT:
    1. A 4-5 sentence self-critique memo of your project and your progress in class to this point
    2. The https:// link to your project’s GitHub repository

Requirements

  • Your JSON data must:
    1. Use obvious/understandable attribute names written in snake_case
    2. Include some piece of date/time information, in a standard format
    3. Include a number, a string, and a boolean
    4. Include an array (which could itself contain numbers, strings, and/or booleans
  • Your JavaScript program must:
    1. Run error-free in the browser, but also provide some form of error handling
    2. Operate on a standards-compliant DOM
    3. Be attached to an HTML/CSS design that has the foundations of responsive design
    4. Be written in native JavaScript (no CoffeeScript or other pre-processors)
  • Organized, readable source that is hand-written and original (no WYSIWYGs or code-generators, no Bootstrap or other off-the-shelf HTML or CSS frameworks)
  • A Git repository with frequent commits and meaningful commit messages that accurately reflect each set of changes that you make
  • GitHub repository must contain only the files and commits from this project

Project Two: Client-Side API-Driven App Due Sunday, October 15, 11:59pm CT

Project Description

This project asks you to develop a single-page site that is progressively enhanced with JavaScript and that responds to user input to pull in data from an open JSON API that does not require authorization.

Project Goals

  • Understand and execute progressively enhanced, unobtrusive and asynchronous JavaScript
  • Work with an open API, learning how to hit its endpoints in response to user input
  • Process JSON-formatted data and present it in valid well-formed semantic HTML, styled with CSS

Deliverables & Milestones

  1. A single HTML page that loads your program as a separate .js file
  2. A GitHub repository containing the draft of your project. Link posted to Basecamp by Thursday, October 5
  3. Substantive comments on all other student projects by Sunday, October 9
  4. An email to the instructor containing the projects final deliverables by Sunday, October 15, 11:59pm CT:
    1. A 4-5 sentence self-critique memo of your project and your progress in class to this point (write in the body of the email)
    2. The https:// link to your project’s GitHub repository

Requirements

  • Your JSON data API must:
    1. Be openly available (no authentication required)
    2. Allow Cross-Origin Resource Sharing (CORS) through headers or another mechanism
  • Your JavaScript program must:
    1. Run error-free in the browser, but also provide some form of error handling
    2. Operate on a standards-compliant DOM
    3. Be attached to an HTML/CSS design that has the foundations of responsive design
    4. Be written in native JavaScript (no CoffeeScript or other pre-processors)
    5. Use asynchronous pattersn to retrieve API data
  • Organized, readable source that is hand-written and original (no WYSIWYGs or code-generators, no Bootstrap or other off-the-shelf HTML or CSS frameworks)
  • A Git repository with frequent commits and meaningful commit messages that accurately reflect each set of changes that you make
  • GitHub repository must contain only the files and commits from this project; you are encouraged to use and further improve your HTML files from Project 1

Project Three: Server-Side API-Driven App Due Wednesday, December 7, 11:59pm CT

Project Description

You will develop an application in Node.js that pulls in external data from at least one third-party API. There is an option as to what kind of application you will build: either a command-line application (e.g., for storing API data for further analysis in another piece of software) or a web application (e.g., for creating an interface that displays a mashup of data coming from different APIs).

Project Goals

  • Learn to authenticate to and access third-party APIs in accordance with their host’s terms of service
  • Learn to build an application in Node.js and draw on the community-developed modules available through the Node Package Manager (npm)
  • Understand and apply techniques for asynchronous, non-blocking I/O
  • Develop a useful and interesting way of manipulating the data from third-party APIs

Deliverables & Milestones

  1. A proposal memo that outlines the application that you intend to build, and a week-by-week plan for how you intend to complete it. Due 10/30.
  2. An email to the instructor containing the project’s final deliverables (by December 7, 11:59pm CT):
    1. A 5-8 sentence self-critique memo of your project and your progress in class this semester
    2. The https:// link to your GitHub repository

Requirements

  • If you choose to create a command-line application, it must:
    • Follow the conventions of POSIX-style command line applications
    • Do some basic data checks and sanitization to protect against malicious/malformed code originating from third-party sources
    • Be able to run unassisted for long periods of time (e.g., to capture data from an API over a period of hours or days or more)
    • Provide output to the console and/or to log files that indicate its functionality and any errors that it encounters
    • Writes data to a structured set of flat files or to a database or similar data store
    • Include a small test suite to ensure its functionality as you make changes to it
  • Organized, readable source that is hand-written and original (no WYSIWYGs or code-generators, no Bootstrap or other off-the-shelf frameworks)
  • GitHub repository must contain only the files and commits from this project
  • If you choose to create a web application, it must:
    • Do some basic data checks and sanitization to protect against malicious/malformed code originating from third-party sources
    • Feature some kind of interface to enable a user to interact with or change the data
    • Communicate with the browser using either AJAX or Websockets
    • Deliver to the browser standard forms of HTML5 and CSS; the use of a library such as jQuery is encouraged for DOM scripting tasks
    • Include a small test suite to ensure its functionality as you make changes to it
  • Project 4 (COM 533 Only): Better Know a Format Due Thursday, November 2, 11:59pm CT

    Project Description

    For this project, you will prepare for other members of our class a report on some format or vocabulary used in data exchange. Formats will be assigned on Basecamp.