The mission of the Masters of Science degree is to provide a source of knowledge to experienced Information Technology professionals, and advancement of knowledge to recent graduates of computer science programs, and the opportunity for career change to those with undergraduate preparation in fields other than computing. The degree provides classroom and laboratory experiences which emphasize the theory, application, and contemporary research in the computing sciences.
Degree requirements are available on our website.
Topics:
- Language Design Issues
- Various forms of efficiency
- Generality, orthogonality, uniformity
- Formal Syntax Definitions
- Syntax diagrams
- Backus-Naur form
- Ambiguity, associativity, precedence
- Parsing
- Semantics
- Scope rules
- Types of allocation and binding
- Control Structures
- Parameter passing modes
- Activation record
- Run-time stack
- Access links
- Object-oriented Programming Languages
- Inheritance
- Overloading and Polymorphism
- Dynamic binding
- Functional Programming Languages
- Recursion
- List handling in LISP
- Logic Programming
- Horn clauses
- Resolution and Unification
REFERENCE: Programming Languages, Principles and Practice, Louden
TOPICS:
- General Concepts
- Binary and hexadecimal numbers
- Binary representation of floating point numbers
- Instruction set architecture
- Addressing modes
- Types of operations
- RISC vs CISC
- Main hardware components
- CPU
- Registers
- Memory
- Disks
- Execution cycle/interrupts
- Bus Systems
- Memory Systems:
- Memory allocation and management
- Cache memory
- Mapping functions
- Replacement algorithms
- Data cache
- Instruction cache
- Virtual memory
- Shared memory – cache coherence
- Pipelined Processors
- Description – pipeline stages
- Instruction prefetching
- Hazards
- Branch handling
- Collision prevention
- Parallel Systems
- Instruction – level parallelism
- Superscalar
- VLIW
- Dataflow
- Predication
- Multiprocessors
- Nonuniform memory access
- Vector processing
REFERENCES: Advanced Computer Architecture: A Design Space Approach, by Sima, Fountain and Kacsuk Computer Organization and Architecture, by William Stallings (6th edition)
Emphasis will be placed on the terms and concepts listed below. TOPICS:
- Operating System Structures
- Virtual Machines
- System Calls
- Layered Systems
- Process Management
- Process creation and control structures: PCB, state diagrams, ready list, etc.
- Threads
- Scheduling (Long-term scheduling, short-term scheduling and thread scheduling)
- Interprocess Communication: semaphores, monitors, message passing, etc.
- Input/Output
- Deadlock
- Interrupts
- Device controllers
- Direct Memory Access
- Storage Management
- Static: MFT, MVT
- Dynamic memory management: paging, segmentation
- Virtual memory: paging, segmentation, virtual-to-real address mapping and translation, etc.
- Page Replacement Algorithms
- Sharing
- Protection
- File Systems
- Organization
- Implementation
- Sharing
- Protection
REFERENCES: Applied Operating Systems Concepts, by Silberschatz, Galvin and Gagne
Topics:
- Software Process Models
- Waterfall and variants
- Distribution of time, effort and cost in phases
- Evolutionary models
- Rapid Application Model
- Project Management
- Team and People Management
- Project Scheduling and Tracking
- Analysis and Design Tools and Techniques
- Requirements Gathering
- Structured Programming
- Data Flow and Data Structure Design Techniques
- Object Oriented Programming
- UML Diagrams
- Module Design
- Software Quality
- 11 Quality Factors
- Assurance Activities
- Metrics (product and process)
- Standards (CMM and ISO9000)
- Testing
- Types and philosophies of testing
- Choice of test data
- Object oriented testing
- Debagging
REFERENCES: Software Engineering, 6th ed, by Ian Sommerville
Topics:
- Mathematical Foundations
- Terminology
- Complexity notations
- Data Structures
- Matrices
- Stacks, queues, graphs
- Trees: binary search trees, red-black trees, splay trees, B-trees
- Tables / functions
- Sorting / Searching
- Insertion sort, Selection sort
- Merge sort
- Heap sort
- Quick sort
- Order n sorts (Radix, Bucket)
- Methods
- Dynamic programming
- Greedy algorithms
- Graph Algorithms
- Search
- Minimum spanning trees
- Shortest path
- NP-Completeness
- Concepts of P and NP
REFERENCE: Introduction to Algorithms, by Cormen, Leiserson, and Rivest