The Department of Computer Science offers a Diploma program for qualified university graduates from diverse backgrounds who wish to obtain expertise in Computer Science fundamentals. Graduates of the Diploma program will obtain qualifications similar to those of graduates of the Bachelor of/Baccalaureate in Computer Science program. Upon completion of the Diploma, those with superior academic records who wish to pursue their studies may apply for admission to a 45 credit Master's Program in Computer Science.
COMP 5201 Computer Organization and Assembly Language (4 credits)
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.
COMP 5261 Computer Architecture (3 credits)
Prerequisite: COMP 5461 previously or concurrently.
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.
COMP 5361 Discrete Structures and Formal Languages (4 credits)
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.
COMP 5421 Advanced Programming (4 credits)
Prerequisite: COMP 5511.
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.
COMP 5461 Operating Systems (4 credits)
Prerequisites: COMP 5201, 5511.
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.
COMP 5481 Programming and Problem Solving (4 credits)
Prerequisites: MATH 204, 205 or equivalent.
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. Lectures: three hours per week. Tutorial: one hour per week. Lab: 3 hours per week.
COMP 5511 Principles of Data Structures (4 credits)
Prerequisite: COMP 5481 or equivalent training or experience in Java programming.
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.
COMP 5531 Files and Databases (4 credits)
Prerequisites: COMP 5361, 5511.
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.
COMP 5541 Tools and Techniques for Software Engineering (4 credits)
Prerequisites: COMP 5361, COMP 5511, ENCS 6721; or permission of the Graduate Program Director.
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.
COMP 5611 Elementary Numerical Methods (3 credits)
Prerequisites: COMP 5361; COMP 5511.
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.