CMSI 284: Homework Assignment #2
The following guidelines are expected for all homework submissions:
- All homework must be typed. Homework which is not typed will be returned ungraded and will be
subject to the late homework guidelines as set out on the syllabus page. PLEASE DO NOT scribble
something on lined paper and rip it out of your spiral notebook — hanging chads went out
with the presidential election in 2000.
- I don't care too much about what font you use or how large your margins are; however, you might
want to check out a monospaced font for typing code, as it will be easy to see the indentations.
- Speaking of indenting, PLEASE DON'T USE TABS TO INDENT YOUR CODE. Tabs can often get interpreted
differently by different computers and applications, and could make code that is nicely formatted
on your computer look
all over the map
on my computer or printer. USE SPACES INSTEAD.
You can set up almost every modern text editor to insert spaces whenever you press the TAB key, or
you can simply pound the spacebar.
- Work with a partner. I can't stress this enough; part of this policy is don't
split up the work – WORK TOGETHER on the assignment; DO NOT
DIVIDE UP THE WORK!. Doing assignments this way mimics an industry code development model
called
pair programming
which is part of the Extreme Programming [Agile] software development
method. Feel free to collaborate in your pairs as much as you want, doing the entire assignment
together. Only submit ONE copy for the both of you.
- DO NOT share your work between groups. Doing so will count as plagiarism. If you
wish to discuss solutions with another group over coffee in the Lair, that's fine as long as it is
kept at the conceptual and you don't share your code between groups. Each group needs to
turn in its own version of the solutions.
- Repeat: you only need to turn in one copy per group.
- Submit your homework through GitHub, in your repository, and be sure to make
me a contributor so I have access. I cannot evaluate what I cannot see! If
I can't upload to your repo, you will not get an evaluation for the assignment.
Problems for Assignment #2
Answers to the following questions can be found in the information on the course weekly pages for weeks
one and two, or you can look them up on the Internet. If you do that, please include a link to where the
answer came from.
Try to answer in your own words, though, from your head knowledge
because that will help you to
really remember them rather than just regurgitating them for a grade.
- What is a
computer system
?
- What are some of the parts of a computer system?
- What is the difference between a compiled language and an intepreted language?
- Is
C
a compiled language?
- Who invented the
C
language?
- How long has
C
been in use?
- Is a compiler a translator?
- Is an assembler a translator?
- What is the command to list out the contents of a directory on a mac terminal window?
- What does the
C
function atof()
do?
- What are the bottom two layers of a computer system? Give a brief desciption of each.
- What are the three
steps
of the Von Neumann Architecture?
- What is the purpose of an ALU?
- What is a
register
?
- What is one difference between
Application software
and System software
?
- Is the phrase
cmp rdi, rsi
machine language?
- How many buses are included in the system bus?
- What is the decimal value of 100101112?
- What is the decimal value of 111111112?
- What is the largest unsigned integer value that will fit into 16 bits?