Program Planning


Computer Science (CPSC)

Computer Science (CPSC)
Faculty of Arts and Science

Computer Science 1000

Introduction to Computer Science
Credit hours: 3.0
Contact hours per week:
3-2-0
Overview of computer technology and computer science. Hardware and the concept of software. Introduction to common applications. Problem solving using the computer. Social issues in computing.
Substantially Similar:
Management 2060
Note:
This course may NOT be included among the courses required for a Computer Science or Mathematics major in Arts and Science.

Computer Science 1620

Fundamentals of Programming I
Credit hours: 3.0
Contact hours per week:
3-1-1
Introduction to problem-solving and algorithms. Machine representation of data. Implementation of algorithms in a programming language. Fundamentals of programming concepts including branching and loops. Top-down programming and modular design. Arrays. Records. Techniques for constructing elegant and robust programs.
Prerequisite(s):
One of Mathematics 30‑1, Mathematics 30‑2, Pure Mathematics 30, or Mathematics 0500

Computer Science 1820

Discrete Structures
Credit hours: 3.0
Contact hours per week:
3-0-1
Introduction to proofs. Algorithms and complexity. Divisibility and modular arithmetic. Matrix algebra. Counting. Discrete probability. Graphs and trees.
Prerequisite(s):
One of Mathematics 30‑1, Mathematics 30‑2, Pure Mathematics 30, or Mathematics 0500
Substantially Similar:
Mathematics 2865 (prior to 2011/2012)

Computer Science 2610

Introduction to Digital Systems
Credit hours: 3.0
Contact hours per week:
3-2-0
Review of number systems. Boolean algebra and simplification of Boolean functions. Combinational circuits. Sequential circuits. Registers and counters.
Prerequisite(s):
Computer Science 1620 AND
One of Computer Science 1820 or Mathematics 1410

Computer Science 2620

Fundamentals of Programming II
Credit hours: 3.0
Contact hours per week:
3-1-1
Introduction to object-oriented programming techniques: classes, objects, and methods. Generic programming. Recursion. Abstract data types: lists, stacks, queues, priority queues, binary trees. Algorithms for searching and sorting, and algorithm analysis.
Prerequisite(s):
Computer Science 1620 AND
One of Computer Science 1820 or Mathematics 1410

Computer Science 2720

Practical Software Development
Credit hours: 3.0
Contact hours per week:
3-2-0
Advanced object-oriented techniques including inheritance and polymorphism. Introduction to object-oriented design. Error detection and handling. Testing. Correctness and efficiency of programs. Collaborative software project. Version control. UNIX programming tools and scripting languages.
Prerequisite(s):
Computer Science 2620

Computer Science 3200

Practical Problem Solving in Computer Science
Credit hours: 3.0
Contact hours per week:
1.5-1.5-0
A study of problem solving techniques including divide and conquer, dynamic programming, greedy algorithms, search and backtracking, heuristics for hard problems. The techniques will be applied for programming solutions to small but challenging problems from a variety of areas, including arithmetic and algebra, number theory, graph theory, combinatorics, geometry, strings.
Prerequisite(s):
Computer Science 3620 AND
Application to the Department of Mathematics and Computer Science
Note:
The course is intended for students who enjoy solving programming contest problems and will serve as preparation for the ACM International Collegiate Programming Contest.

Computer Science 3615

Computer Architecture
Credit hours: 3.0
Contact hours per week:
3-0-0
Register-level transfer design. Constructions of the basic subsystems of computers (control unit, arithmetic and logic unit, data path, memory, input/output). Assembly of subsystems into basic computer architecture. Performance enhancement techniques.
Prerequisite(s):
Computer Science 2610 AND
Computer Science 2620

Computer Science 3620

Data Structures and Algorithms
Credit hours: 3.0
Contact hours per week:
3-0-0
Efficient algorithm design and algorithm analysis. Abstract data types and data structures. Algorithm design and problem-solving techniques for sorting problems, tree-based problems, and graph-based problems.
Prerequisite(s):
Computer Science 1820 AND
Computer Science 2620

Computer Science 3630

Theoretical Foundations of Computing
Credit hours: 3.0
Contact hours per week:
3-0-0
Computation as strings and languages. Regular languages, finite state automata and their equivalence. Formal Grammars. Context-free languages, push-down automata and their equivalence. Recursive languages and recursively enumerable languages. Turing machines and effective computability. Church’s thesis. The Chomsky hierarchy.
Prerequisite(s):
Computer Science 1620 AND
Mathematics 2000

Computer Science 3655

Operating Systems
Credit hours: 3.0
Contact hours per week:
3-0-0
Overview of operating systems: history, functionality, design issues. Operating system principles and structures. Concurrency: process state, context switches, mutual exclusion, semaphores, deadlock. Scheduling: preemption, schedules, processes and threads. Memory management: swapping, paging, segmentation, placement and replacement algorithms.
Prerequisite(s):
Computer Science 2720 AND
Computer Science 3615
Equivalent:
Computer Science 4650 (prior to 2009/2010)

Computer Science 3660

Introduction to Database Systems
Credit hours: 3.0
Contact hours per week:
3-0-0
Fundamental concepts of database management: modelling, design, and implementation. The languages and facilities provided by database management systems, and system implementation techniques.
Prerequisite(s):
Computer Science 2620 AND
One of Geography 3740 or Mathematics 2000
Recommended Background:
Computer Science 2720
Substantially Similar:
Management 3831 (prior to 2006/2007)

Computer Science 3710

Computer Graphics
Credit hours: 3.0
Contact hours per week:
3-0-0
Two- and three-dimensional geometric transformations. Viewing and projection principles. Object representation and simple lighting. Hidden line and surface removal, clipping. Surface Representations: Bezier and Spline methods. Texture mapping. Graphics pipeline programming.
Prerequisite(s):
Computer Science 2620

Computer Science 3720

Introduction to Software Engineering
Credit hours: 3.0
Contact hours per week:
3-0-0
System life cycle and methodologies, estimating and planning, requirements gathering and specification, system external design, system internal design, development and implementation, testing, operation and maintenance, quality assurance.
Prerequisite(s):
Computer Science 2720

Computer Science 3730

Cryptography
Credit hours: 3.0
Contact hours per week:
3-0-0
Classical ciphers, substitution ciphers, permutation ciphers. Shannon’s information theory, entropy, Huffman codes, perfect secrecy and the one-time pad. Symmetric-key ciphers: block and stream ciphers. Public-key cryptosystems. Key distribution. Message authentication and digital signatures.
Prerequisite(s):
Computer Science 2620 AND
Mathematics 2000

Computer Science 3740

Programming Languages
Credit hours: 3.0
Contact hours per week:
3-0-0
A comparison of programming languages and their implementations. One language from each of the following families: functional, declarative/logic, Object-Oriented. Topics selected from: garbage collection, heap management, procedural languages, historical developments.
Prerequisite(s):
Computer Science 2620 AND
Mathematics 2000

Computer Science 3750

Artificial Intelligence
Credit hours: 3.0
Contact hours per week:
3-0-0
Problem-solving in artificial intelligence. Knowledge representation and reasoning. Selected topics from uncertainty, probabilistic reasoning, planning and robotics, learning techniques, pattern recognition, natural language processing, and computer vision.
Prerequisite(s):
Computer Science 2620
Recommended Background:
One of Computer Science 1820 or Mathematics 2000

Computer Science 3770

Human-Computer Interaction
Credit hours: 3.0
Contact hours per week:
3-0-0
Characteristics of humans in the context of user interfaces. Design principles and methodologies. Interface evaluation with and without user involvement. Development of graphical user interfaces. Applications of human-computer interaction in program design.
Prerequisite(s):
Computer Science 2720
Equivalent:
Computer Science 3850 (Human-Computer Interaction) (prior to 2009/2010)

Computer Science 3780

Data Communications and Networking
Credit hours: 3.0
Contact hours per week:
3-0-0
Layered network design. Data encoding and transmission. Data link protocols, network protocols, and network applications. OSI and TCP/IP models.
Prerequisite(s):
Computer Science 2620

Computer Science 3850

Topics in Computer Science
Credit hours: 3.0
Contact hours per week:
3-0-0
Topics will be selected in the semester prior to the semester of offering on the basis of student and faculty interest.

Computer Science 4110

Studies in Algorithms (Series)
Credit hours: 3.0
Contact hours per week:
3-0-0
Advanced topics in algorithms. Subjects may include, but are not limited to, discrete and continuous optimization, computational geometry, computational mathematics.
Prerequisite(s):
A major in Computer Science or Computer Science and Geographical Information Science AND
Fourth-year standing (a minimum of 90.0 credit hours)

Computer Science 4210

Studies in Systems (Series)
Credit hours: 3.0
Contact hours per week:
3-0-0
Advanced topics in the design of systems. Subjects may include, but are not limited to, database systems, computer networks, operating systems, topics related to circuit design, compilers and compilation techniques, parallel and distributed systems.
Prerequisite(s):
A major in Computer Science or Computer Science and Geographical Information Science AND
Fourth-year standing (a minimum of 90.0 credit hours)

Computer Science 4310

Studies in Computational Intelligence (Series)
Credit hours: 3.0
Contact hours per week:
3-0-0
Advanced topics in computational intelligence. Subjects may include, but are not limited to, artificial intelligence, data mining, image processing, audio processing, natural language processing, human-computer interaction, bioinformatics, computer vision, machine learning.
Prerequisite(s):
A major in Computer Science or Computer Science and Geographical Information Science AND
Fourth-year standing (a minimum of 90.0 credit hours)
Equivalent:
Computer Science 4850 (Advanced Artificial Intelligence) (prior to 2012/2013) is equivalent to the same offering in the Computer Science 4310 Series.

Computer Science 4600

Compiler Design
Credit hours: 3.0
Contact hours per week:
3-0-0
Lexical and syntax analysis. Top-down and bottom-up parsing. Syntax-directed definition, semantics, and code generation.
Prerequisite(s):
Computer Science 3620 AND
Computer Science 3630
Recommended Background:
Computer Science 3740

Computer Science 4625

Design and Analysis of Advanced Algorithms
Credit hours: 3.0
Contact hours per week:
3-0-0
Mathematics for the analysis of algorithms. Models of computation. Advanced algorithms. NP-completeness. Topics chosen from: probabilistic algorithms, parallel algorithms, complexity classes.
Prerequisite(s):
Computer Science 3620 AND
Computer Science 3630

Computer Science 4660

Database Management Systems
Credit hours: 3.0
Contact hours per week:
3-0-0
Systems issues and requirements related to the maintenance and the integrity of the data such as data storage, querying, and transaction management.
Prerequisite(s):
Computer Science 3660

Computer Science 4780

Distributed Systems
Credit hours: 3.0
Contact hours per week:
3-0-0
Distributed computing environments. Interprocess communication. Distributed file systems. Synchronization. Protection and security.
Prerequisite(s):
Computer Science 3655 AND
Computer Science 3780
Equivalent:
Computer Science 3850 (Distributed Systems) (prior to 2009/2010)

Computer Science 4850

Topics in Computer Science
Credit hours: 3.0
Contact hours per week:
3-0-0
Topics will be selected in the semester prior to the semester of offering on the basis of student and faculty interest.