Skip to content
Snippets Groups Projects
Commit 8c73e7fb authored by Jennifer Mankoff's avatar Jennifer Mankoff
Browse files

Updated class learning goals

parent 7f24740f
No related branches found
No related tags found
No related merge requests found
......@@ -86,18 +86,11 @@ programmers. While we will consider applications from outside the
major, financial and other restrictions may limit
space for such students.
# Course Modules
| Module | Interaction Programming Theory | Programming Practice |
|---------------|-----------------------------------|-----------------------|
| Visual | - Interface Toolkits<br>- Interactor Hierarchy<br>- Peer Review<br>- Visual Design Tips | - Android Programming<br>- Drawing on a Canvas<br>- Bounding Boxes<br>- Animation |
| Layout | - Visual Layout<br>- Layout Constraints<br>- Layout algorithm | - Layout in Android |
| Accessibility | - Accessible Design Principles | - Building Accessible Apps |
| Events | - Input Devices and Types<br>- Event Handling<br>- Model View Controller<br>- Essential Behavior<br>- Finite State Machines<br><br> | - Java callbacks<br>- Event handling in Android<br>- Build a novel color picker interactor |
| Interaction | - Physical computing<br>- Motor Design Tips<br>- Predicting and testing interactor efficiency<br>- Application design principles<br>- Quantitative Study Design <br>- Data Analysis | - Building pop up menus |
| Behavior | - Theories of User Behavior<br>- Behavior Change<br>- Machine Learning<br>- Application Security<br>- Heuristic Evaluation | - Implementing a drawing program<br>- Implementing undo/redo feature |
## Drawing
# Course Learning Goals
The course learning goals focus on five topics: Drawing, Layout, Event Handling, Applications, and Communication.
### Drawing
How do I draw things on the screen? Do you know how to control what is shown to the user?
- Learn to use drawing abstractions such as [https://developer.android.com/reference/android/graphics/Canvas](Canvas) to programmatically draw on screen and use coordinate transformations to move and scale and orient them. You should be able to place a [https://developer.android.com/reference/android/view/View](View) anywhere onscreen simply by specifying it's upper left x/y coordinates.
......@@ -106,7 +99,7 @@ How do I draw things on the screen? Do you know how to control what is shown to
- Nice interactions often incorporate animation. You should be able to set up an animations using timing options such as slow in/slow out.
## Layout
### Layout
How do I set up an interface so that it looks the way I want and reacts properly to changes in orientation and size? Do you know how to implement a layout, supporting reactivity and so on?
- Be able to visually represent an interface as an [https://developer.android.com/studio/debug/layout-inspector](Interactor Hierarchy) (and vice versa). Given a picture of an interface, can you draw an interactor hierarchy that has all of the necessary components to be properly rendered as that interface? Similarly, given an interactor hierarchy, can you tell what interface it would be rendered as?
......@@ -114,7 +107,7 @@ How do I set up an interface so that it looks the way I want and reacts properly
Also, given an interactor hierarchy, you should be able to point at which interface images it matches, or edit it to add or remove a visual element.
- Design and implement your own a layout container that can properly lay out any number of child items, to a spec. For example, can you implement a two column scrolling layout, or the facebook newsfeed which dynamically shows things as you scroll? You will need to properly support dynamic addition and removal of child components, as well as properly reacting to changes in scale or orientation.
## Events
### Events
Events++ (4 Items)
How do I handle input from the user, both at the application level and within a specific interactor? An advanced but important aspect of android programming is implementing your own interactors. This is strongly tied to event handling because they can only be interactive if you know how to deal with events.
......@@ -123,7 +116,7 @@ How do I handle input from the user, both at the application level and within a
- Be able to build non-rectangular interactors and other useful interaction techniques. You will learn to use your knowledge of the event handling/bubbling algorithm to properly build non-rectangular interactors, lenses, and other special case input handling.
- Support a class of interaction techninques by building variations on a single interactor that all make use of the same finite state machine controller for their essential behavior. For example, a selection task might be handled as a pie menu or a linear menu. You should be able to accomplish this simply by varying the implementation of essential geometry for your interactor, without needing to modify the state machine underlying your interactor.
## Applications (4 Items)
### Applications
Learn to build an application that meets basic standards that requiry programmatic support for accessibility, security, and interactivity.
There are interaction programming concepts that need to be considered at the application level. These may not ever show up in a spec, but are still the responsibility of the implementer to consider. Some examples include making your interface secure; supporting undo; and making it accessible. Human behavior is another essential aspect of interface design you must consider. But how does it interact with interface programming? More specifically, this class will cover the following learning goals
......@@ -133,7 +126,7 @@ There are interaction programming concepts that need to be considered at the app
- Be able to assess potential security considerations with an app and fix them, based on android's best practices and information found on sites like PrivacyGrade.org
- Properly implement Undo in any interface to help users recover from errors. This requires an understanding of how to capture and store information about changes to an interface over time; and memory management so too much history isn't stored.
## Communication about app concerns
### Communication about app concerns
You are unlikely to be building an interface in a vacuum -- you will need to be able to read specs that are provided with you, identify potential problems, and advocate for new directions. These are communication tasks that are critical to success whether you are building interfaces or designing them. We will cover a sample of these in this class including:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment