C20.0035 Fundamentals of Computer Systems
Spring 2000
Prof. Alex Tuzhilin


Self-Test Problems from the Book: Prob. 3, p. 299; Prob. 11, p. 300; Prob. 17, p. 300.
Course Materials

Course Overview



Homework Assignment Policies

Grading Policy

Contact Information, Office Hours, Tutor Hours, Discussion Board

Topics Covered in the Course

Class-by-Class Schedule



Course Overview

This course provides an in-depth introduction to the major features of the hardware and software components of a modern computer system. The instructor will take the students "under the hood" of a computer system and de-mystify the principles of its operations. The students will learn the material through the combination of class lectures and discussions, in-class demos, and homework assignments.

The material covered in this course is divided into two major parts. The first part covers the structure and the organization of the main components of a computer system. The course starts with the "micro-level" perspective describing the main "building blocks" of a computer, and how these building blocks are put together using certain architectural design principles. Then the course covers the "macro-level" view of a computer, including machine instruction set and the macro-level architecture of a machine. It is also explained how the macro-level design of a machine can be implemented using the micro-level components. Then various computer performance issues are discussed and different practical examples using Pentium, Merced (the new upcoming microprocessor jointly developed by Intel and Hewlett Packard) and picoJava II microprocessors are presented. Finally, the course will cover various recent trends and developments taking place in the PC industry.

The second part of the course covers the fundamentals of operating systems. In particular, it is examined during this part of the course what an operating system is, how it works, what computer resources it manages and how. Then the course provides an in-depth coverage of how an operating system manages processors, memory, files and different I/O devices. This material is illustrated using various practical examples from popular operating systems, such as Unix, Windows NT and Windows 98.

Upon the completion of this course, the students will:


Prerequisite Skills

Before taking this course, the student should be comfortable with using a PC (e.g. by taking C20.0001) and have some basic experience in a high-level programming language, such as C, Pascal, or Java. Such an experience is acquired by taking a course in one of these languages (e.g., V22.0380 or V22.0101) in the past or concurrently with this course.

Although no knowledge of a specific programming language is required, the textbook uses a couple of examples written in the Java programming language, which the student should be able to understand having the basic knowledge of C or Pascal.



The following textbook is required for the course and can be purchased at the NYU Bookstore:

In addition, the following textbook is optional and can be borrowed from the reserve section of the Bobst Library: In addition to these textbooks, supplementary material will be provided both electronically and as a hard copy.


 Homework Assignments

Homework assignments are due at the end of the class on the day specified in the assignment. Late penalty of 10 points will be applied to the assignments handed after the end of this class and before the next class. Assignments handed-in after the next class will lose 20 points. Assignments handed-in after two class meetings will lose 30 points. Assignments handed-in after three class meetings will get grade 0.


Grading Policy

A student’s overall combined average score will be calculated based on the following formula:

Assignments 20%

Midterm Examination 30%

Final Examination 40%

Class Participation 10%

Some of the factors that increase the "Class participation" score:

Some of the factors that decrease the "Class participation" score: Final grades will be based on the formula above, and more or less, will adhere to the so-called "Stern Curve."


Academic Integrity

Students may discuss homework assignments in general terms with their classmates. Except for the assignments in which collaboration is explicitly authorized, each student is required to submit his or her own solution. Duplication of homework assignments in part or as a whole is not permitted, and any violations of this rule will be treated severely. In this case, both the "copier" and the original source are in jeopardy.

Cheating on an examination is a zero-tolerance offense, and the penalties are extremely severe.

Students are urged to familiarize themselves with the school’s policies on Conduct, Plagiarism, and Examinations that can be found at http://www.stern.nyu.edu/Academic/Undergrad/Advising/StudentGuide/conduct.html.


Contact Information, Office Hours, Tutor Hours, Discussion Board
Office: KMEC 9-78
Phone: 998-0832
E-mail: atuzhili@stern.nyu.edu
WWW: www.stern.nyu.edu/~atuzhili/C200035.htm

 Office Hours: Tuesday 3:20 – 4:50 p.m., Thursday 1 – 2 p.m. If you can’t see me during the office hours, you may schedule an appointment with me.

Tutor:  Will be available in the Teaching Assistance Center (Rm. 6-70 in KMEC) for a few hours per week. His name will be announced later.

Discussion Board: If you are planning to ask a question via e-mail, consider posting it on the class discussion board instead. This allows all students to benefit from the questions and answers. Submitting non-trivial questions or answering the questions posed by other students is considered a form of class participation. The URL of the discussion board is:



Topical Outline of the Course

(The chapters assigned to specific topics are from the Tanenbaum’s textbook)

Module I: Structured Computer Organization

  1. Course Overview
  2. Course objectives and overview of the topics that the student will learn in the course; multilevel organization of contemporary computers; technological and economic forces shaping the computer industry; the computer spectrum and the ubiquity of modern computers ranging from disposable to supercomputers; cutting through the barrage of buzzwords.

    READING: Chapters 1.1.1, 1.1.2, 1.3.

  3. Data Representation in Computer Systems: bits, bytes and more
  4. Binary, decimal and hexadecimal number systems; bits, bytes and words; conversion from one number system to another; binary arithmetic; ASCII codes.

    READING: Appendix A (sections A1 – A3, A5); p. 109-112.

  5. Components of a Computer:
  6. Overview of the major components of a computer, including CPU, memory, buses, I/O devices, disks and other secondary storage, printers, keyboards, and monitors; overview of how a computer works: fetch-decode-execute cycle; overview of the "building blocks" of a modern computer.

  7. Arithmetic Circuits
  8. Gates and boolean algebra; integrated circuits; multiplexers, decoders, adders, shifters, Arithmetic Logic Unit, clocks.

    READING: Section 3.1.1 – 3.1.3, 3.2 (except pp. 131 – 133)

  9. Electronic Memories and Buses
  10. Structure of one-bit memory, structure of a register, memory organization, memory chips, static and dynamic RAM, different types of ROM; concept of a bus and how it works, types of buses, examples of some popular buses: ISA and PCI buses.

    READING: Sections 2.2.1, 2.2.2, 2.2.6, 3.3 (except 3.3.2), 3.4.1 -- 3.4.3, 3.6.1, 3.6.2 (pp. 183 – 186).

  11. Computer System Organization: the Micro-Architecture Level
  12. The micro-architecture level of a computer; how the "building blocks" described above can be put together to form a computer architecture; the structure of a CPU and the data path; an in-depth explanation of how a machine executes machine instructions in the fetch-decode-execute cycle; microcode and the principles of the micro-programmed control of a computer; hardwired control alternative and the tradeoffs between the hardwired and micro-programmed controls.

    READING: Section 4.1

  13. Computer System Organization: the Macro-Architecture Level
  14. The macro-architecture level of a computer; machine instruction set, register structure, structure of machine instructions; examples: Pentium II and Java Virtual Machine; the relationship between Java Virtual Machine and Java programming, and the portability property of Java programs;

    READING: p. 303-305, Section 5.1 (except Sec. 5.1.2 and 5.1.6).

  15. Implementing the Macro Level of a Computer Using the Micro Level: the Case Study of the Java Virtual Machine
  16. A simplified version of the Java Virtual Machine (executing only integer instructions) is presented at the macro-level, including its simplified instruction set and its memory model; compilation of Java programs into Java Virtual Machine programs is discussed; mapping Java Virtual Machine programs into microcode is presented.

    READING: Sections 4.2 and 4.3

  17. Performance Issues
  18. Measuring performance of modern computers: MIPS, MOPS and other FLOPS; issues affecting this performance; how to improve performance: cache memory, pipelining, branch prediction, out-of-order execution, speculative execution, parallelism; RISC vs. CISC computer organization and their tradeoffs.

    READING: Sections 2.1.3 -- 2.1.6, 2.2.5, 4.5 and Handout.

  19. Case Studies of Pentium II, Merced, and picoJava II
  20. Description of the micro-architecture of Pentium II and picoJava II CPUs; insights into the upcoming Merced microprocessor (jointly designed by Intel and Hewlett Packard) and how it should improve certain shortcomings of Pentium.

    READING: Sections 1.4.1, 1.4.3, 4.6.1, 4.6.3, 4.6.4, 3.5.1, 3.5.3, 5.5.8, 5.5.10, 5.8.

  21. Overview of the PC Industry: Trends and Developments
  22. Overview of the recent trends and developments in the PC industry, such as the development of the "PC-on-the-chip" by Intel, free-PC offerings, economic and marketing trends in the industry, etc.


    Module II: Operating Systems

  23. What is an Operating System?
  24. Operating system (OS) as an extended machine and the functions that it performs; OS as a resource manager and the types of resources that an OS manages; operating systems on the "outside" (the user view): system calls vs. shells (command interpreters) vs. GUI front-ends; APIs (Application Programming Interfaces) and Win32 API; operating systems on the "inside" (overview of its internal structure); kernel vs. user execution modes; types of OS architectures; examples: Unix and Windows NT.

    READING: Handout, Section 6.4.1

  25. Processor Management
  26. The concept of a process and multiprocessor systems; process hierarchies, process states, implementation of processes in modern operating systems; the concept of a thread and multithreaded systems; process scheduling and different types of scheduling strategies; preemptive vs. non-preemptive scheduling; interrupts and interrupt handling; examples from Unix and Windows.

    READING: Handout

  27. Memory Management
  28. Physical vs. virtual memory; paging, implementation of paging, demand paging and working set model, page replacement strategies; segmentation and its implementation; virtual memory of Windows NT.

    READING: Section 6.1 (6.1.1 – 6.1.7)

  29. File Management
  30. File system, file structure, types of files, file access, operations on files, file directories, file system implementations. UNIX and Windows file systems.

    READING: Handout

  31. I/O Management
I/O devices and device controllers; device independent I/O software and device drivers; BIOS; hard disks, their structure and organization; IDE and EIDE drives; SCSI disks and controllers.

READING: Handout, Sections 2.3.2 – 2.3.5.



Class-by-Class Schedule

Please note that, if necessary, the following schedule may be altered depending on the progress made during the course. If this is the case, the instructor will provide the modified schedule in advance.
Lect Date Topic
1 Jan 18 Course Overview; Multilevel organization of contemporary computers
2 Jan 20 Data Representation in Computer Systems: bits, bytes and more
3 Jan 25 Components of a Computer
4 Jan 27 Arithmetic Circuits
5 Feb 1 Arithmetic Circuits 
6 Feb 3 Electronic Memories
7 Feb 8 Electronic Memories
8 Feb 10 Computer Buses
9 Feb 15 Computer Buses
10 Feb 17 Computer System Organization: the Micro-Architecture Level
11 Feb 22 Computer System Organization: the Micro-Architecture Level
12 Feb 24 Computer System Organization: the Micro-Architecture Level
13 Feb 29 The Macro-Architecture Level of a Computer
14 Mar 2 Implementing the Macro Level of a Computer Using the Micro Level
15 Mar 7 Implementing the Macro Level of a Computer Using the Micro Level
16 Mar 9 Midterm Exam
17 Mar 21 Performance Issues
18 Mar 23 Performance Issues
19 Mar 28 Case Studies of Pentium II, Merced and picoJava II
20 Mar 30 Overview of the PC Industry: Trends and Developments
21 Apr 4 What is an Operating System?
22 Apr 6 Processor Management
23 Apr 11 Processor Management
24 Apr 13 Memory Management
25 Apr 18 Memory Management
26 Apr 20 File Management
27 Apr 25 File Management
28 Apr 27 I/O Management