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 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;
One of Mathematics 1410 or Mathematics 1560

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;
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 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;
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 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;
Mathematics 2000

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
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.
Prerequisite(s): Computer Science 1620;
Mathematics 2560

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

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

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 3780

Data Communications and Networking
Credit hours: 3.0
Contact hours per week: 3-0-0
OSI model for data communication, data encoding and transmission techniques, data link control, circuit switching, packet switching and local area networks.
Prerequisite(s): Computer Science 2620

Computer Science 3782

Internetworking
Credit hours: 3.0
Contact hours per week: 3-0-0
Protocols, architectures and software for internetworking, TCP/IP protocols, routing protocols and algorithm, network architectures, distributed systems, ATM, traffic management and applications.
Prerequisite(s): Computer Science 3780

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.
Prerequisite(s): Computer Science 3620;
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;
Computer Science 3630;
Mathematics 2865

Computer Science 4650

Operating Systems
Credit hours: 3.0
Contact hours per week: 3-0-0
Structure and evaluation of operating systems. Multi-programming and multi-processing. Dynamic procedure activation. Concurrency control. Memory, processor and device management.
Prerequisite(s): Computer Science 2720;
Computer Science 3615

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