My office hours: 2:00PM Monday and Wednesday, 1:00pm Tuesday and 2:30 Thursday or
by appointment.
TA hours: Monday 12:00-2:00pm and Thursday 12:30 to 2:30pm in Williams 305.
The TA is Bryce Wheeler.
Arda's URL: cs-ithaca.eastus.cloudapp.azure.com
Exam dates:
- 8 March (evening exam)
- Week of 9 April (in class)
- Tuesday, 7 May, 7:30AM (scheduled final period)
Announcements
Describe computer science in 5 words:
BI
Final Exam will be at the regularly scheduled time, Tuesday, 7 May,
at 7:30-10:00AM in Williams 303.
Bits in real life. Ariane 5, 1996. See
here
Exam 2 will be during the week of 9 April
Exam 1 will be in class on Tuesday, 6 March.
- Note about the Practicum 2 writeup. For phase 4 I want the
pseudo-code for the recursive function, not for phase 4.
- Practicum 3 is available! Due the last day of classes.
- Practicum 2: what is "%fs:0x28"? This is a reference to the way that
the intel machine language adresses memory, something that we have not (and
will not) talk about in class. If you're interested, see this article:
X86 memory
organization. You can safely ignore this instruction when you see it, but
the larger lesson is that you have to deal with some uncertainty when working
with the bomb. You won't know everything, but you have to use what you do
know to figure out what is happening.
- Lab 7: why is the instruction "sar 0x3f, %rdx" there?
Integer division always rounds it’s result by rounding towards 0. So if we do 5 the result is 2.5 which is rounded to 2. This is the same result
that we get if we shift 0101 to the right one position, i.e., 0010. If we do −5, however, the 3
result is −2.5 which should round toward 0, i.e., to −2. The 2’s complement version of −5 however is 1011. If we shift it right we get 1101 or −3 not −2. To fix this, we can add one before we shift, i.e., −5 + 1 = −4 or 1100. When we shift this right we get 1110 or −2, the correct answer.
How can we do this without an if statement to test whether the number is positive or negative? If a 2’s complement number is positive, the sign bit is 0. If the 2’s complement number is negative it’s sign bit is 1. So we shift the sign bit all the way to bit position 0 (63 bits if we have a 64 bit number). If the number is negative, it results in the value ”1”; if the number if positive it results in the value ”0”. We then add this to the number that we are to divide, i.e., we add ”1” to a negative number and ”0” to a positive number. Then when we shift right, the number will be rounded in the correct way.
- Comp 210 in the news:
- Problem set 2: it's ok to use the time.h
library to convert seconds into a date formate. Check out the strftime
function in particular.
- Interested in what happened to the engineers from Soul of a New Machine? Check
out this article from Wired
magazine in 2001. And this page
has a photo of the development group in 1980.
- vi or emacs? See this
article.
- Speaking of programming vulnerabilities, check out the SAN Institute's list of
the 25 most dangerous software errors.
- Buffer Overflow in the news!!
Coming up...
Tomorrow, Tuesday, 23 January, read the Unix tutorial Intro, tutorial 1, tutorial 2.
Problem Set 1
is due on Monday, 31 Jan at the beginning of class.
Past Assignments »