OMSE 510: Computing Foundations

Francis Chang (Home page | francis at francischang dot com)
Office hours: By e-mail appointment (for now)

Office hours: By e-mail appointment (for now)

Tuesdays, Neuberger Hall 387

Class e-mail list:


Remote bradcast:
Not Available

About This Course
This course has been designed for graduate level software engineering students who are lacking key foundation computer science knowledge in the areas of computer architecture and operating systems. This course may also be taken by students needing or wanting to upgrade their knowledge in these areas. With the approval of an OMSE advisor, OMSE students may register in this course and count it for credit as an OMSE elective.
The chief prerequisite for this course is a basic understanding of C or C++.
Course Description
Students are first introduced to the building blocks of a basic computing machine including the central processing unit, data transfer buses, registers, program counters, various types of memories, and instruction sets. A range of processor architectures and organizations including pipelining, virtual memory and caching are explored. The course then explores the principles of operating systems and how they relate to the underlying hardware structures. Concurrency, process synchronization, process scheduling, memory management, interrupt handling, and device management are also explored.

Required textbooks:

Textbooks & Readings:
Computer Systems: A Programmer's Perspective
Bryant, Randal E. & O'Hallaron, David R.
Prentice Hall, August 2002
ISBN: 013034074X

Modern Operating Systems, 2nd Ed.
Author: *Tanenbaum, Andrew S.
Prentice Hall, January 2001
ISBN: 0130313580

Optional Textbook:
Computer Architecture A Quantitative Approach 2nd ed
John L. Hennessy & David A. Patterson
Morgan kaufmann Publishers, 1996
ISBN 1-55860-329-8

Course Outline

Slides Available at
Last updated... sometimish