# CS 101 (Spring 1999) Frequently Asked Questions (FAQs)

We hope the following list of questions and answers is helpful. However, if your question isn't answered below, we want to be sure that you get an answer! Check our help page for for times when help is available and information about other sources of on-line help.

[Midterm Review]
[Applets] [Lab 11] [Lab 10] [Lab 7] [Lab 6] [Lab 4] [Lab 3] [Lab 2] [Lab 1]
[First-Day Questions] [General Questions]
[Lab 0]

### Applet Questions:

How do I make my program into an applet?
See the Programming Contest Information

### Lab 11 Questions:

How do you use for loops in Java?
See Phil Kirschner's page on this
How do you rotate the dX and dY values?
The newX and newY coordinates can be obtained from oldX and oldY by the following linear transformation
```newX = a * oldX + b * oldY

newY = c * oldX + d * oldY
```
Based on what we want:
``` (1,0) -> (0, -1) -> (-1, 0) -> (0,1) -> (1,0)
```
we get
```  a = 0
b = 1
c = -1
d = 0
```

### Lab 10 Questions:

How is the listener model supposed to work here?
The idea is that a `Side` can have at most one listener, which for our purposes is restricted to being a `TetrisBlock`. Each `TetrisBlock` listens to its inducing Side. When a `Side` moves, it needs to notify its listening `TetrisBlock` that it has moved. Based on the (probably new) location of the `TetrisBlock`'s inducing `Side`, the `TetrisBlock` redraws its `Side`s. Each of that `TetrisBlock`'s `Side`s may itself have a listener, which causes those blocks to move, and so on.

More specifically, set up your code so that a `TetrisBlock` registers itself with its inducing `Side` as a listener. Have a `Side` notify its listener by calling its `sideMoved` method.

Why do my tetris pieces look weird when I rotate them? Sometimes they blow up or shrink.
The rotation code equations that you solved use x and y, which are the original starting point of the inducing vector. The code only applies to the inducing vector when it is where it started.

You have some choices here:

• Keep track of the current displacement of the inducing vector from its original starting point. When it comes time to rotate:
1. Displace the vector back to its starting point.
2. Apply the rotation
3. Displace the vector back to where it should be.
• Use a method for rotation that does not depend on the inducing vector's starting point. This was discussed in class. The basic idea is to rotate an inducing vector by moving itself to be the reverse of its listening block's side 1.

### Lab 7 Questions:

Why do the rooms after unioning not take on the proper color?
Rooms take on the color of the set into which they are added at the moment the rooms are actually added. So, you need to establish the color of a set before you add rooms to it.
Why does Hall's ``` openedUpHallway ``` return `boolean`?
When the maze program calls this method, it should try to open up the hallway. The logic for determining if the hallway (i.e., the rooms connecting the hallway) can be opened was discussed in class.

The method returns `true` if you decide to open the hallway. The maze program uses the return value only to determine if it should sleep a while so you can observe what happened.

### Lab 6 Questions:

Why does my program show all of the dealer's points?
What is the definition of `points()` in `CardList`?
1. The sum of all the cards' points in a hand?
2. The sum of all the shown cards' points?
Assuming we want definition (2), then you have to modify your `points()` method accordingly.
Should takeCard() call wantsCard()?
NO! takeCard() should just take a card, no questions asked, and add the card to the player's hand. If you call wantCard() from takeCard(), bad things will happen:
• Null ptr exceptions because the hand is null and unformed
• Extra customer mouse clicks, because the customer is being asked twice if he or she wants a card!
How do I use `HandViz`?
Each player in the game needs an instance variable of type `HandViz`. When you want to see the player's hand, you need only call `update(CardList)` on the instance variable, passing in the list of cards to be visualized. If a particular card is not `shown`, then you see only the back of the card.

When the player is done, call `close()` on the `HandViz` instance variable to make the player's hand go away.

### Lab 4 Questions:

How do I draw a line of a specific color?
Recall the `testCanvas` drew objects of different colors. Check this out in `Startup.java` from Lab 2.

Also, you can take a look at the API for `Line` in cs101's canvas package.

How do I make a new file and add it to my project?
Open the new file and edit it from the File->Open menu. When you save it, be sure to check the box "Add to Project".

Or, if you already have the file saved, then open the Project->Edit menu. In their, add the file to the project.

How do I work on my lab using the attic and cec computers alternatively?
Visit the Project->Settings panel and then look at Directories. Erase the CLASSPATH entry and then click OK. Save and Exit. For the attic, open and visit that panel again. This time, you should see a line that begins
```  .;C\blah blah blah
```
Just after the first semicolon, insert
```  P:\cafe151\Java;
```
and then click OK and you should be set. For CEC, just leave the CLASSPATH at its default setting.

### Lab 3 Questions:

How do I work on my lab using the attic computers?
Instead of clicking on `Lab3.prj>`, open `Attic.prj` instead. They use the same files but the environment is set up for the attic. You should be able to switch back and forth without trouble. In CEC, continue using the `Lab3.prj`.
Where do I start on the design?
1. Design the Portfolio object -- put in the methods you need
2. You may see that you need a Stock object -- design it
3. Design the MarketValue object
How do I find the current price of one share of a stock?
```  String sname = "IBM";
Quote oneShare = Lab3.getStockQuote(sname);
/*  oneShare.getDollars() dollars and oneShare.getEighths() eighths */
```
How do I convert from a string that represents a number into the `int` for the number?
```  String snum = "101";
int    num  = Lab3.stringToInt(snum)
```

### Lab 2 Questions:

How do you get MousePad to read the current location of the mouse click?
Take a look at the method `Position click()` in the CS101 Canvas .
How do you get the SegmentDisplay to draw the next segment from where it last left off?
You need an instance variable to remember the end of the previously drawn segment. A `DirectionVector` could do this nicely.
I am frustrated because I cannot figure out what to do in the lab.
Please get help . Come by to see the instructor or the TAs during their hours. Hang on -- it gets easier as you get more comfortable with programming.

### Lab 1 Questions:

I make changes to my SmartCalculator.java file but the changes don't seem to be reflected in my executing program.
Make sure that your SmartCalculator.java file lives in the same directory as the other files for the lab. Otherwise, the "build" won't be able to compile your file.

### Common First-Day Questions:

Do I need any computer science background to succeed in CS101?
No. The only prerequisite for this course is that you be comfortable with algebra and geometry at the high school level. No programming background is required. We start from the beginning. However, the course is demanding and does move rather quickly. If you're looking for an easy course, this isn't it.

I have some programming experience. Will I be bored in CS101?
If past semesters are any indication, you probably won't be bored. Things may seem a bit slow at the beginning, but this course can be understood at many different levels. Also, the material should be sufficiently different from what you have seen to keep you interested. However, if you have significant experience in object-oriented programming, particularly in Java or C++, you should discuss your background with the instructor to determine if the course is appropriate for you.

Should I take CS100 along with CS101?
CS100 is a 1-unit course that will acquaint you with the computing resources at Washington University and teach you how to several computing tools. If you are not familiar with these tools, we recommend that you take CS100 along with CS101. However, it is not required.

How much time should I expect to spend on CS101?
CS101 emphasises learning by doing. Most of your time outside of class will be spent on lab assignments. You will spend very little time reading, since everything you need to know will be covered in lecture or in the lab assignments. Since CS101 is a 4 unit course, you should expect to spend about 10 hours per week on average doing the lab assignments. Some weeks will require more time, some will require less.

Is there a textbook for CS101?
Yes. However, the book is a resource that cannot replace class attendance. Everything you need to know will be covered in class or on lab assignments. On-line lecture highlights will be provided to assist your studies. If you own a computer, consider purchasing your own copy of the Symantec Cafe programming environment.

Do I need a CEC account for CS101?
Yes. CEC (Center for Engineering Computing) provides educational computing support for the School of Engineering and Applied Science. You will need a CEC account in order to participate in your lab sections. If you are an Engineering student, you should already have an account. Otherwise, you should read Getting a CEC Account.

Do I need to buy a computer for CS101?
No. You do not need to own a computer to take this course. The Center for Engineering Computing (CEC) has a PC Lab in Sever 201 that is generally open 24 hours a day, 7 days a week for your use. Should there be a temporary change to CEC lab hours, you will see the updated information in CEC's Message of the Day.

I own a PC or a Macintosh. How do I set it up to work on the CS101 assignments?

### General Questions:

How can I go back to a previous CS101 web page?
The CS101 pages use frames, so the back arrow at the top of your browser may take you out of the CS101 pages completely. To go to a previous or following frame, hold down the right mouse button over the frame and select the appropriate option from the popup menu.

I'm having trouble with my personal computer. What should I do?
CEC's FAQ page on the three systems may have the answer you need. CEC also has consultants to answer general questions about computer use. However, please see the CS101 teaching assistants for any questions that specifically relate to the course.

### Lab 0:

How do I use the PC's in CEC to do my CS101 assignments?

How do I open the transcript file for printing?
When you select the "open" option in the File menu in Cafe, you may only see the java files. At the bottom left, where it says "List Files of Type", click and hold the mouse button on the arrow and drag down to the line that says "all files." When you release the mouse button, all the files in the folder will be shown. Scroll down to the one that says "transcript.txt" and select it for opening. A new window containing the transcript file will be created, and you can print it by selecting the "Print" option from its file menu.

My photo isn't showing up on my home page. What should I do? If you've had your photo taken by the CEC consultants and it's not on your homepage, wait about a half hour to give them time to download it. After that, check the following: