Computing Science

Course Descriptions

1226 Introduction to Computing Science and Programming
3 credit hours
Prerequisite: There is no formal prerequisite for this course; however, some prior experience with analytical thinking is highly recommended.

This course is designed to introduce the student to some of the key concepts in computing science and simultaneously provide introductory hands-on experience using a modern programming language.  General topics will include a brief history of computing; the place of hardware, software, and policies in any computing environment; a high-level view of the components of a computing system; and the tools one can expect to find in any programming environment.  Programming language topics will include input/output; simple data types; operators and expressions; looping and decision-making control constructs; subprograms and parameter passing; overall program structure and programming style considerations.  Problem-solving and program-design strategies will include divide-and-conquer and top-down design with step-wise refinement.  Students will design algorithms with data input and output to solve particular problems, and later implement those solutions as computer programs in the current programming language of choice.

Classes 3 hrs. and lab 3 hrs. a week.


1227 Computer Programming and Problem Solving
3 credit hours
Prerequisite: CSCI 1226

Students apply basic programming and problem-solving skills to typical problems one might encounter when working in any scientific field. Problems include creation, analysis and manipulation of textual and/or binary data sets of various kinds. Students will write programs in a suitable language to perform these activities, but may also be introduced to various software packages that can be used for similar purposes.

Classes 3 hrs. and lab 3 hrs. a week.


1228 Advanced Computer Programming and Problem Solving
3 credit hours
Prerequisite: CSCI 1226

This course is a continuation of CSCI 1226, and is designed to prepare students for higher-level courses, especially CSCI 2341. Students will continue to solve problems, of increased complexity, in the programming language used in CSCI 1226, and may also be exposed to problem solving in a second programming language, if deemed appropriate.

Classes 3 hrs. and lab 3 hrs. a week.


2301 Data Structures and Numerical Methods for Engineers
3 credit hours
Prerequisites: CSCI 1226 or EGNE 1204.

This class introduces students to system analysis and software techniques.  Topics covered include data structures such as stacks, queues, multiple linked lists, searching and sorting algorithms, and their implementation in an object-oriented programming language.  Students use linear algebra and numerical methods in engineering examples, while leaning to implement properly structured solutions.

Note:  This course is intended only for Engineering students.  Computing Science students (CPSC or CSCI) should take CSCI 2341 instead.  No credit will be given for this course simultaneously with or subsequent to CSCI 2341.

Classes 3 hrs. and recitation 1.5 hrs. a week. 


2307 Theoretical Foundations of Computing Science [MATH 2307]
3 credit hours
Prerequisites: CSCI 1228 and MATH 2305

This course complements CSCI 2341.  It uses various mathematical concepts to define tools and address problems of fundamental status in Computing Science.  Topics will involve notions related to graphs, formal languages and computability.  Moreover, depending on the focus, other fundamental tools will be considered, which are utilized in topics such as database modeling, information coding, complexity, knowledge modeling, program correctness and automated reasoning.

Classes 3 hrs. plus recitation 1.5 hrs. a week.


2308 Introduction to Numerical Analysis [MATH 2308]
3 credit hours
Prerequisite: MATH 1211, CSCI 1226 or equivalent programming experience.

Discussion of errors in numerical analysis. Theoretical and practical considerations of numerical procedures in non-linear equations in one variable, systems of linear equations, and systems of non-linear equations, interpolation, polynomial approximation and integration.

Classes 3 hrs. plus recitation 1.5 hrs. a week.


2309 Selected Topics in Numerical Analysis [MATH 2309]
3 credit hours
Prerequisite: CSCI 2308 [MATH 2308] or permission of instructor. 

Selected topics from CSCI 2308 [MATH 2308] may be further explored.  Other topics may include linear least squares, eigenvalues and eigenvectors and optimization.

Classes 3 hrs. plus recitation 1.5 hrs. a week.


2327 Digital Logic and Computer Architecture
3 credit hours
Prerequisite: CSCI 1228.

This course considers data representation, digital logic and computer organization at the assembly language level. 

The student will be introduced to the concept of computation at the digital logic level by studying devices for storing data, transferring data, and making decisions based on data patterns (e.g. flip-flops, registers, tri-states, bus structures, multiplexers, comparators, and adders). Computer organization includes the fetch—execute cycle of a processor, addressing modes of the machine, the data path, the memory hierarchy, and the input/output subsystem.

Classes 3 hrs. and recitation 1.5 hrs. a week.


2341 Data Structures and Algorithms I
3 credit hours
Prerequisite: CSCI 1228.

This course introduces the fundamental Abstract Data Types of computing science, along with their availability and usage in the context of a modern programming language. These will include contiguous and non-contiguous lists, stacks, queues, trees, maps, sets, and hash tables. A number of widely used algorithms, searching and sorting in particular, will also be discussed, along with their complexity. Emphasis in this course will be placed on understanding when and how to use the various structures and algorithms studied, and students will implement, using the programming language of choice, problem solutions that will help them gain that understanding.

Classes 3 hrs. and recitation 1.5 hrs. a week.


2355 Internet Technologies and Web Programming
3 credit hours
Prerequisite: CSCI 1227 or CSCI 1228.

This course will discuss a number of fundamental architectures, protocols and scripting languages for displaying and transferring data of various kinds in the context of the Internet and the World Wide Web.  Students will gain experience with web programming concepts and techniques.

Classes 3 hrs. and recitation 1.5 hrs. a week.  


2356 Mobile App Development
3 credit hours
Prerequisite: CSCI 1226 or equivalent.

The emergence of new technologies makes it possible to develop apps that can be run on multiple devices (phablets, smart phones, smart TVs, and tablets).  The objective of this course is to identify important features that should be part of an app and then introduce the necessary technologies for their implementation.  The course will be appealing to computing as well as other science and engineering students.

Classes 3 hrs. and recitation 1.5 hrs.  a week.


3328 Assembly Level Machine Organization and Language
3 credit hours
Prerequisite: CSCI 2327

This course builds on the experience obtained in CSCI 2327 by examining some topics in more detail and applying them to a particular processor. The students will also learn assembly language programming for the processor.

Classes 3 hrs. and recitation 1.5 hrs. a week.


3342 Data Structures and Algorithms II
3 credit hours
Prerequisite: CSCI 2341.

This course continues the study of data structures and algorithms begun in CSCI 2341, with the emphasis now shifting to implementation details. Students will be required to solve problems using both contiguous and linked structures, using dynamic data storage when and where appropriate. A selection of algorithms using these structures will also be discussed.

Classes 3 hrs. and recitation 1.5 hrs. a week.


3421 Data Communications and Networking
3 credit hours
Prerequisites: CSCI 2327 and Co-requisite: CSCI 3431

Students examine the structure, operation, and APIs of computer communication networks are examined. Topics include protocols (such as IP, TCP, and HTTP) network architecture, administration, routing, address resolution, and supporting technologies.


3428 Software Engineering
3 credit hours
Prerequisite: CSCI 2341.

In this course, students will obtain experience in the development of large scale software systems.  The software life-cycle will be studied in detail.  Issues of software documentation, reliability, and maintenance will be discussed.  Several strategies for specification (formal and informal), design (functional, top-down, object-oriented, etc.), implementation, and verification and validation will be considered.  The course will involve a major project that will expose students to the stages of the software life-cycle.  Students should expect to work in teams.


3430 Principles of Programming Languages
3 credit hours
Prerequisite: CSCI 2341.

This course is designed to introduce the student to some of the key concepts underlying all programming languages by comparing and contrasting major programming language paradigms such as procedural, functional, logic, object-oriented, and parallel.  Topics may include history and evolution of programming languages; programming language design goals, the place of programming languages in the programming environment; virtual machines; data representation, manipulation and sharing; type checking; storage management; control structures; language mechanisms that support modularity; syntax and semantics.  The laboratory component will provide hands-on experience with several different languages from different paradigms.

Classes 3 hrs. and recitation 1.5 hrs. a week.


3431 Operating Systems
3 credit hours
Prerequisite: CSCI 2327

Students will study various aspects of operating systems with emphasis on the following topics: history, evolution, and philosophies; tasking and processes; process coordination and synchronization; scheduling and dispatch; physical and virtual memory organization; device management; file systems and naming; security and protection; communications and networking; distributed operating systems; and real-time concerns.  Examples of two or more operating systems will be used to gain some systems programming experience.

Classes 3 hrs. and recitation 1.5 hrs. a week.


3451 Theory of Computation
3 credit hours
Prerequisite: CSCI 2341 and CSCI 2307 [MATH 2307]

Students are introduced to some of the fundamental theoretical concepts in computing science.  Students will be introduced to the concepts of decidable, P, NP, NP-complete, and NP-hard problems.  Students study two classes of languages of interest to computing scientists, namely, regular and context free languages, and corresponding automata for recognizing these languages, will also be studied.  A brief discussion on the semantics of programming languages will be included.  Turing machines will be used to explore the concept of decidability along with examples of decidable and undecidable problems. 


3461 Database Systems
3 credit hours
Prerequisite: CSCI 2341 and MATH 2305.

This course provides an introduction to the design, implementation, use and maintenance of databases.  Topics will include: data models such as the entity-relationship model, the relational model, and the object-oriented model; relational languages such as relational algebra, relational calculus, and SQL; the theory of normal forms of database design; use of indexes for efficient date retrieval; and database implementation using a commercial database management system.  Other topics may be included, such as query optimization, database control, and distributed database systems.


3462 File Structures
3 credit hours
Prerequisite: CSCI 2341 and MATH 2305.

This course provides the student with the tools and techniques required to organize and efficiently maintain data on a secondary storage devices.  The course will consider the implementation and performance of structures such as fields, records and buffers; primary and secondary indexes; multi-level indexes and B-trees; indexed sequential files; and hash structures.  Also included will be some discussion of advanced sort and merge algorithms for secondary storage.


3465 Object-Oriented Programming
3 credit hours
Prerequisite: CSCI 2341.

This course provides and introduction to object-oriented analysis, design, and programming.  Emphasis will be on the creation of reusable software.  The object-oriented approach to software development will be compared and contrasted with other approaches, such as the classical “structured” approach.  Students will gain hands-on experience by programming in a suitable object-oriented programming language.

Classes 3 hrs. and recitation 1.5 hrs. a week.  


3475 Human Computer Interaction
3 credit hours
Prerequisite: CSCI 1227 or CSCI 1228 or CISY 2320, or permission of the instructor

The objective of this course is to teach future software developers, designers and managers to avoid pitfalls of wasting time and energy building software that no one will be able to use. This is accomplished by leading the students through a design process, from identifying and learning about the users/clients to creating and finally evaluating prototypes. We will consider both classic and cutting-edge interaction technologies as they relate to human factors.  This is a project-based course.

Classes 3 hrs. and recitation 1.5 hrs. a week.  


3482 Artificial Intelligence
3 credit hours
Prerequisite: CSCI 2341, and MATH 2305.

Students will consider philosophical, mathematical, experimental, and implementation aspects of such topics as problem solving, searching, game playing, genetic algorithms, learning, neutral networks, natural language processing, vision, knowledge representation, logic, expert systems, reasoning under uncertainty, fuzzy sets, planning, and robotics.  Students will also gain practical experience using one or more of the popular AI tools and/or by adding A1 modules to an existing game.


3826 – 3849 Special Topics in Computing Science
3 credit hours
Prerequisite: permission of instructor.

Approved seminar courses dealing with specialized subject-matter that are announced from time to time by the Department.


4408 Numerical Solution of Initial Value Problems [MATH 4408]
3 credit hours
Prerequisite: CSCI 2308 [MATH 2308] or permission of instructor.

This course considers the numerical solution of initial value ordinary differential equations.  Topics may include multi-step methods, Runge-Kutta methods, stability, stiffness, step-size selection, local error, etc.


4409 Numerical Solution of Boundary Value Ordinary Differential Equations [MATH 4409]
3 credit hours
Prerequisite: CSCI 2308 [MATH 2308] or permission of instructor.

This course is concerned with the numerical solution of boundary value ordinary differential equations.  Topics may include finite difference methods, shooting methods, collocation methods, conditioning, mesh selection, error estimation, etc.


4423 Cryptography
3 credit hours
Prerequisite:  CSCI 2341 and MATH 2305.

This course provides an introduction to various aspects of data security.  Possible topics: classical encryption methods such as Vignere and Vernan ciphers; the Data Encryption Standard; key distribution methods and public key encryption; and authentication using digital signatures.  Applications of these methods in the design of protocols for data privacy and security will also be studied.


4452 Algorithm Analysis
3 credit hours
Prerequisite: CSCI 2341 and MATH 2305.

Techniques of efficient algorithm design will be discussed including: divide and conquer; greedy methods; dynamic programming; graph traversal; and change of representation.  Measuring algorithm performance and lower bounds for various problems will be studied. 


4463 Numerical Software
3 credit hours
Prerequisite: CSCI 2341 and CSCI 2308 [MATH 2308].

This course will study software development issues in the area of numerical analysis and. examine a number of numerical software tools such as Fortran90, Matlab, and Maple. The main course project will be the development of a numerical software package by students working in programming teams in a selected area of numerical algorithms.

Classes 3 hrs. and recitation 1.5 hrs a week.


4471 Computer Graphics
3 credit hours
Prerequisite: MATH 1211, MATH 2301, and CSCI 2341.

This course is an overview of the principles and algorithms of computer graphics. Topics include:  representation, of primitive objects (curves, and surfaces), texture mapping, radiometry, graphic toolkits, and animation systems. Typical projects have ranged from coding animations to writing a ray tracer.

Classes 3 hrs. and recitations 1.5 hrs. a week.


4474 Text Mining and Social Network Analysis
3 credit hours
Prerequisite: CSCI 2341.

This course considers manipulations on a bibliographic database.  Topics to be covered include an introduction and basic definitions, inverted file structures, automatic indexing, prototype systems, retrieval and refinements and natural language processing.


4476 Computer Vision and Digital Image Processing
3 credit hours
Prerequisite: CSCI 2341.

This course provides an introduction to the concepts used in computer vision and digital image processing.  Computer vision techniques extract information from an image, while image processing techniques modifies the image for viewing by the human eye.  Topics covered include the following: sampling and resolution, image processing, edge detection, segmentation, discrete image transforms, restoration and enhancement, and image compress.


4477 Data Mining
3 credit hours
Prerequisite: CSCI 2341.

Data mining refers to a family of techniques used to detect interesting knowledge in data.  With the availability of large databases to store, manage and assimilate data, the new thrust of data mining lies at the intersection of database systems, artificial intelligence and algorithms that efficiently analyze data.  The course will use concepts from pattern recognitions, statistics, data analysis and machine learning.  The size of databases and high complexity of techniques present many interesting computational challenges.


4500 Research Thesis
6 credit hours
Prerequisite: honours standing and permission of the Department.

Research project in computing science carried out by the student under the supervision of any member of the Department. The student will submit a thesis and present it orally. 


4826 - 4849 Special Topics in Computing Science
3 credit hours
Prerequisite: permission of instructor.

This course covers advanced topics in computing science chosen according to the interests of the students and instructor, and requires some measure of independence and initiative from the student.