Computer Science Graduate Diploma Courses
Description: Programming in a subset of a suitably chosen assembly language; instruction-set level view of computers; translation of sample high-level language constructs to the instruction-set level. User-level view of the computer system through an operating system. Privileged modes of operation of the hardware for achieving goals such as protection and resource management; the hierarchy of the memory system as a resource, its concepts and requirements. Input/output including interrupt handling.
Prerequisite/Corequisite: The following course must be completed previously or concurrently: COMP 5461.
Description: Computer architecture models: control-flow and data-flow. Concurrency and locality, data dependency theory. Instruction level parallelism. Instruction scheduling. Pipelined processors. Vector processors. Thread level parallelism. Multiprocessors. Shared memory models. Coherence protocols. Interconnection networks. Performance issues. Advanced topics in contemporary computer architectures. Case studies.Notes:
Students who have completed COMP 326 may not take this course for credit.
Description: Discrete mathematics: sets, logic, quantifiers, relations, and functions. Regular languages: finite automata (deterministic and non-deterministic), regular expressions, regular grammars, pumping lemmas for regular languages, closure properties for regular languages. Context-free languages: context-free grammars, parsing and ambiguity, normal forms for grammars, pushdown automata, closure properties for context free languages.
Prerequisite/Corequisite: The following course must be completed previously: COMP 5511.
Description: Designing classes and programs. Program development. Encapsulation; dependency minimization. Inheritance hierarchies; abstract classes and interfaces; frameworks, Reading and writing files; serialization. Applications of inheritance and generics. Design and use of class libraries; user interface design; database and network programming.
Description: Basic concepts of operating systems and system programming. Processes, interprocess communication, and synchronization, memory allocation, segmentation, paging. Resource allocation, scheduling, performance evaluation. File systems, storage devices, I/O systems. Protection, security, and privacy. Advanced operating system concepts: distributed systems, multi-processor and parallel systems, real-time systems.
Description: Overview of programming and problem solving. Operators and expressions. Types, values, and variables; type conversion. Classes, objects, and methods. Assignment, conditional and repetitive statements. Arrays. Input and Output. Program structure and organization; encapsulation. Recursion and its uses. Designing classes and member functions; aggregation and inheritance. Introduction to libraries and their applications.
Component(s): Lecture 3 hours per week; Tutorial 1 hour per week; Laboratory 3 hours per week
Prerequisite/Corequisite: The following courses must be completed previously: COMP 5481 or equivalent training or experience in Java programming.
Description: Definition, use, and application of fundamental data structures and associated algorithms. Asymptotic analysis of algorithms. Storage management: arrays, strings, lists and trees. Data abstraction: stacks, queues, priority queues, sets, and tables. Searching and sorting. Programming techniques: designing classes for data structures.
Description: Introduction to file management: basic file structures and access methods, sequential and indexed-sequential files, B+-trees and R-trees; external sorting; dynamic hashing; clustering techniques. Introduction to database management: fundamental data models - hierarchical, network, and relational; data dependencies; normal forms; and relational database design. Formal query languages: relational algebra, calculus; commercial languages: SQL, QBE. Fundamentals of data processing.
Prerequisite/Corequisite: The following courses must be completed previously: COMP 5361; COMP 5511; ENCS 6721. If prerequisites are not satisfied, permission of the Graduate Program Director is required.
Description: The software life cycle. IEEE and MIL standards for software documentation. Formal methods. Software architectures. Software design and prototyping. Interfacing and encapsulation. Use of libraries, frameworks, and CASE tools. Implementation and maintenance. Verification and validation.
Description: Error analysis and computer arithmetic. Numerical methods for solving linear systems, Gaussian elimination, LU decomposition. Numerical solution of non-linear equations, fixed point iterations, rate of convergence. Interpolations and approximations, Lagrange polynomials, divided differences, discrete least-square approximation, Legendre polynomials. Numerical integration, Newton-Cotes formulas, Romberg integration. Emphasis will be on the development of efficient algorithms.Notes:
Students who have completed COMP 361 may not take this course for credit.