- CIS 4820: Game Programming
This course will focus on the components found in modern 3-D game engines. It will
emphasize the algorithms and data structures required to create real-time computer graphics, sound and
network communications.
- CIS 4650: Compilers
This course is detailed study of the compilation process. Topics include interpreters,
overall design implementation of a compiler, techniques for parsing, building and manipulating intermediate
representations of a program, implementation of important features, code generation, and optimization.
- CIS 4510: Computer Security Foundations
This course covers basic concepts and practices in computer and network security.
This includes topics such as fundamental concepts of computer security, network security, threat landscape,
threat intelligence and attack methods, ethical hacking concepts and other hacking techniques, security
technology and security policies, and cloud security.
- CIS 4300: Human Computer Interaction
This course examines the methods for user interface software design, including
interface representations and testing. Topics which will be studied include the evaluation and design
of sample application systems, impacts of computer-based information systems on individuals and organizations,
implementation and testing tools, and planning of learning stages and design of assistance subsystems.
- CIS 4030: Cloud Computing
This course examines the fundamentals of cloud computing and software
development for cloud platforms. It covers topics such as virtualization, architecture of cloud systems,
programming for the cloud, resource management, as well as privacy and security issues.
- CIS 4010: Mobile Computing
This course is an introduction to mobile computing and mobile application
development. It examines mobile technology, application development, user interaction, data storage, and
software tools.
- CIS 3760: Software Engineering
This course is an examination of the software engineering process, the production
of reliable systems and techniques for the design and development of complex software. Topics include
object-oriented analysis, design and modeling, software architectures, software reviews, software quality,
software engineering, ethics, maintenance and formal specifications.
- CIS 3750: Systems Analysis & Design in Applications
This course is an introduction to the issues and techniques encountered in the
design and construction of software systems, focusing on the theory and models of software evolution.
Topics include requirements and specifications, prototyping, design principles, object-oriented analysis
and design, standards, integration, risk analysis, testing and debugging.
- CIS 3530: Data Base Systems & Concepts
This course is a study of data organization and data management principles with the
perspective of analyzing applications suitable for implementation using a DBMS. This will include an
analysis of several data base models, query specification methods, and query processing techniques.
Overview of several related issues including concurrency control, security, integrity and recovery.
- CIS 3490: Analysis & Design of Computer Algorithms
The design and analysis of efficient computer algorithms are studied. Topics which
will be studied include: standard methodologies, asymptotic behaviour, optimality, lower bounds,
implementation considerations, graph algorithms, matrix computations (e.g. Strassen's method), NP-completeness.
- CIS 3210: Computer Networks
This course covers the high-level (protocol) oriented aspects of computer networks,
specifically: application, session, transport and network layers. It includes the Internet, socket-level
programming, multimedia and quality of service issues. The hardware aspects (switches, LANs, modems,
transmission paths) are only covered at a functional level.
- CIS 3150: Theory of Computation
This course explores the theory of computation including automata theory, Turing
machines and their variants, formal languages, parsing, the Halting problem, undecidability, and
NP-completeness.
- CIS 3110: Operating Systems
This course covers operating systems in theory and practice by focusing on
the components in a system: scheduling, resource allocation, process management, multi-programming,
multi-tasking, I/O control, file systems, and mechanisms for client-server computing using examples
from contemporary operating systems.
- CIS 3090: Parallel Programming
This course examines the current techniques for design and development
of parallel programs targeted for platforms ranging from multicore computers to high-performance
clusters, with and without shared memory. It includes theoretical models for, and hardware
effects on, parallel computation, the definitions of speedup, scalability, and data- versus
task-parallel approaches. The course will also examine strategies for achieving speedup based
on controlling granularity, resource contention, idle time, threading overhead, work allocation,
and data localization.
- CIS 2910: Discrete Structures in Computing II
This course is a further introduction to discrete structures and
formal methodologies used in computer science, including sequences, summations, recursion,
combinatorics, discrete probability, and graph theory.
- CIS 2750: Software Systems Development and Integration
This course introduces techniques and tools used in the development
of large software systems. Students learn methods for organizing and constructing modular
systems, manipulating files, introductory interface design, and use of databases. Software
tools for managing projects, database connectivity, configuration management, and system
application programmer interfaces are also covered.
- CIS 2520: Data Structures
This course is a study of basic data structures, such as lists,
stacks, queues, trees, and tables. Topics which will be examined include abstract data
types, sequential and linked representations, and an introduction to algorithm analysis;
various traversal, search, insertion, removal, and sorting algorithms. C programming
language used throughout the course.
- CIS 2500: Intermediate Programming
In this course students learn to interpret a program specification
and implement it as reliable code, as they gain experience with pointers, complex data
types, important algorithms, intermediate tools and techniques in problem solving,
programming, and program testing. C programming language used throughout the course.
- CIS 2430: Object Oriented Programming
This course introduces the Object Oriented approach to programming and
algorithm design. Topics will include the creation and use of objects from class libraries,
user defined objects, inheritance, modularity, generic code, components, collections and
containers, and an introduction to OO design methodologies. Java used throughout the course.
- CIS 2170: User Interface Design
This course is a practical introduction to the area of user interface
construction. Topics include user interface components and their application, best practices
for user interface design, approaches to prototyping, and techniques for assessing interface
suitability.
- CIS 2030: Structures and Applications of Microcomputers
This course examines the components of a computer system, including
memories, CPU, buses, and input/output subsystems and interface hardware. Programming of
these systems is studied, including instruction sets, addressing modes, assembly/machine
language programming, development of algorithms for data acquisition, display, and process
control.
- CIS 1910: Discrete Structures in Computing I
This course is an introduction to discrete structures and
formal methodologies used in computer science, including Boolean algebra, propositional
logic, predicate logic, proof techniques, set theory, equivalence relations, order
relations, and functions.
- CIS 1300: Programming
This course examines the applied and conceptual aspects
of programming. Topics may include data and control structures, program design,
problem solving and algorithm design, operating systems concepts, and fundamental
programming skills. C programming language used throughout the course.
- CIS 1050: Web Design and Development
An introduction to the basics of designing and
developing a website with HTML and CSS. It examines the basic concepts, technologies,
issues and techniques required to develop and maintain websites.