1. What is the primary difference between CS100J and CS100M?
They emphasize different programming languages. Both teach basic
programming notions, but CS100J is heavily weighted toward Java (12
weeks of Java are followed by 2 weeks of Matlab), while CS100M
allocates equal time for both.
2. Are the web pages for CS100 J and M identical?
No. The similarity in appearance is superficial. You will find many
differences if you look closer. Check out the "Announcements" page,
for example.
3. Programming is a skill. What should one do to develop a skill?
Practice, practice, practice. It is hard, if not impossible, to learn
programming by looking at examples developed by others.
4. Where and when should you submit this assignment, assuming you hand
it in on the due date?
The solutions to this assignment should be handed in on Tuesday,
January 30, in class.
5. Where and when may you submit a project earlier than the due date?
You must submit your project personally to a consultant in Carpenter
Hall. (Note: this applies only to early submissions.)
6. May you submit exercises to Carpenter?
No.
7. Why should you collect graded work, regardless of the score you
received?
Grading provides valuable feedback on your work. The graders'
personalized comments will help you a lot, since they show you what
you should have done to solve the problem correctly. Just looking at
the official solutions might not help you with that, since typically
there are many ways to solve a problem, and your attempted solution
might have followed a different line of thinking.
On projects, since grading is not that strict, even if you got a
perfect score, you might have made mistakes that will cost you points
on exams. Also, even if your project is perfect, you can still learn
about mistakes to avoid in the future from the project grading guides
stapled to corrected projects.
On exams, you should check to see that there were no arithmetic errors
in adding up your score.
8. May you work with a partner on projects? exercises?
You can work with one partner on a project. You can pick a different
partner for each project, though.
9. May you work with multiple partners on the SAME project? For instance,
you work Sam on Part 1 and Pat on Part 2.
No.
10. Give three examples of university-sanctioned excuses.
a. Conflict with religious beliefs;
b. Documented medical emergency;
c. More than 2 exams in a 24-hour period.
11. Assuming you weren't seriously ill, may you submit a late project or
exercise, even if it is only a couple minutes late?
No.
12. In Question 11, what if the printer broke? Or your partner slept
through an alarm? Or YOU slept through the alarm, and you're willing
to lose the points, but you hope the partner won't? (Yes, that's
admirable, but will it work?) The answer to all these situation
is...?
No. It is your duty to plan ahead and prepare contingency plans for
unexpected events.
13. In Question 12, suppose you attempt to sidestep the course instructors
by handing the assignment to a TA, support staff, Laurie Buck, or send
an e-mail attachment. Will any of these approaches work? Why?
No. The homework must be submitted in lecture. The course staff will
refuse to accept any homework handed in other circumstances.
14. Suppose you do miss a project. How might you STILL obtain a perfect
project grade in either CS100J or CS100M?
A missed project means a loss of 10 core project points, but you do not
need all the possible core project points for a perfect project score P:
J: you need 50 core project points, so you need to get perfect scores
on the other 5 projects.
M: you need 65 core project points, so you need to miss at most 3 core
points on the other 7 projects to get at least 7*10-3-2=65
core project points. (Remember, unexcused projects count as -2, not
as 0.)
15. Do you think starting EARLY or LATE on a project will help prevent the
situations presented in Questions 11-13?
Starting EARLY will definitely help.
16. How do you request a regrade on any graded work in CS100?
You have to fill out a regrade request form, attach it to the exam or
assignment, and hand it to a consultant in Carpenter Hall.
17. Consult the Grading pages for CS100J and CS100M. Given the following
averages in terms of percentages E=53, P=95, T1=71, T2=83, T3=78, F=84
the student would receive a what numerical grade for CS100J? CS100M?
J: The numerical grade G is computed using the formula
G = .05*E + .25*P + .1*T1 + .2*T2 + .2*T3 + .3*F - .1*DROP,
where DROP = min(T1,T2,T3,F). In this case,
G = .05*53 + .25*95 + .1*71 + .2*83 + .2*78 + .3*84 - .1*71 = 83.8
M: The numerical grade G is computed using the formula
G = .1*E + .2*P + .1*T1 + .2*T2 + .2*T3 + .3*T4 - .1*DROP,
where T4=F and DROP = min(E,P,T1,T2,T3,T4). In this case,
G = .1*53 + .2*95 + .1*71 + .2*83 + .2*78 + .3*84 - .1*53 = 83.5
18. Consult the Material page. What is ProgramLive? Is it required?
ProgramLive is a Multimedia environment, which combines animation,
sound, text and hypertext to provide instruction in Java and
object-oriented programming. You are not required to purchase
ProgramLive, but you will probably find it very useful.
19. Consult the Internet page (look in Material for the link). Describe
three things that violate the e-mail/newposting guidelines for CS100.
a. Rudeness
b. Use of anything else than plain text messages (e.g. use of HTML tags)
c. Not quoting enough of a message you reply to to establish the
relevant context for an interested reader.
20. Consult the FAQ page. Who is Laurie Buck? What is another page that
describes her role?
Laurie Buck is the CS100 course administrator. Her role is described
on the page referred to by the "Staff&Help" link as well.
21. Consult the Staff pages for both CS100J and CS100M. May you see a
teaching assistant who is not your section instructor?
Yes.
22. How do you make an appointment to see Yan? Schwartz?
(The question is ambiguous since there are 2 Yans.)
TKY: Send e-mail.
DY: Call the CS undergraduate office.
DIS: Contact his assistant, Kathy Carpenter.
23. Consult the Staff page. What is the URL for the link that has a
listing of a variety of services that should be the first place you
look for additional help?
The following is the URL for "Academic Support Services For
Engineering Students":
http://www.engineering.cornell.edu/studentServices/Advising/AcademicSupportServices.htm
(Note: this URL unavoidably exceeds the specified width of text, but
since it is essentially code, it is ok.)
24. What is Maxim Zolotov's preferred e-mail address?
maxim@cs.cornell.edu
25. What is the CS100 AEW?
It is the "Academic Excellence Workshop", a collaborative, not
competitive, group learning environment. Undergraduate students
familiar with the CS100 material present interesting and challenging
problems, and material they have prepared independently.
26. Where may you receive your graded projects and exams? If you do not
collect them at this location, where will they go?
Graded projects and exams will usually be handed out in section and
before and after review sessions. When close to a prelim, they might
be handed out in the Carpenter Lab. You may retrieve your unclaimed
work from the consultants at Carpenter Lab at the end of the week in
which they were returned in sections.
27. If you go to that place in the previous question, and you cannot find
your work, should you contact Laurie Buck to see if a grade was
recorded?
No. Check to see the posted scores to see if a grade was recorded.
28. What are three labs that have course software available? Which of
these labs requires that you obtain a separate account?
The three labs are Carpenter Computer Lab (B101 Carpenter Library),
Upson Computer Lab (B07 Upson Hall), and the ACCEL lab (247
Engineering Library). ACCEL requires a separate account.
29. Why should you NOT schedule a plane ticket for Spring Break on
Thursday, 3/15?
This is the date of Prelim 2.
30. What page stores examples used in lecture for both CS100J and CS100M?
Examples.
31. What should you do if you miss a prelim in CS100J? In CS100M?
M: Contact the instructor and try to do as well as possible on the
other exams to compensate for the loss of points.
J: Contact the instructor and take the comprehensive make-up exam.
32. Do you need to purchase CodeWarrior?
No. CodeWarrior is available in several public labs.
33. Do you need CodeWarrior to write programs?
No. Code Warrior is just one of a relatively large number of
integrated development environments (IDEs) that one can use to
simplify programming and debugging. A plain text editor and a Java
compiler is all one needs to write programs.
34. How can you obtain a free copy of Java?
Please check the Java page on either the J or M page.
35. Precisely what version of CodeWarrior is installed in Carpenter lab?
Precisely what versions are sold in the campus store? What do you do
if you want to frequently switch between different versions of
CodeWarrior?
The Carpenter Lab has version 5.3 of CodeWarrior installed, while the
Campus Store sells version 6. The different CodeWarrior versions have
incompatible project files, so to switch between them:
a. Create 2 separate Projects, one for each version of CodeWarrior.
b. Add the same .java files to both projects.
36. Precisely what version of MATLAB is installed in Carpenter lab?
Precisely what versions are sold in the campus store? What do you do
if you want to frequently switch between different versions of
MATLAB?
The Carpenter Lab has version 5.3 (coincidence!) on the PCs (the Macs
probably have version 5.2 or so), and the Campus Store sells version
6. The file formats should be compatible between various Matlab
versions, so you should not have to do anything to switch between the
different versions.
37. Consult CS100J's Material page. Somewhere on this page is a link for
table with keyboard character names. What are two names for the
character "&"?
"Ampersand", "And".
38. Below, write the following sequence of characters: bar, tilde, pound
sign, backquote, forward quote, dollar sign, virgule.
|~#`'$/
39. Guess how many students take CS100 each year (including the summer
semester).
About 1200 students.
40. Which professor, Yan or Schwartz, has a beard? (Just checking :-)
Schwartz.

%-----------------------------------------------------------------------------%
% p1PartB.m
% DIS
%-----------------------------------------------------------------------------%
% Cleanup:
close all % close all figure windows
clear % clear variable assignments
clc % command window
% Assign data for plotting:
weights = 0:10:100;
deflections = [ 0 0.7 2.2 2.9 4.1 4.8 5.9 7.0 8.3 9.1 9.9 ];
% Generate plot:
plot( weights, deflections, 'r-' )
% Label plot:
title('Weights vs Deflections')
ylabel('Deflections')
xlabel('Weights')
% Answer question on plot:
text(50,2,'Deflection for weight of 75N = 7.65')
Note: For this assignment, it suffices to get the value for the deflection by "eyeballing" the graph. A better solution might be to linearly interpolate the values for 70N and 80N. An even better solution might be to perform a least-square fit of a line through all the points and then compute the value for 75N.
/*****************************************************************************
* p1PartC.java *
*****************************************************************************/
import java.awt.*;
public class p1PartC {
public static void main(String[] args) {
Drawing d = new Drawing(); // create object for drawing graphics
d.setTitle("Drawing Window"); // set title of Drawing window
d.setSize(400,200); // set size of Drawing window
d.show(); // display/show window (starts off hidden)
}
}
class Drawing extends Frame {
public void paint(Graphics g) {
// Drop below window title bar:
g.translate(getInsets().left, getInsets().top);
// Draw leftmost snowperson:
g.setColor(Color.blue); // was: g.setColor(Color.red);
g.fillOval(40-10, 10, 20, 20);
g.fillOval(40-20, 30, 40, 40);
g.fillOval(40-30, 70, 60, 60);
g.drawLine(20, 50, 20-20, 50-20);
g.drawLine(60, 50, 60+20, 50-20);
// Draw middle snowperson:
g.setColor(Color.red); // was: g.setColor(Color.green);
g.fillOval(80+40-10, 10, 20, 20);
g.fillOval(80+40-20, 30, 40, 40);
g.fillOval(80+40-30, 70, 60, 60);
// Draw arms:
g.drawline(80+20, 50, 80+20-20, 50-20);
g.drawline(80+60, 50, 80+60+20, 50+20);
// Draw rightmost snowperson:
g.setColor(Color.green); // was: g.setColor(Color.blue);
g.fillOval(2*80+40-10, 10, 20, 20);
g.fillOval(2*80+40-20, 30, 40, 40);
g.fillOval(2*80+40-30, 70, 60, 60);
g.drawLine(2*80+20, 50, 2*80+20-20, 50+20);
g.drawLine(2*80+60, 50, 2*80+60+20, 50+20);
}
}
Task 1: Tying Shoelaces
1. Put left shoe on left foot.
2. Grab left end of shoelace with right hand.
3. Grab right end of shoelace with left hand.
4. Cross shoelace ends; pull tightly.
5. Form a loop in the right shoelace end with left thumb and forefinger,
holding the loop tightly against the foot.
6. With right hand, pull the left shoelace end around both the left thumb
and first loop.
7. With left thumb, pull left shoelace through the second loop formed by the
left shoelace and thumb.
8. Tighten.
9. Put right shoe on right foot.
10. Repeat steps 1-8 with right shoe.
Task 2: Most Common Birthday
In the following we will assume that all students are seated and that they don't change positions until the algorithm ends. The following is a semi-informal description of the algorithm:
The instructor marks "date = " and "nos = 0" (number of students with
birthday on the given day) onto the board.
While there are students who did not indicate their birthday in the class
Find one such student.
Ask his/her birthdate.
Ask all those whose birthday is on the same date to raise their hand.
Count the total number of students (including the first one) who answer.
Compare this number to the one written near "nos" on the board.
If it is bigger
then
Erase the old date, if any from the blackboard.
Write the new date near "date" onto the board.
Write the number of students who were counted in this step near "nos."
Some observations about the algorithm:
Suppose Alan, the TA, performed the following algorithm at one of the joint CS100J&CS100M software demos:
While there are 2 or more CS100 students
Pick 2 students at random.
If they are from the same class (both J or both M) then
They both leave.
A J student enters.
If they are from different classes (one J and one M) then
The J student stays.
The M student leaves.
Observe that at each step, the number of CS100 students goes down by
exactly one. What, if anything, can be said about the last CS100 student
left in the room?
Solution: If we start with 1 student, then he/she is the last
student; if we start with 2 or more students, then the last
student is always a J student.
Justification: by case analysis on the
initial number N of students.
Thus, when N>=2, the last student left is always a J student.