Homework Assignment Policies
Contact Information, Office Hours, Tutor Hours, Discussion Board
Topics Covered in the Course
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:
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:
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.
A student’s overall combined average score will be calculated based on the following formula:
Midterm Examination 30%
Final Examination 40%
Class Participation 10%
Some of the factors that increase the "Class participation" score:
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 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
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.
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.
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.
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)
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).
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
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).
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
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.
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.
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
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
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.
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)
File system, file structure, types of files, file access, operations on files, file directories, file system implementations. UNIX and Windows file systems.
READING: Handout, Sections 2.3.2 – 2.3.5.
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.
|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|