Assignments
| Topic | Learning Goals | Tools | |
|---|---|---|---|
| 1 | X Programming |
Drawing. Tunability. Low-level event handling.
Program: Mad Birds |
XLib |
| 2 | Toolboxes |
Model-View-Controller. Using Java widgets.
Tentative Program: Interface to Quest web service. |
Java, Swing, XLib |
| 3 | Custom Controls |
Developing your own control. Interaction design.
Program: Timeline control for a file browser. |
Java, Swing |
| 4 | Mobile Apps |
Developing a mobile application for Android.
Tentative Program: Interface to Quest web services. |
Android Development Kit |
| 5 | Direct Manipulation |
Introductory graphics, including using affine
transformations.
Program: Paper dolls |
Java |
General Policies and Advice
- The assignments involve large amounts of programming and require significant time to complete. A common mistake students make is to seriously underestimate the time required to create a truly interactive application: Interactive applications are complex and require developers and designers to attend to numerous details before the application can be easy-to-use, intuitive, and useful. However, if done well, you will construct applications that others will find entertaining and enjoyable to use.
- Assignments are due at 10pm on Sunday evenings. They will be accepted until 8:00am on the following morning, but 10% will be deducted from the mark for each hour (or part thereof) that it is late.
- An SVN repository will be set up for each person in the course. You will submit by checking your work back into the repository. As a back-up, please check in your work often, particularly if you are working on the virtual machine.
- All posted assignments should be considered drafts until two weeks prior to the due date, at which time the requirements will be fixed (though clarifications may occur within these last two weeks). Any revisions will be announced in class and the assignment web page will be annotated with the changes. That said, any additions/revisions to assignment drafts are generally minor in nature, so you should start working on the assignment as soon as it is posted.
- Unless otherwise specified, all assignments are individual assignments. You are expected to do your own work. If you use code from a third party (such as code examples from the web, but not code from another student in the course, past or present), you must properly attribute this use in your code. While it is expected that you will incorporate and modify code from external sources, it is expected that such code reuse will constitute a significantly small portion of your final code. If there are any doubts, contact the prof. We reserve the right to check your code against others' code and previous terms' assignments to detect instances of cheating.
- You may not use GUI builders for any assignment, unless otherwise noted.
- We typically supply code to assist you with the
assignments. The code is provided with the following caveats:
- While we strive to provide you with bug-free sample code, Murphy's law states that there are likely to be bugs in the code provided (and with ~175 people stress-testing it, bugs will be found). If bugs are found, we will inform you in class about the bugs and any steps necessary to correct them, including links to any updates. The assignment web page will also be updated
- The code is a starting point for your assignment. In most cases, you will need to fill in holes, modify, and extend the code to make it functional for the assignment
Participation
In addition to the above assignments, each student is expected to prepare an exam study question drawn from a randomly assigned lecture. Students will post their study questions to a separate Piazza instance. The instructor will comment, where necessary, to ensure reasonable and accurate questions.
It is highly likely that some of these questions will appear on your exams.
Study questions are due by the following class time. Submission is via Piazza (be sure to do it in CS349E!) in two parts. The first part, posted anonymously but to the entire class, is the question. The second part contains the proposed answer. It has exactly the same title and is posted privately.
Study questions will be assigned a mark based on a two-dimensional scale: the quality of execution and Bloom's taxonomy.
![]() Source: Wikipedia |
Bloom's taxonomy recognizes that simply regurgitating facts (Remembering) is not the same level of learning as being able to apply new skills in a novel situation (Apply) (for example). "Learning at the higher levels is dependent on having attained prerequisite knowledge and skills at lower levels." Learning at the higher levels is more difficult (but more rewarding) than learning at lower levels.
Similarly, writing exam questions that test rote knowledge (bottom level of the hierarchy) is not particularly hard. Writing exam questions that test higher levels is more difficult. So, like some Olympic sports have both a "difficulty" and a "execution" score, so will our exam questions. For each question, the instructor will judge the level on Bloom's taxonomy and place it in a "quality of execution" bucket. The mark will then be derived from the following table:
| Execution | |||
|---|---|---|---|
| Bloom Level | Acceptable | Good | Excellent |
| Analyze etc | 4 | 5 | 5 |
| Apply | 3 | 4 | 5 |
| Understand | 2 | 3 | 4 |
| Remember | 1 | 2 | 3 |
All assignments are individual efforts and academic integrity policies apply. In particular, exam questions are not to be taken from the textbook(s).
