Department of Math and Computer Science
Computer Science Comprehensive Exam Syllabus
Effective: Fall 2006
SUMMARY OF THE NEW EXAM STRUCTURE
The main features are:
- 3 exams, each 1.5 hours
- Answer 2 out of 3 questions
- Sections have been renamed, reorganized, refocused
- Same topics as before with the exceptions:
- No questions on the Compiler syllabus
- New questions on Automata Theory
- Starting Fall 2006: One question will come from the combined syllabus of Automata and Complexity
- Students who have already passed 2 sections: see Re-Taking the Exam
- Questions about the exam structure: email ted.billard@csueastbay.edu
DETAILS OF THE EXAM STRUCTURE
The three part examination will be given toward the end of the Fall
and Spring quarters. On each part, a student must choose to
answer 2 of 3 questions. One and a half hours are allotted for each exam.
The exams are closed book, closed notes.
- Section 1: SYSTEMS (1.5 hours - answer 2 out of 3 questions)
- Section 2: DATA STRUCTURES (1.5 hours - answer 2 out of 3 questions)
- Section 3: THEORY (1.5 hours - answer 2 out of 3 questions)
- See a sample Fall 2006 exam.
Special Note on New Exam Structure
If a student has passed 2 sections prior to Fall 2005, and needs:
- Data Structures, Analysis of Algorithms, Complexity: take the new Section 2: Data Structures
Signups are done via the Comprehensive Exam Web Page with details from the Math/CS student center.
To be eligible to take the
exams, a student must have completed all prerequisites, the 3
required graduate level classes (6000, 6260, 6560) and at least 26
units towards the 45 required for the M.S. degree. Courses
currently being taken can be counted.
In order to pass the comprehensive examinations, a student must
pass all 3 parts. A student passing only 2 parts does not have to
retake those sections, while a student who passes fewer than 2 parts
must retake all 3 sections.
A student may not attempt just 2 of the 3 sections. A student must either
attempt all 3 or just the 1 that remains after having passed 2 of 3 at the
same time.
A student will be permitted 2 attempts to pass the exams, with a third
attempt allowed only to pass a single remaining section. We call this
a Category I student.
Otherwise, the student is in Category II and requests for an additional attempt
must be made in writing to the Graduate Committee.
For a student in Category II, the following are possible decisions of the
Committee.
- If the student showed some reasonable performance already on the test
(e.g. passed 1 out of 3 sections and was close to passing the others),
then the Committee may allow an additional attempt. The student would
be expected to submit a study plan and then check-in with the Graduate
Advisor to demonstrate that they are following this study plan.
- The Committee may ask the student to re-take a number of courses where the
student needs improvement. The student must pass these courses with a grade
of B or better before taking the exam again.
- The Committee may choose not to permit an additional attempt due to repeatedly
inadequate results.
Without a successful appeal, a Category II student will not be permitted to
re-register for another attempt. Category I students are allowed to re-register
and do not need special permission.
SYSTEMS SYLLABUS
Operating Systems
- 1. Processor management
- a. Process control blocks
- b. Long and short-term schedulers
- c. Scheduling algorithms
- d. Context switching
- e. System calls and interrupts
- f. Interprocess communication, including critical sections, semaphores
- g. Standard synchronization problems, including producer/consumer,
dining philosophers, readers/writers
- 2. Memory management
- a. Logical/physical addresses
- b. Contiguous storage
- c. Paging
- d. Segmentation
- e. Replacement algorithms, working sets
- 3. Device management
- a. Interrupt servicing
- b. Disk scheduling
- 4. Deadlock
- a. Characterization
- b. Prevention
- c. Avoidance
- d. Recovery
References:
- Silberschatz et al: Operating Systems Concepts
- Stallings: Operating Systems
- Tannenbaum: Modern Operating Systems
Computer Architecture
- 1. Digital Logic
- a. Gates
- b. Boolean algebra
- c. Karnaugh maps
- d. Combinational circuit design
- e. Fundamental combinational circuits: decoders, multiplexers, etc.
- 2. Memory
- a. Flip-flops/latches
- b. Sequential circuit design
- c. Fundamental sequential circuits: registers, counters, etc.
- d. Memory organization
- e. Bus organization
- 3. Processor organization
- 4. Machine language and assembly language design
References:
- Mano: Computer System Architecture
- Mano and Kime: Logic and Computer Design Fundamentals
- Nelson, Nagle, Irwin and Carroll: Digital Logic Circuit An. & Design
- Tanenbaum: Structured Computer Organization
- Hennesey and Patterson: Computer Architecture, a Quantitative Approach
- Patterson and Hennesey: Computer Organization and Design
DATA STRUCTURE SYLLABUS
Data Structures
- 1. Lists
- a. Sorted and unsorted lists
- b. Arrays
- c. Linked lists
- d. Stacks
- e. Queues
- 2. Recursion
- a. Recursive functions (base and general cases)
- b. Activation records (stack frame) and the run-time stack
- c. Removing recursion
- 3. Trees
- a. General trees
- b. Binary trees
- c. Tree traversals (preorder, inorder, postorder and level-order)
- d. Binary Search Trees
- e. Binary Expression Trees
- f. Heaps and Priority Queues
- 4. Search
- a. Sequential search
- b. Binary search
- 5. Sorting
- a. Elementary sorts (Insertion Sort, Selection Sort, Bubble Sort)
- b. Mergesort
- c. Heapsort
- d. Quicksort
- e. Radix Sort
- 6. Hashing
- a. Closed Hashing/Open Addressing (linear probing and quadratic probing)
- b. Open Hashing/Separate Chaining
- c. Rehashing
- 7. Big-oh/big-theta analysis of operations on the above data structures
References:
- Weiss: Data Structures and Algorithm Analysis (different versions use
different languages)
- Horowitz, Sahni, Mehta: Fundamentals of Data Structures in C++
- Sedgewick: Algorithms in C
- Dale: C++ Plus Data Structures
THEORY SYLLABUS
Programming Languages
- 1. Syntax
- a. Grammars, extended grammars, parse trees, derivations
- b. Syntax diagrams
- c. Attribute grammars
- 2. Variables: names, types, locations, scope, value
- a. Aliasing
- b. Binding times
- c. Scope rules
- d. Types, type equivalence, subtypes
- e. Storage allocation: stack, heap, static, garbage collection
- 3. Control Structures (selection, iteration, goto)
- a. Design issues
- b. Syntax
- c. Semantic questions
- d. Recursion
- 4. Procedures and Functions
- a. Storage and scope issues
- b. Parameter passing
- c. Stack and static implementations
- d. Methods
- 5. Language Design
- a. Reliability, writability etc.
- b. Imperative vs. functional languages
- c. Compiled vs. interpreted languages
References:
- Sethi: Programming Languages, Concerns and Constructs
- Sebesta: Programming Languages
- Pratt and Zellkowitz: Programming Languages, Design and Implementation
Analysis of Algorithms
- 1. Analysis Framework
- a. Asymptotic notations: big-oh, little-oh, big theta, big omega, little omega
- b. Worst-case, best-case, average-case analysis of algorithms
- 2. Recursive Functions and Recurrence Relations
- 3. Graph Algorithms
- a. Kruskal's algorithm and Prim's algorithm.
- b. Dijkstra's algorithm.
- c. Breadth-first search (BFS) and depth-first search (DFS).
- 4. Analysis of fundamental algorithms such as searching and sorting
References:
- Aho, Hopcroft, Ullman: The Design and Analysis of Computer Algorithms
- Baase and Van Gelder: Computer Algorithms
- Corman, Leiserson, Rivest, Stein: Introduction to Algorithms
- Levitin: The Design and Analysis of Algorithms
Theory of Computation
- 1. Alphabets, Strings, and Languages
- 2. Regular Languages
- a. Deterministic Finite Automata
- b. Nondeterministic Finite Automata
- c. Regular expressions and operators
- d. Pumping Lemma for Regular Languages
- 3. Context-Free Languages
- a. Grammars and Ambiguity
- b. Context-Free Grammars and Chomsky Normal Form
- c. Pushdown Automata
- d. Pumping Lemma for Context-Free Languages
- 4. Turing Machines and Decidability
- a. Decidable, Acceptable and Co-Acceptable Languages
- b. Turing-Completeness
- c. Reducibility
- d. The Halting Problem and Undecidable Problems
- 5. Complexity Classes
- a. Polynomial Reducibility
- b. Time Complexity: P, NP, coNP and EXPTIME
- c. Space Complexity: PSPACE, NPSPACE, EXPSPACE
- d. NP-Completeness and NP-Complete Problems
Starting Fall 2006: Question 3 will be from the entire Theory of Computation syllabus.
References:
- Garey and Johnson: Computers and Intractability
- Hopcroft, Motwani, Ullman: Introduction to Automata Theory, Languages, and Computation
- Johnson and Reiter: The Limits of Computation
- Kozen: Automata and Computability
- Sipser: Theory of Computation