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 16 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 Pure Mathematics 30, Mathematics 30, Mathematics 0500, or [Applied Mathematics 30 and at least 75 percent standing in Athabasca University's Mathematics 101]

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 Pure Mathematics 30, Mathematics 30, Mathematics 0500, or [Applied Mathematics 30 and at least 75 percent standing in Athabasca University's Mathematics 101]
Substantially Similar: Mathematics 2865

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.

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.

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 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.

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.

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.

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.
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.
Recommended Background: Computer Science 2720
Substantially Similar: Management 3830; Management 3831 (prior to 2006/2007)

Computer Science 3670

Numerical Methods
Credit hours: 3.0
Contact hours per week: 3-0-0
Accuracy and errors in numerical calculations. Finite differences and interpolation. Numerical differentiation and integration. Curve fitting. Solution of linear and non-linear systems of equations. Numerical solution of differential equations.

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.

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.

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 3740

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

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 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.
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.

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.
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.