Students that do not earn a B or higher in a core course are
required to take a comprehensive examination for that core course.
Graduate Comprehensive Examinations
A comprehensive exam is similar in scope to a final exam in
the core course. Each core course comprehensive examination
is designed to last approximately one hour however students
are allowed 1.5 hours per exam being taken. Failure of a core
course comprehensive examination requires a second
comprehensive exam covering the part failed. A failure of a
second comprehensive examination renders the student
ineligible to continue in the computer science MS program.
Students needing to take multiple comprehensive examinations
do so in a single examination period and receive all necessary
examination parts at the start of the examination period.
This allows students to work on exams in any order and at
their own pace. Students are allowed 1.5 hours for each exam
being taken.
Comprehensive exams are normally offered according to the
following schedule:
first offering - following the spring semester;
second offering - for students failing the first offering, the
exam will be given a second time during the summer following the
first offering.
Algorithms
Topics:
Issues involved in the analysis of algorithms: big-Oh notation,
worst case analysis, recurrence relations, the master method
Advanced Data Structures: red-black trees, B-trees
Greedy algorithms: be able to describe the method and examples
Dynamic programming: be able to describe the method and examples
Computer Architecture: A Quantitative Approach by Hennessey and
Patterson, Third Edition. Chapters 1, 2, 3, 4, 5, 6, and Appendix A.
Operating Systems
Topics:
What an operating system is; special terminology;
the notion of system call.
Operating system structure. Monolithic, layered,
virtual machines, client-server.
Processes.
The process model and its implementation.
IPC.
Scheduling.
I/O. Principles of I/O harware. Principles of I/O
software. Interrupts. Device drivers. Block vs character
devices. Deadlocks.
Memory management. Basic, swapping, and virtual memory.
(Lots of good stuff here.)
File systems.
Files. Directories. The "Unix model". Implementation.
Security and protection.
We used Minix as an important example. I won't ask detailed
questions about the code, but you need to understand the structure,
fundamental communication mechanisms, "world view" of Minix
Suggested Readings:
Class notes.
Andrew S. Tanenbaum and Albert S. Woodull,
Operating Systems, 2nd ed., Prentice Hall, 1997
Bruce Jacob and Trevor Mudge,
Virtual Memory: Issues of Implementation,
Computer, Vol. 31, No. 6, June, 1998, pp 33-43.
Software Engineering
Topics:
History of software development, software product and process, system life cycles
System engineering, abstraction and modeling, system specification and design
Requirements analysis and specification, analysis modeling - data, function and behavior
Object-oriented analysis, use case diagrams and scenarios, class diagrams and state diagrams
Design principles and concepts; coupling, cohesion and other design criteria