ICS 10 • David G. Kay • UC Irvine

First Homework

There's some reading and preparation as part of this assignment, but for the main active part, part (d), you will work with a partner. We'll try to set aside a little time for choosing partners in Thursday's class, but in general it will be your responsibility to pair up with someone for each assignment. You can read more about working in pairs on the assignment page. Working in pairs is required, not optional; not having a partner for an assignment will affect your class participation score.

To help you find partners and register those partnerships, you will use the ICS 10 Partner App (at http://ics-10-partner-app.appspot.com). It should be ready for use by the end of the first week. The Partner App lists everyone in the class; you can modify your profile to control how you appear. It lets you send "partner requests" to other students and to accept (or reject or ignore) requests from other students. And it records who's partnered with whom (and who hasn't partnered).

If you haven't read the homework advice on the class assignment page, now's the time to do it. And if you agreed on the partnership face to face, don't forget to use the Partner App so your partnership is officially recorded.

A certain amount of frustration is inherent in working with computers; think of all the cartoons you've seen whose theme is frustrated computer users. People are complex (and diverse, messy, and not well understood) and computers, fundamentally, are mechanical and simplistic; we're not yet at the point when we can count on computer systems always to do what we expect. For most people, the satisfaction of completing a computing task makes up for the frustration experienced along the way and we hope that's the case for you. To keep your frustration level manageable, make a point of starting on each assignment early. That way, you have time to ask questions that will help you past any rough spots.

Part (a)

Complete the ICS 10 Questionnaire and do the other items on the syllabus under "What to do to get started …" Be sure you've read the rest of the syllabus, too.

Part (b)

Read the appendix of Blown to Bits, which describes how the internet works.

Using and understanding computer systems often involves mastering a lot of details. Good system design (using good abstractions) can help keep those details manageable, but stilll, it can seem overwhelming. Consider, for example, the number of buttons on the typical TV remote conntrol, or all the different features in Microsoft Word.

You'll also find a lot of details in the readings we assign. One of the goals of this course is to help you learn to navigate through detailed technical material. On the other hand, for this course you don't need the same level of detail as you'd need if you were planning on a career as a computer professional. Even though it may still seem very detailed to you, we've tried to hit an appropriate level in the readings and assignments we've chosen.

This guideline may help you determine which details in the assigned readings are important for you to learn: If concepts or terms we mention in class occur in the readings, you're responsible for them. But if the readings mention terms or concepts that we do not mention in class, we won't expect you to know them. In other words, when we write exam questions we're not going to go looking through the readings for topics we haven't already mentioned in class.

Part (c)

This quarter we're going to build some animations and simulations using a tool called Snap (related to tools called BYOB and Scratch). This is actually a form of programming, but it's not the painstaking, heavy-duty, industrial-strength, text-based programming you'd learn in ICS 31. Nor is our goal to turn you into programmers, even in Snap/Scratch; we just want you to have some experience with describing procedures that a computer can carry out. And besides, this kind of programming is fun.

Here's some more precise background: The original Scratch tool was developed at MIT; its home page is scratch.mit.edu. BYOB was a version of Scratch developed at Berkeley. BYOB stands for "build your own blocks"; it contains a few useful capabilities that original Scratch doesn't. Snap is the current, web-based version of BYOB that doesn't require you to install anything on your computer.

  1. We expect that you'll be able to do all your work using Snap on the web at snap.berkeley.edu (here's a direct link to the Snap start page). We also suggest that you use the Firefox or Chrome web browser; Safari is possible, but some students have reported confusion with exporting projects, and Internet Explorer does not always work reliably with Snap.
  2. View at least one Snap/Scratch tutorial on the web (e.g., on YouTube). Here are two possibilities: Tutorial 1 Tutorial 2. If you continue looking around on YouTube and elsewhere, you will see dozens of similar tutorial videos. Feel free to watch others (and if you find one you really like, drop us a message). But there's a limit to what you'll learn just by watching. You need to dive in, get your feet wet, and play around with Snap itself. This is true for learning any new software: Nobody learns just by reading the manual or viewing a tutorial; proficiency is a skill, and people develop skills by practicing them. This also means that you can't expect to have complete, perfect knowledge before you start working; just get started and your comfort level will increase as you continue working. Note, too, that there may be subtle differences between what's shown in a tutoral (possibly based on Scratch instead of Snap); use the tutorials as a broad overview of the process rather than a reference for precise details. If you find a discrepancy you can't work around, ask about it in Piazza (or by Email).

Part (d)

With your partner, do the following:

  1. As a warm-up, spend 20 minutes playing the game LightBot. The object is to drag commands into the "main method" and function boxes, choosing movement commands to make the robot visit each blue square and light it up (using the light-bulb command). See how many levels you can get through in 20 minutes; some of the higher levels are tricky. Use this opportunity to practice "pair programming"; after each level, the "driver" and the "navigator" should switch roles. (Refer to the assignments page if you don't recall what this is about.) There's nothing to turn in for this part (but of course that doesn't mean you can skip it.)
  2. Open up Snap and spend a couple of minutes re-familiarizing yourself with the screen layout.
  3. Re-create one of the examples we did in class or the example in one of the video tutorials. You don't have to duplicate it precisely in every detail (and you should feel free to enhance it), but you should try to include most of the same capabilities. Don't spend more than about 15 minutes on this. The example we did on the first day of class is available for you to import and examine (right-click on the link, save/download the file, and then import it from Snap). But try to re-create it on your own; you won't learn anything if you just copy it block for block.
  4. When you're done, export your project. Choose "Export project ..." from Snap's "file menu"; it's at the top left of the screen, a folded-page icon). In some browsers this will create a new window that displays some cryptic-looking XML code; from the browser, save the contents of that window using a file name that includes the problem number and both partners' UCInet IDs (e.g., hw1d4-johnz-janex. Snap will add the ".xml" suffix). To test that your export worked correctly, open a new Snap window, and import the file you just exported.
  5. Submit the saved project file via Checkmate. Just one partner should submit one copy; the file name and your partner-choosing Email will let us give both partners credit.
  6. Spend about 20 minutes experimenting with the various blocks Snap provides. Your goal should be just to see them in action, rather than to memorize every block and its functionality. Experiment with some blocks in each of the tabs.
  7. Create your own short animation or simulation or game containing at least two sprites. Be as creative as you like, but follow this advice: Start out with something very simple, which of course you can enhance later; before putting blocks together in Snap, plan out what you want to do (maybe by sketching it out step by step on paper); focus more on the actions and interactions than on polishing the appearance of the sprites and background (it's possible, and fun, to spend all your time making things look good, but our focus here is on making things happen). When you're done, save your project (as hw1d7-johnz-janex) and submit it, following the instructions above. The same partner must submit both parts of the assignment on Checkmate; this helps us keep track of who does what.

Our TA will hold lab hours this week in the third-floor ICS lab, room 364 ICS. Stay tuned for details. You can also get brief questions answered on Piazza (see the syllabus).

Have fun!

David G. Kay, kay@uci.edu
Monday, April 10, 2017 1:52 PM