STANFORD CS 110
ASSEMBLY LANGUAGE PROGRAMMING
SPRING 2001

Mon/Wed 9:30a - 10:45a in Gates B12

Douglas I. Anderson   



Course Overview

CS 110 is a course in assembly language programming that also covers some basic architecture and operating system concepts. The target platform for projects in this course is the Palm Computing Platform (the most well known Palm Computing Platform device is the PalmPilot).  

Important: Final info


Course Materials

  1. Announcements (new!)
  2. Handouts
  3. Lab downloads
  4. Manuals and References


Administration Details

Lecturer:   Douglas I. Anderson (Email: dianders@cs.stanford.edu)

Office Hours: Monday 10:45a - 12:30a Gates 195 (Will start in B12 after class)
Wednesday   7:30p -   9:30p Gates 195 (Call 5-5303 if Gates is locked)
...or by appointment

Teaching Assistant:  Yan Liu (Email: yl314@stanford.edu)

Office Hours: Wednesday 10:45a - 1:00p Gates B24A
Thursday   2:15p - 4:00p Gates B24B
...or by appointment
Staff E-mail: cs110-staff@cs.stanford.edu
 
Mailing list: cs110-all@disordat.com; Usage information.
 
News Group: su.class.cs110
Students in the class may wish to use the class newsgroup to discuss problems/look for partners.  However, the staff is not obligated to answer questions from the newsgroup.
 
Lectures: Monday and Wednesday, 9:30a – 10:45a, Gates b12
 
Sections: Sections will be scheduled if necessary
 
Prerequisites: The official prerequisite for this course is completion of Stanford’s CS 106 program.  If you have not completed CS 106B or CS 106X, you should be fairly proficient in a high-level language, such as C.
 
Electronic Access: All course handouts, programming project starters, and other course material are accessible from the course web page at:
           
http://www.stanford.edu/class/cs110/
…or through the “CS Catacombs”.  Note: if attendance to lecture starts dropping, I may stop putting lecture notes online.
 
Textbooks: Microcomputer Architecture and Programming by John Wakerly (optional)
M68000 Programmer’s Reference Manual (provided)


Assignments

Hardware Requirement: The entire class can be done quite reasonably using the PalmOS Emulator provided by Palm at http://www.palmos.com/dev.  However, it’s really a lot more fun (and sometimes more convenient) to do the class on real hardware.  Handspring has been nice enough to allow students of CS 110 to purchase a refurbished Visor Deluxe for $99.  Note: currently the debugger we are using only works over serial (as opposed to USB) on Macs.  Therefore, if you plan on doing development on this device on the Mac, you also need to get a serial cradle.

If you already have a PalmOS device, you’re free to use that for the class, but be sure to back up important data before loading any CS 110 programs onto your device.  Note that the assignments for this class will require OS 3.0 or greater.  As I said, the debugger we will be using only works over a serial connection (with the exception being the Handspring Visor on a PC)
 
Software Requirement: The supported software for this quarter is Metrowerks Codewarrior with Palm’s SDK 3.5.  Codewarrior is site-licensed to the Stanford community and Palm’s SDK is free.  I am working to make sure that these tools are present on various campus clusters.  I’ll keep you updated on my status and let you know which clusters are supported.  A future handout will help you obtain and setup the tools on your own computer.

Note: I will not be supporting the GNU toolchain for developing for PalmOS.  While this is a great set of tools, getting them to do assembly works very differently with them, and the added support would just be too much.
 
Homework: The remaining 60% of your grade comes from the programming projects.  There will be a total of five labs (including lab #0).  Assignments will be graded based on correctness and readability.  Homework must be turned in at midnight on the day they are due.  Submissions will be electronic.  Information will be handed out with the first assignment.  You may work with 1 other person on assignments, though this is not required.
 
Late Policy: In CS 110 you are given four late days that you can use to turn in assignments late without being penalized.  Each late day is 24 hours.  You may take more than four late days throughout the quarter, but you will be penalized 10% for any late days you take above the four free ones.  You may not turn in any assignment more than a week late.

Extensions (additional late days) will not be given except in very special circumstances.  The four late days given to you are not designed to be freebies, but instead to be self-granted extensions.  Extra late days will not be granted unless you had a good reason to take all of your free late days and you have a good reason for the extra one.
 
Grading: It is very important to know up front that not everyone passes CS 110.  While I do try to stick relatively closely to the standard Stanford grading scale, be aware the just because you were present for the whole class doesn’t mean that you will pass if your grades are not satisfactory. 


Examinations

There will be an midterm worth 15% of your grade on May 7th, at 9:30 AM in the Meyer Forum Room. It is open book, open notes, closed computer.

The final exam is 8:30 – 11:30 on June 8th, located in room TC SEQ 201. The final is worth 25% of your grade.  If you have a conflict with either time, you must let me know at least two weeks prior to the exam.


Tentative Schedule

 

Date

Title

Reading

In

Out

1.

April 4

administration; data representation

ch. 4

 

 

 

 

 

 

 

 

2.

April 9

data/instruction representation; basic computer organization

ch. 5, ex 5.11

 

Lab #0

3.

April 11

more computer organization; intro to assembly language

ch. 6.1-6.4

 

 

 

 

 

 

 

 

4.

April 16

Addressing

ch. 7.1-7.4

Lab #0

Lab #1

5.

April 18

addressing - flow control

skim ch 8

 

 

 

 

 

 

 

 

6.

April 23

flow control

 

 

 

7.

April 25

flow control cont; subroutines

ch. 9.1-9.4

Lab #1

Lab #2

 

 

 

 

 

 

8.

April 30

subroutines cont (practice midterm out)

ch. 3

 

Lab #2

9.

May 2

data structures

 

 

 

 

 

 

 

 

 

10.

May 7

In class MIDTERM (room 200-34)

 

 

 

11.

May 9

Queues

ch. 11

 

 

 

 

 

 

 

 

12.

May 14

traps;

 

Lab #2

Lab #3

13.

May 16

i/o; interrupts

 

 

 

 

 

 

 

 

 

14.

May 21

operating systems; multi-tasking

ch. 12

 

 

15.

May 23

I/O

 

Lab #3

Lab #4

 

 

 

 

 

 

16.

May 28

Memorial Day – NO CLASS

 

 

 

17.

May 30

More on IO (DMA, etc)

 

 

 

 

 

 

 

 

 

18.

June 4

Advanced topic: Springboard

 

 

 

19.

June 6

Final Review

 

Lab #4

 

 

 

 

 

 

 

 

June 8

Final Exam (8:30 – 11:30).  Location: TC SEQ 201