Syllabus

You can download a pdf of the syllabus here.

Lab Instructor

Erik Harpstead
eharpste@cs.cmu.edu
Office hours: Mondays 2:00-3:00 & Thursdays 11:00-12:00

Lab Coordinator

Anind Dey
anind@cs.cmu.edu
Office hours: by appointment

Lab Description

In this lab, we will apply the principles of graphical user interface (GUI) implementation through a series of lectures, demonstrations, and hands-on projects.

By the end of the lab, you will be able to create simple GUIs using HTML5 and javascript, understand GUI implementation principles, and know the components that are used when creating interactive interfaces.

Required Materials

Textbook: There is no required textbook for this course; supplementary materials will be available online for free.

Laptops: You will need to bring a laptop for in-class programming sessions.

Software: We will be developing GUIs using HTML5 and javasctript. There are a number of different software packages that can be used to develop HTML5. I am going to officially recommend Netbeans 8.0 (which you can download here: https://netbeans.org/downloads/index.html). There is no requirement that you use Netbeans yourself but be aware that any examples I give will be built within the system.

In addition to a platform for building HTML5 you will also need a modern browser that can run HTML5 to test projects. You can check the compatibility of your browser here: http://html5test.com/. For grading purposes I will be using the most recent version of the Chrome browser.

Lab Assignments

Grades for this lab will be assigned based on four projects:

Project 1a: Hello {name} (5% of grade): Due September 9th
Project 2: My Paint - Brush Selector (10% of grade): Due September 30th
Project 3: My Paint - Painting on the Canvas (20% of grade): Due October 14th
Project 4: FSMs & Input (20% of grade): Due November 4th
Final Project (45% of grade): Due December 2nd
Final presentations: November 25th and December 2nd

The scheduling of these assignments will change throughout the semester. The most up to date information will be available on the assignments page.

Collaboration Policy

It is fine to collaborate when working with general course materials, like the www.w3cschools.com and examples given in lab, and it’s fine to ask for help with specific debugging strategies. However, to learn the techniques taught in this class, you must practice them directly; therefore, all assignments are individual. You are not allowed to collaborate with other students in order to complete a project. This includes copying and pasting code from other students, using open source projects, and even discussing implementation strategies. Since every website you visit allows you to look at its html and javascript code it is impossible to avoid seeing others’ code. The intention of this policy is that you put forth an honest effort to learn the content. If you are ever unsure about where to draw the line between general collaboration and collaboration on the assignments, contact the course instructor to receive clarification. Any instances of cheating will result in a failing grade on the assignment in question.

Attendance

Attending labs will help you complete the assignments more easily and earn a better grade. They also provide time to learn collaboratively and work together on the group assignments. Of course some students will be able to complete the assignments more easily. If you are able to work well without the instructor's help, you may do so. However, attendance on presentation days is mandatory. These will help others to learn from you and help you develop an intuition of what is easy and difficult. Each presentation day you miss (without explicit written permission) will result in a 1/3rd of a letter grade penalty on your semester grade.

Late Policy

Projects are due by the beginning of class (10:30am) on the given due date. Each day that the project is late, 5% will be deducted from your assignment grade. If you know that you will need to submit late due to a conflict, contact the instructor ahead of time to arrange an extension.