Introduction to Computer Systems
Documents and Readings
Table of contents
Textbooks
Texts:
![]()
Computer Systems: A Programmer's Perspective, Bryant, Randall E. and O'Hallaron, David R., Prentice Hall, 2003. ISBN: 0-13-034074-X
- Course Materials for Instructors and Students - read this site. Down load things and look at items!!
References:
![]()
Haviland, Gray & Salama, UNIX System Programming, Second Edition, Addison-Wesley, 1999. ISBN: 0-201-87758-9
Brian Kernighan and Dennis Ritchie, The C Programming Language, Second Edition, Prentice Hall, 1988, ISBN: 0-13-110362-8
Compiling and using UNIX/LINUX
- The following book may also be useful in doing your programming exercises:
Students with no experience with using UNIX may want to obtain a good introductory book on UNIX. UNIX in a Nutshell from O'Reilly is the best.
- Stevens, R., Advanced Programming in the UNIX Environment, Prentice-Hall
- N. Matloff's guide to C and Unix (search for: Topics in elementary C Programming) This reference also has quick guides to the editors: vi and emacs.
- How to ... in your Unix account
- CS:APP Unix FAQ - very good summary on how to do things.
- Unix Programming Tools A 16 page introduction to the most common Unix tools and their usage in the compile-link-debug process. Introduces gcc, make, gdb, emacs, and the shell. There should be enough information here to allow someone with a little Unix experience to build and debug. [Compliments of Stanford University].
- Separate compilation and typical compilation errors
- C Programming Tutorial
- How to use FTP - how to send a file from your PC to hawk
- Learning the UNIX Operating System
Supplemental Readings (keyed to lectures):
Computer Architecture
- Instruction Set Architecture (ISA)
- The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software - describes the changing face of hardware, why it suddenly does matter to software, and how specifically it matters to you and is going to change the way you will likely be writing software in the future.
C Programming Language
- C Programming Tips: Bits - Overview, Uses, Binary and Hexadecimal Numbers: Uses of Bits - Device Drivers, Data Compression, Images
- Bit Twiddling Hacks - Use of C to manipulate data; e.g. how to determine the sign of a number, counting bits,
- C Standard Library - the standard pieces of the C runtime libary
- The C Library Reference Guide
Data Representation
- The Binary Number System
- Computer Number Systems
- Number Systems - Self paced course with lots of examples. Very good. Discussion of number representation and arithmetic in number systems other than the decimal number system, with a focus on binary numbers and binary arithmetic.
Assembly Language and the Intel Instruction Set
Debugging
Data Structures
- Data Structures - Explanation of basic data structures, including an introduction to computer memory and pointers, and a comparison of logical and physical representations of commonly used data structures.
Buffer Overflow
Memory
- system cache - tutorial on how cache works
- Function and Operation of the System Cache - more detailed discussion
Virtual Memory
- Virtual Memory Tutorial
- Virtual Memory
- The Multics Virtual Memory: Concepts and Design - historic document on the first virtual memory
- Relocation
- Segmentation
- Demand Paging
Basic System File and I/O
Networks
- Technology Brief: TCP (PDF) First few pages: skip Java stuff