INF 133 - User Interaction Software - Fall 2018


Policies and background for IN4MATX 133, Fall 2018 Quarter. All syllabus content is subject to change, particularly prior to the start of the quarter.

Course Description

From the catalog:

Introduction to human-computer interaction programming. Emphasis on current tools, standards, methodologies for implementing effective interaction designs. Widget toolkits, Web interface programming, geo-spatial and map interfaces, mobile phone interfaces.

In practice, every instructor takes a slightly different bend to these topics. I focus on covering modern technologies for web and mobile development and how device capabilities can impact interface design and software architecture.

All students must have taken I&C SCI 45J with a C- or higher. This course will also assume students have mastered material in prior courses.

Learning Objectives

At the end of this course, students should be able to:

  • Program web applications in HTML, CSS, and JavaScript which are sensitive to screen size and a person's abilities
  • Leverage external data sources and APIs via asynchronous HTTP requests
  • Develop hybrid mobile applications which take advantage of on-device utilities
  • Describe affordances of different screen modalities and input techniques
  • Choose an appropriate web or mobile development framework for a given task
  • Implement and articulate best practices for authentication, storage, and communication in web and mobile


Slack Channel: Sign up here.

Course Staff Email:

The course staff gets a lot of email from the University, other faculty, staff, and students about all sorts of topics. In a class as large as this one, it’s easy for student questions to get lost. Our course Slack channel is therefore the best way to get in touch with us around assignment questions or clarifications. This lets you get support and advice from the whole class, not only the course staff. Slack is also more conducive to the resolving the types of questions which typically arise when programming.

When you do send an email, please send it to the course list rather than emailing Professor Epstein directly. Doing so will help ensure the message does not get lost and will help the entire course staff stay informed.

This course will be Slack-first. This means that updates to the course, etc. will usually be shared on Slack first and may or may not be repeated over email or in class.

Required Text and Materials

Given the rapid changes in web and mobile development, any materials relying on a particular technology will quickly lose their value as a reference material. Articles online serve as a great resource, and all required materials will be made available. Check the resources tab for some pointers, and feel free to send the course staff any resources you find useful as the course progresses.


Grades will be calculated as follows:

  • Assignments: 46%
    • A0: Getting to Know You, Getting to Know Us (1%)
    • A1: Responsive Portfolio in HTML and CSS (9%)
    • A2: Javascript & TypeScript (9%)
    • A3: Angular (9%)
    • A4: Ionic (9%)
    • A5: Databases & Sensing (9%)
  • Quizzes: 44%
    • Top 4 out of 5 quiz scores (11% each)
  • Participation: 10%
  • Professional penalty: up to -100%. We expect students to be respectful to course staff and classmates, and unprofessionalism can be held against a student when calculating final grades. UCI's Grounds for Discipline describes the types of cases where this penalty could be applied. This penalty will only be assessed in extreme cases; we will give a warning prior to any action.

Areas may be curved to ensure grades align with student successes toward learning objectives. We expect any curve would be "up" rather than "down".

Passing the course requires completion of A0 and at least a 50% on participation. Grades follow theofficial UCI policies (e.g., D- and above are passing grades).

Assignment Submission

Git and GitHub are among the most popular tools for managing code today. To give you practice with these tools, most assignments will therefore be submitted through GitHub Classroom. Assignments involving quizzes or document uploads may be submitted through the course Canvas page. Each assignment description will clarify how it should be submitted.

Assignment Due Dates

Unless otherwise specified, all assignments are due “at the end of the day” on whatever date is listed on the calendar. In practice, we will implement this on Canvas as 4:00am the *following* day. Meaning, an assignment listed on the calendar as due on Friday, October 23rd must be submitted by 4:00am on Saturday, October 24th to be considered “on time”.

Late Assignments

Late assignments will be assessed a 20% penalty for each 24-hour period after the due date. Assignments more than two days late will not be accepted.

Each student will be granted two “late days” which they can use on any assignment over the course of the quarter. It would help the course staff if students uploading late assignments could indicate in the assignment description if they are using one, or both, late days. Late days cannot be "split" (e.g., a few hours here or there).

Exceptional circumstances such as family or personal emergencies, illness, or professional-related travel will be evaluated on a case-by-case basis. Please email the course staff if an exceptional circumstance occurs.


Quizzes will occur approximately every other week during discussion section, resulting in five quizzes total. A student’s top four quiz scores will count toward their grade (at 11% each), while the lowest score will be dropped.

Unless otherwise arranged, quizzes will take place in-person and on paper during the first half of discussion section (first 30 minutes). If an exceptional circumstance precludes you from attending discussion on a quiz day, please email the course staff (ideally at least a day *before* the discussion section). Given the flexible drop policy, it is possible that no additional action will be taken.

Quizzes will span the theoretical knowledge in the course, such as tradeoffs between frameworks and input techniques. Though quizzes may additionally draw on concepts from the assignments, they will rarely require writing any code. Though quiz topics will usually be specified ahead of time and relate to recent topics, they may occasionally revisit older material.


Participation will be operationalized through clicker responses to in-class questions during lecture (multiple per class, none during discussion). Peer instruction questions via clickers is a proven technique for facilitating learning. Questions will follow a think-pair-share format. Students will first respond individually, then discuss their responses with their neighbors, share their discussion with the class, and finally the correct answer will be revealed and explained.

Students must therefore either purchase an iClicker remote, use the iClicker Reef app for iOS or Android, or use the iClicker website. The decision of which option to use is up to the student. That said, the teaching staff encourages use of the iClicker remotes, as they are more reliable and produce fewer distractions (see the Use of Electronics in Lecture section).

You must register your clicker through the course's Canvas page. Follow "iClicker registration" in the navigation menu on the left side of the page. The UCI Clicker Guide describes how to find a clicker's ID and register it. It also offers instructions for registering via the REEF mobile app. Talk to the course staff if you're still having trouble after following the guide.

The correctness of responses will *not* be evaluated, only whether a student submitted a response on their registered device. Participation grade will be assessed by averaging participation scores for each lecture. Students will get full credit for a day's participation by submitting responses to at least 50% of questions asked that day. To account for help account for travel, etc. during the quarter, a student’s three days with the lowest score will be dropped.

Again, if you have an exceptional circumstance, please email the course staff. Given the drop policy, it is possible that no additional action will be taken.


Regrades for assignments, quizzes, or participation can be submitted via email up to 48 hours after a grade is posted. Regrade requests should articulate, in a half-page or less, what points are being requested and why the grade should be higher according to the rubric. This could be that the grader mis-entered the grade, did not realize that a student's work matched the rubric, or that the student provided a correct response which was not on the rubric.

Our experience is that about 10% of regrades result in a grade change and a lower percentage have any effect on overall grades. In a large class such as this one, regrade requests can create substantial additional work for the course staff. We may delay responding to any regrade requests until the end of the quarter and may only address those which could impact a student's final grade.


In alignment with the above, attendance at lecture is required if a student wants credit for participation. Giving your clicker to a classmate, etc. is an attempt to pass someone else's work off as your own (see the Academic Integrity section). Quiz sections are similarly required if a student wants the opportunity to take that week's quiz.

Barring exceptional circumstances, students should attend the discussion section they are registered for. If an unusual circumstance arises, please contact the course staff.

Discussion sections without a quiz are optional, but attending is a great opportunity to consult with the course staff and classmates.

Use of Electronics in Lecture

Use of laptops, tablets, phones, etc. is allowed during lecture. But we encourage you to limit your use. The evidence is clear: students take worse notes and perform worse on exams when they use devices during lectures. Device use additionally distracts nearby students, reducing their learning as well. We will do our best to ensure lecture is worthwhile, and we hope students come to class excited to learn.

Online Resources and Collaboration

In general, the course staff expects that you will look at code and examples from many online resources as part of the assignments, particularly to resolve syntax and understand frameworks. We expect that you'll use other libraries you find, and will even require it in some assignments. These practices are often critical to the work of developers today. The best developers are adept at interpreting the examples they see, customizing them to their specific situation, and citing their sources so they can find them later. We expect you to do the same.

While learning from examples is encouraged, attempting to pass an existing project or example from the web as your own is not allowed. If you ever have a question about what is or is not appropriate, feel free to ask the course staff!

Talking to classmates about class material, assignment requirements, etc. is a great way to verify ideas and get feedback. But this distinctly does *not* permit attempting to pass off someone else’s code as your own. Talking over ideas and approaches is allowed, but the work that you produce and submit must be your own.

The CSE department at the University of Washington, where Professor Epstein completed his Ph.D., had the Gilligan’s Island rule:

After discussing with someone, get rid of all written records of the collaboration (no whiteboards, email, paper, etc.) and then engage in a totally unrelated activity like watching Gilligan’s Island before returning to the work.
In essence, feel free to talk to others, but take a break to ensure you’ve learned from the collaboration rather than copied. The reference is dated, swap it out for whatever Netflix show or other activity you're in to.

Academic Integrity

Our hope is that you’re taking this class because you’re excited to build user interfaces and want to follow good principles for doing so. Our job as the course staff is to help facilitate your learning. The assignments, quizzes, and participation requirements in this course are designed to help toward that learning. Naturally, there will be ways to shortcut this learning to arrive at a desirable solution with the least amount of effort. But by doing so, you’re missing the opportunity to learn the topics.

As discussed above, acknowledge your sources. Attempting to pass someone else’s work off as your own is not allowed. If you do so, you will receive a failing grade for the assignment or the entire course at the instructor’s discretion. The course staff will report the incident to UCI’s Office of Academic Integrity & Student Conduct. What will follow will be unpleasant, just don’t do it.

If you’re having problems in this course, come talk to the course staff. The shortcut isn’t worth it.

For more info, take a look at UCI's academic integrity policy and ACM's. Talk to the course staff if you have additional questions.

As an instructor, allowing students to share their work online, such as publicly on GitHub, poses a dilemma. The benefit is that it can contribute to your web presence, offering a browseable portfolio piece to potential employers. But it can also serve as an online resource for other current or future students to copy from, rather than learn from. We ask that you do not make your work in this class visible online unless it it distinguishably different from the course assignment (e.g., an extended personal portfolio or Ionic app).


If you think you need an accommodation for a physical, psychiatric, or learning disability, please let the course staff know as soon as possible. Some aspects of the course including assignments, in-class activities, and teaching style may be modified to facilitate your participation and progress. If you have not already done so, consider contacting the Disability Services Center at or 949-824-7494. Information on registering with DSC is available at


This course and syllabus pull content from prior offerings of 133 by Don Patterson and Paul Lumsdaine at UCI as well as related courses by Joel Ross, Sean Munson, and James Fogarty at UW and Mark Sherriff at UVA. Thanks, everyone!