CS 110 FAQ

Stanford University, Spring 98-99
Since I've been getting questions from quite a few people about 110, I thought I would provide the answers to frequently-asked questions:

Q: Do I need to buy/own a Palm to take the class?
A: Palm has generously offered to provide loaner units for students taking the class. These units must be returned to Palm when you finish (or drop) the class.

Q: How will development be done?
A: It's currently looking like development will be done with Metrowerks Codewarrior. The code will probably be written using the ability of Metrowerks's C compiler to process straight assembly language. I'm looking into getting the Palm SDK installed on public clusters. I'm also looking into what is necessary to allow students to program from home (you can certainly do it if they purchase Codewarrior for Palm, but we may be able to provide an "upgrade" if you already have Codewarrior on your computer from another class). Note: although you should be able to development using Metrowerks for the PC, we may not have support for the debugger on the PC (this _is_ a big deal). I'm looking at options here.

Q: If I want to learn to program for the Palm, is this the class to take?
A: No. CS 110 is a class in assembly language. The focus of the class will be assembly language. You may learn a bit about Palm programming, but most of this will be hidden from you. This is _not_ a 193 class for the Palm.

Q: What are the prerequisites for CS 110?
A: The only prerequisite for taking CS 110 is having successfully completed CS 106 (A/B or X). This requirement is to ensure that you know C programming (the course will be taught with this assumption); that you know what it means to write clean code; and that you have a certain amount of experience writing code and (especially) debugging.

Q: What's the difference between CS 110 and EE 182? Don't they cover the same things?
A: To some extent they do cover very similar concepts. However, there are some fairly significant differences:

  • In EE 182, the focus is much more on how a processor works. You look at tradeoffs in processor and architecture design and look at how to measure / compare the speeds of processors. MIPS assembly language is taught, but learning MIPS is incidental--you're expected to sort-of pick it up on your own.
  • CS 110 is much more software-focused. You learn how to program in 68K assembly language and only get a high level view of the system architecture.
  • ...another way to look at it: CS 110 used to be a prerequisite for EE 182.

    Q: I'm a superstar and have already taken EE 182, CS 140, CS 240, ..., ... Should I take CS 110?
    A: The answer is: you probably won't get a huge amount out of the class. You will learn 68K assembly, learn a little more about the software side of assembly/OSes/architecture, and get to play around on the Palm. However, you will probably find that the class moves too slowly for your tastes.

    Q: What does CS 110 count for?
    A: CS 110 can count as one of your restricted electives for the CS major. I don't know how it applies to other majors; see your department for more info.

    Q: What is the workload for CS 110?
    A: That's a little bit hard to say. As I am switching platforms this quarter, the assignments will undergo significant changes. Traditionally, I would say that the workload of CS 110 has been on the easy side when compared to other CS classes (which means it's still a fair amount of work). I think this quarter it will be closer to an average workload; maybe on par with CS 143 (don't take this as anything more than an estimate).

    Q: Why teach on the Palm?
    A: There are several reasons to teach assembly language on the Palm:

  • 68K assembly is particularly elegant (see below) and the Palm is a recent architecture that uses the 68K (68K Macs went out of production years ago).
  • The Palm is a relatively simple system, which means that it's fairly easy to understand.
  • There's something about a Palm that really makes you want to know how it works on a low level.
  • Q: Why the 68K?
    A: There are a few reasons:

  • MIPS did not seem to be a good choice, as you learn that in EE 182.
  • I didn't want to do PowerPC or ARM because these are RISC, like MIPS. I think it's valuable to get some experience with something other than RISC (if for no other reason, just to have something to compare to).
  • I didn't want to do Intel x86 because I've heard from numerous sources that the x86 is a really _ugly_ architecture for doing assembly.
  • This left the 68000, which is a clean CISC chip. It is also one of the more popular chips to use for embedded systems and lower-power devices, which is the typical use of assembly language these days anyway.
  • Q: I have more questions. Where can I direct them to?
    A: da@cs.stanford.edu