Computer Laboratory

Supervisions

Supervision questions: Computer Fundamentals

This is the set of questions for my supervisions in Computer Fundamentals. I will typically email you a list of question numbers before each supervision, but if not, attempt the next two or three. (More questions will appear here as I set them, so come back if you want to make an early start on some of the future work.)

Administrativa & handing in work

I expect you to make a good attempt at producing solutions to the relevant questions before each supervision. I prefer submissions by email (PDF or text format). Please submit your work 24 hours before the supervision. If you want to submit a hard copy of the work to student administration, please hand it in before 17:00 two days before the supervision (i.e. before Wednesday, 17:00 for a Friday afternoon supervision) as I will have to scan it. Remember that Student Administration is closed on weekends.

When emailing me regarding supervisions, please only use my lab address, or your email will be misfiled and may slip by unnoticed:

The mark allocation (whilst very approximate) should give you a rough idea of how you should divide your time between the questions, as well as how much credit I expect a similar question to be worth in the exam. It will also serve as a guide for me when marking the questions.

If there is a particular part of the course you would like explaining, or questions you have about the lectures (independent of whether they are covered by the questions or not), please let me know in an email before the supervision so that I can prepare appropriately.

Supervision 1: Computer Organisation, History and Data Encodings

  1. In a brief table, outline the progression of early computer technology. Your table should look a bit like the following:
    Machine Type Logic technology Memory technology
    Babbage engines mechanical wheels and strings none
    ...
    EDSAC stored program vacuum tubes (3k) mercury delay lines
    ...
    Intel 4004 microprocessor silicon transistors DRAM
    Your table should include at least the following machines:
    • Babbage engines
    • IBM 601
    • Zuse Z3/4
    • Bletchley Park's "Colossus"
    • ENIAC
    • Manchester Mark I / "Baby"
    • EDSAC
    • DEC PDP-11 or PDP-9
    • Intel 4004
    • Intel 8086
    Note that the lecture notes do not supply all the information required to fill in the table and that you may have to use extra resources (generally, Wikipedia tends to be quite good on these topics; while you should not cite Wikipedia in publications, using it to look things up for supervision work is fine!) to fill it in.
  2. [18 marks]
  3. Explain why a "Harvard architecture" is not necessarily an alternative to, but can be an implementation of a "von Neumann architecture". [hint: think about the typical cache hierarchy of a modern process; you may also want to look at the NX bit.] [4 marks]
  4. Convert the following numbers to the respective other bases (two out of hexadecimal, decimal and binary):
    • 1100 0000 1111 1111 1110 11102
    • 1011 1010 110110
    • 4887910
    • IAD16
    [8 marks]
  5. What is the difference between one's complement and two's complement representations of signed binary numbers? Why do you think two's complement has been widely adopted? [2 marks]
  6. Explain the what difference between SRAM and DRAM is in terms of
    • implementation technology,
    • persistence properties,
    • speed,
    • and cost.
    [4 marks]
  7. Q6 from the example sheet. [4 marks]
  8. Q15 from the example sheet. [4 marks]
  9. Name four kinds of data that are encoded in different ways using binary in the memory of a computer. [4 marks]
  10. What is the difference between CISC and RISC-type assembly instruction sets? What the the advantages and disadvantages of either approach? [3 marks]
  11. Why do you think software is not commonly written in assembly code any more? Can you think of any possible exceptions? [3 marks]
  12. What is the difference between executing and interpreting program code? [3 marks]
  13. What are "pointers", and why do they exist? Why do you think functional languages like ML do not make pointers available to the programmer? [3 marks]
  14. Q20 from the example sheet. [4 marks]