CSC 103: How Computers Work

Homework 3: Assembly Language

Due: Monday April 11 before class

Part 1: Assembly Language

The first part of this homework is to complete Lab 3 on assembly language. Save all of your programs as one txt file (see the example under Class 5). Separate your programs with comments and include your name as a comment at the top. You don't need to comment each line of your program, but comment lines that might not be obvious to someone else reading your code. Turn in this txt file on Moodle.

Part 2: Quiz

The second part of this homework is to complete the short quiz (on Moodle) on binary numbers, Boolean algebra, and logic gates. You can look at the questions now and you can have as much time as you want between now and Monday before class, but you only have one attempt to submit your answers. For this part, you are welcome to use your class notes and our class webpage, but no other Internet may be used. You also may not discuss the quiz with anyone else, inside or outside the class.

Part 3: Projects

The last part of this homework is to decide on a topic for your final project. I have some suggestions below, but feel free to propose a different project related to our course material. Your project does not need to invent anything, but it should go into some detail on a technical aspect of how computers work. Here are the requirements for your proposal:

  1. Write a paragraph explaining what topic you chose and what you hope to learn from it. Start with some motivation for why the topic is interesting or useful. Explain whether or not you will be looking at this topic from a historical perspective. Then try to be as concrete as possible about what technical aspect you will explain.

    Example proposal (please include a bit more thought/detail than this!)

    "Transistors seem really cool, and also crucial for all our computers today. I will first investigate the history of the transistor. Then I plan to investigate and explain what innovations allowed transistors to became so small."

  2. Find and cite one related paper on Google Scholar. We'll talk more about literature searches on Wednesday, but make sure the paper has at least a few citations by other papers (not always a mark of a great paper, but often correlated). You don't need to understand everything in that paper right now, but skim it enough to see if it will be useful in your research.

  3. If you choose a topic from the list below, email me ASAP to "claim" it. This will be first-come, first-served. If a few people end up doing the same topic from different perspectives, that's okay, but I want to get a range of topics and not have everyone do the same thing.
Proposed Topics

Topics in BLUE have been claimed!

  • Organization of data within a computer (why binary? why 8 bits to a byte?)

  • Origins of Boolean algebra (read "The Mathematical Analysis of Logic" by George Boole, available online)

  • Linking Boolean algebra to electric circuits (read "A symbolic analysis of relay and switching circuits" by Claude Shannon, available online)

  • Transistors

  • Investigate an early computer (Antikythera mechanism, differential analyzer, difference engine, the Apollo Guidance Computer, etc)

  • Use of punched cards in early computing (explain how they work, etc)

  • Compilers (for transforming higher-level instructions into assembly code), could include a historical perspective on Grace Hopper (invented the first compiler)

  • Computers that play chess (history, how they work, future predictions)

  • Computers that play go (history, how they work, future predictions)

  • The "Turing test" of whether a human can tell if they're talking to another human or a computer (through a chat interface, for example)

  • Use of computers and artificial intelligence in medical applications (this is pretty open-ended, let me know if anyone wants to talk more about specifics)

  • DNA computing

  • How do companies store user information (photo, video, contact info)? What happens to that information when a user "deletes" it?

  • Investigate Amazon's "glacier" storage

  • Cloud computing

  • Investigate a programming language (assembly language, Python, Java, C, C++, perl, scheme, lisp, etc)

  • Operating systems (Linux, Windows, Mac), focus on one or compare and contrast