Why pursue a Graduate Diploma in Computer Science?
The Diploma in Computer Science is offered to 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.
Graduate students in computer science and software engineering have access to a wide range of laboratory and computing facilities. There are laboratories for database and information systems, software engineering, distributed systems, computer networks, 3D graphics, computational mathematics and visualization, pattern recognition and machine intelligence, computational linguistics, fungal genomics and usability testing, and projects. The department also makes extensive use of the university’s central computing systems.
To be considered for admission, applicants must hold a Bachelor’s degree with above-average standing, and must have completed COMP 5481 Programming and Problem Solving or equivalent courses in an object-oriented language such as C++ or Java prior to entry into the Diploma program. Equivalence will be determined by the Diploma Program Director. Applicants deficient in mathematics or English are required to make up their deficiencies before they can be considered for admission. The Faculty reserves the right to set a quota on the number of admissions to the program.
Credits. A fully-qualified candidate is required to complete a minimum of 31 credits.
Courses. Candidates are required to take COMP 5201, 5361, 5421, 5511, 5461, 5531, 5541, and ENCS 6721.
Academic Standing. Please refer to the Academic Standing section of the Calendar for a detailed review of the Academic Regulations. Program Specific Regulations. An Assessment Grade Point Average (AGPA) of at least 2.70 based on a minimum of 8 credits is required.
Time Limit. Please refer to the Academic Regulation page for further details regarding the Time Limit requirements.
Graduation. To be eligible to graduate, students must have completed course requirements with a CGPA of at least 2.70.
Priority will be given to those who apply within the official deadlines listed above. Some programs may continue to accept applications after these deadlines. For more information, please contact the department.
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, 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.