Computer Science 217
Introduction to Programming Systems
General Information |
The purpose of this course is to provide the fundamental background necessary to understand, design and implement the components of programming systems. Examples of such components include text editors, assemblers, compilers, loaders, interpreters, and portions of operating systems. The course is divided into three major parts: machine organization and assembly language programming, program design and development, and software tools.
MW 10:00AM-10:50AM, Computer Science Building 105
|Number||Meeting Time||Meeting Place||Preceptor|
|1||MW 1:30PM-2:20PM||Friend Center 007||Dondero|
|2||TTh 1:30PM-2:20PM||Friend Center 111||Dondero|
|3||TTh 3:30PM-4:20PM||Computer Science Building 102||Jablin|
Jennifer Rexford : Computer Science Building 306 : 609-258-5182 : firstname.lastname@example.org
Office Hours: ???, or by appointment
Robert Dondero : Computer Science Building 206 : 609-258-2211 : email@example.com
MTWTh 2:30-3:20, or by appointment
Thomas Jablin : Computer
Science Building 213 : 609-258-7727 : firstname.lastname@example.org
Th 4:30-5:20, F 3:30-4:20, or by appointment
Donna O'Leary : Computer Science Building 410 : 609-258-1746 : email@example.com
Lab Teaching Assistants:
Available in the Friend Center 016 and 017 computer labs. A Lab Teaching
Assistant Schedule provides details.
COS 126. More specifically, you should have substantial programming experience using some high-level programming language such as Java. Prior experience with the C programming language is helpful but not essential.
Textbooks and Other Reading
The course uses these textbooks. Note that not all of them are required:
- C Programming: A Modern Approach, K. N. King, Norton & Co. 1996. The book covers the C programming language. It is required.
- The Practice of Programming, Brian W. Kernighan and Rob Pike, Addison-Wesley 1999. The book covers program and programming style. It is required.
- Computer Systems: A Programmer's Perspective, Randal E. Bryant and David R. O'Hallaron, Prentice-Hall 2003. The book describes computer systems from the point of view of a C programmer. In particular, it covers Intel architecture and assembly language, and some additional pertinent topics. Either this book or (4) is required, but this book is preferred.
- Programming from the Ground Up, Jonathan Bartlett 2004. The book covers Intel architecture and assembly language. It is freely available through the Web. As noted previously, either this book or (3) is required, but (3) is preferred.
- Programming with GNU Software, Michael K. Loukides & Andrew Oram, O'Reilly 1997. The book covers the GNU programming environment. Specifically, it contains one chapter on each of the programming tools that we use throughout the course. It is not required, but is highly recommended.
- The C Programming Language (second edition), Brian W. Kernighan and Dennis M. Ritchie, Prentice-Hall 1988. The book covers the C programming language. It is a reasonable alternative to (1). It is not required.
- C: A Reference Manual (fifth edition), Samuel P. Harbison & Guy L. Steele, Prentice-Hall 2002. The book is the definitive reference manual on the C programming language. It is not required.
- C Interfaces and Implementations, David R. Hanson, Addison-Wesley 1996. The book contains many examples of the abstract data type (ADT) style of programming that we use in the course. It is not required.
Books (1), (2), (3), and (5) are available in the University bookstore. All of the books except (4) are on reserve in the Engineering Library. You may use different editions of the textbooks, but if so then you are responsible for figuring out any changes in section numbers for the readings.
The course uses these manuals, for reference only:
- IA32 Intel Architecture Software Developer's Manual, Volume 1: Basic Architecture
- IA32 Intel Architecture Software Developer's Manual, Volume 2: Instruction Set Reference Manual
- IA32 Intel Architecture Software Developer's Manual, Volume 3: System Programming Guide
- Tool Interface Standard (TIS) Executable and Linking Format (ELF) Specification
- Using as, the GNU Assembler
All are freely available through the Web.
The Policies regarding collaboration and plagiarism are similar to those in COS 126. Please read them.