DEPARTMENT OF COMPUTER SCIENCE
SAN JOSE STATE UNIVERSITY

CS 47. Introduction to Computer Systems - Spring, 2008 - T. Howell

Section 1 (27669): TR 1330-1445, MH 422
Section 2 (27670): TR 1730-1845, MH 422

Instructor: T. Howell
Office: DH 282     Phone: (408) 924-5116
Email: thowell1@email.sjsu.edu
Office Hours:
Tuesday and Thursday: 1515-1700 and  1915-2000
Also by appointment
Note: I generally answer all email within 24 hours (except perhaps on weekends). If you have short, specific questions, email is your best bet. For more general issues, it is best to come to my office hours as listed above. I always welcome questions and comments of any kind at any time. If you are having trouble with any part of the course, the best approach is to ask many questions! While I sometimes must limit questions during class time, I always try to answer all questions, either in or out of class.

Web Page for this Course: http://www.cs.sjsu.edu/~howell/
Handouts for this Course: http://www.cs.sjsu.edu/~howell/handouts.html

Catalog Description: Instruction sets, assembly language and assemblers, linkers and loaders, data representation and manipulation, interrupts, pointers, function calls, and argument passing.

Prerequisite:

CS 46B (with a grade of "C-" or better)

Students may also take this course concurrently with CS 46B. I will enforce the prerequisite by looking at your transcripts; if I cannot verify that you have passed CS 46B (or are currently taking it), then I will ask you for proof in the form of a Course Equivalency Form, or other acceptable documentation. If you cannot produce documentation satisfactory to me, then I will drop you from the course.

Text: Bryant and O'Hallaron, Computer Systems: A Programmer's Perspective, Prentice Hall, 2003.

Course Description:
This is a course about what goes on "under the hood" in a computer when a program is compiled and executed. It includes a very brief introduction to the C language, which is a great language to use to study the details of machines, since it allows direct access to memory, including running code. The course will also teach you the basics of programming in an assembly language, how to understand the code output by a compiler (such as a C compiler), basic data representations, memory layout, and the details of linking and loading.

Text Coverage:
I plan to cover most of six chapters from the text: 1-4, 7, 8. If time remains, I will add a few sections from one of the skipped chapters. I have not specified an extra book for the C language. However, if you want to buy a book on the C language, I recommend getting Kernighan and Ritchie, The C Programming Language, Prentice Hall, 1988  (sometimes referred to as the "white book," or "K&R"). While this book is almost 20 years old and does not include the revisions made to the language in the 1990s, it is still the best concise introduction to the language, from the people who invented it back in 1971.

Detailed coverage of the course, including the C introduction not in the text proper, is as follows (unless specified otherwise, all sections in each chapter will be covered):

Chapter 1:  A Tour of Computer Systems
(handouts):
Introduction to C
Chapter 2: Representing and Manipulating Information
Chapter 3: Machine-level Representation of Programs
Chapter 4: Processor Architecture (Sections 4.1 - 4.4 only)
Chapter 7: Linking
Chapter 8: Exceptional Control Flow (Sections 8.1 & 8.2 only)
Chapter 5:
Optimizing Program Performance (selected sections as time permits)
Learning Outcomes:
At the end of this course, you will be able to

Computer and Software Use in this class:

Web use. All of the materials for this class will appear on the Web, so you must know how to use a browser to view and download files. You should also be familiar with email, and be able to send and receive email with attachments.

Compiler/computer use. Although much of what we will study will be system-independent, the assembly language and architecture that we will use for homework and tests is the Intel x86 architecture of the PC. In particular, the assembler we will use is the Gnu Assembler for the x86, and the corresponding C compiler that we will use is the Gnu C compiler for the x86 (the C compiler automatically comes with the assembler). In principle, these should work seamlessly for either PC versions of Linux or Microsoft Windows. Note, however, that you cannot use a Mac for this course. The Dept. has a PC computer lab (with gcc installed, I believe) available for students (WSQ 1), but you will need to either sign up for CS 110L or pay a fee to the Dept. to have access to these computers. The Dept. also has a few laptops for free short-term loan to CS majors. There will be no requirement, however, that you bring laptops to this class. For use at home, I strongly recommend installing the djgpp version of Gnu C. An alternative is Cygwin, which is what the Dept. PCs have, and which provides Unix-like utilities in Windows.

Tests, Programs, and Grading:

There will two mid-term exams, on or about the following dates (subject to change with fair notice):

March 13
April 17
The lowest of your two mid-term exam grades will be reduced in weight by half in the final grade calculation. No makeup tests will be given, except in the case of documented serious illness.

There will also be approximately seven homework assignments, to be handed in every two weeks or so. Some of these will be "paper and pencil" assignments, to be handed in the traditional way, others will be code to be handed in by email. Details for each assignment will appear in the class handouts).

There will be a mandatory final exam, which will be cumulative (i.e. it will cover all material in the course). The final exam for each section is as follows:

  • Section 1 (the 1330 section!): Thursday, May 15, 1215-1430
  • Section 2 (the 1730 section!): Thursday, May 15, 1715-1930
  • Academic Integrity:

    Your own commitment to learning, as evidenced by your enrollment at SJSU, and the University's Academic Integrity Policy requires you to be honest in all your academic course work. Faculty members are required to report all infractions to the Office of Student Conduct and Ethical Development. The policy on academic integrity can be found at http://sa.sjsu.edu/judicial_affairs/. Please read and understand the policy referenced above, particularly the sections on cheating and plagiarism.

    General discussion of programs is encouraged, but you should always hand in your own work. Copying of programs and/or exam answers will result in an F in the course. Late assignments will not be accepted for credit.

    Grading weights:

    Midterms (2):  40% 
    Homework:  20% 
    Final Exam:  40% 
    My grading system allows some flexibility, but is not curved and generally follows the categories 85-100% = A, 75-85 = B, 60-75 = C, 50-60 = D, < 50 = F. Extra credit will sometimes be given on exams and projects, but extra assignments for extra credit are never given. Partial credit is given, so show your work on all assignments and exams.

    Additional Notes:

  • If you need course adaptations or accommodations because of a disability, or if you need special arrangements in case the building must be evacuated, please make an appointment with me as soon as possible, or see me during office hours. University policy requires that students with disabilities register with the SJSU Disability Resource Center to establish a record of their disability.
  • Please familiarize yourself with SJSU policies and procedures:
  • http://info.sjsu.edu/static/soc-spring/soc-spring.html
  • http://info.sjsu.edu/static/catalog/policies.html
  • particularly the add/drop policy. It is your responsibility to know and observe these policies. However, if there is something about a policy that you don't understand, please feel free to ask! You can also find answers to many questions at the Student Advising Center. Note that this semester the last day to drop without consequence is Monday, Feb. 4, and the last day to add is Monday, Feb. 11. After these dates it becomes very difficult to drop or add a class, so be sure you are in good shape before these dates arrive!