Course Learning Goals

At the end of the semester you should be able to:

  1. write sophisticated programs in Javascript that perform dynamic manipulation of the DOM, deal with external data (JSON or other formats), and implement meaningful user interactions
  2. understand how Web APIs work and use them effectively in your own web applications to dynamically get public data or apply API methods to access a user's personal data
  3. use a full-stack Javascript platform such as Meteor to create web applications that store user data using MongoDB
  4. create interactive visualizations of data using existing Javascript libraries (e.g. D3.js)
  5. critique code from your peers or other external sources using technical language that indicates your understanding of topics and issues

Transferable Skills

In addition to becoming great web developers, in this class we will also work on these transferable skills:

  1. Learning to learn new technologies quickly
  2. Be persistant in face of uncertainty and challenges
  3. Improving at communicating problems and solutions in writing
  4. Collaborating with peers in solving complex problems

Assessment of Goals

For purposes of grading, the above goals have been embedded in a series of activities in which you will engage during the semester.

  1. Achievement Milestones [50% or 60%]
  2. Personal Blog, Collaboration and Contribution, Code Reviews [25%]
  3. Group Project [15%] [10%] (changed on April 3rd)
  4. Individual Project [10%] [15%] (changed on April 3rd)

Honor Code

In this class, collaboration is encouraged and rewarded. However, you should always be honest about your own contribution and give credit to your peers for their contribution when due (there will be an automated system for giving points to your peers during the semester - stay tuned!). While you can work in groups for solving the AMs (see next section), you should always type the code yourself, comment it according to you understanding, and upload it to your personal CS account.

The only time during the semester in which you are required to work entirely on your own is the final individual project. This will serve you to personally assess whether during the semester you have built up enough skills to be able to complete a project on your own from start to finish.

Achievement Milestones

The course is organized around six achievement milestones that will enable you to gradually increase your skill level and achieve the course goals. An achievement milestone (or AM for short) is a mini-project for the implementation of a web application. We will start with simple AMs and the level of complexity will increase over time. We will work together as a class to reach each AM before moving to the next one. Each AM ends with a variation on the theme. For example, if in AM2 we will learn how to create a mashup using the Facebook API, which requires user credentials to access data, a variation on the theme is to create an application that uses another API, for example, Instagram or Twitter. There are six AMs, but everyone can choose to drop one AM in case you are not able to complete it for various reasons (travel, being sick, overloaded with work, etc.) If you complete all six AMs, you can use the extra points towards the other course assessments (with a discount, that is, you cannot use an AM to entirely eliminate your Individual Project).

Individual Project

This project is the only project during the whole semester in which you will work entirely on your own. The topic is open, you will only be required to use some of the tools and skills that you learned in class to implement it. Every student will meet in person with the instructor in the week of May 11-15, 2015 to present the project and answer questions about it. Details about the individual project will be published after Spring Break (six weeks before the end of semester, as required by the College requirements for final papers and projects).

Group Project

You will create teams of two to three students to work on a project that will implement a sophisticated web application that uses at least two different Web APIs, contains some kind of interactive visualization and can store user data either in the form of personal settings and user preferences or previous history.

There will be a in-class presentation that will be videotaped by PLTC public speaking tutors and an in-class discussion to highlight what was good and what can be improved in the presentations.

Hackathon Participation

The Wellesley CS Club is organizing a hackathon for the weekend April 17-19. I encourage you to participate in the hackathon and have fun. You can participate with your group project team in the hackathon and work on the project that you’ll submit for this course. Participation in the hackathon is voluntary. If you participate and work with students who are not in our class, you may not use the code written by other students for credit in the course.

Personal Blogs

Each of you will create and contribute weekly to a personal Tumblr blog. There is a minimum posting of two reflection posts per week as well as four replies to your peers. The replies can be short ones (up to 250 characters), e.g., commenting on something they have written; or they can be longer posts to answer a question from a peer or make a contribution to the class. We have a Tumblr Aggregator program that will aggregate all student posts in one single place for your convenience. Blogs can be anonymous, in that only you and the instructor can know the real identity of the blog. After the end of the semester, you can choose to publish the blog under your name as part of your portfolio. Our Tumblr Aggregator keeps track of your posts and publishes their count.

Collaboration and Contribution

In addition to working with your peers in different projects, you can answer your peers' questions via the Tumblr blog, using the #answer hashtag. You can contribute to the class by asking good questions with the #question hashtag or by writing posts that explain something that you have learned and is relevant to the course, using the hashtag #contribution. Finally, you can create learning materials such as transcribing class discussions, creating screencasts for doing certain things, or write simple tutorials of using APIs or some interesting Javascript libraries.

Code Reviews

Three times during the semester, you will be asked to read code submitted by one of your peers and provide feedback to them based on a provided rubrique. This activity serves to the goal of reading, understanding, and critiquing code from your peers.