Computer Science   (CPSC)

Faculty of Arts and Science

Computer Science 1000

Introduction to Computer Science

Credit hours: 3.00

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.

Lib Ed Req:Science

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

Contact hours per week: 3-1.5-0

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, Mathematics 0500, Mathematics 0520, admission to the Post-Diploma B.Sc. in Agricultural Studies, or admission to the Post-Diploma B.Sc. in Geography, with a Concentration in Geographical Information Science

Lib Ed Req:Science

Computer Science 1820

Discrete Structures

Credit hours: 3.00

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, Mathematics 0500, Mathematics 0520, or admission to the Post-Diploma B.Sc. in Computer Science

Lib Ed Req:Science

Computer Science 2610

Introduction to Digital Systems

Credit hours: 3.00

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

Lib Ed Req:Science

Computer Science 2620

Fundamentals of Programming II

Credit hours: 3.00

Contact hours per week: 3-1.5-0

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

Lib Ed Req:Science

Computer Science 2720

Practical Software Development

Credit hours: 3.00

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):One of Computer Science 2620 or admission to the Post-Diploma B.Sc. in Computer Science

Lib Ed Req:Science

Computer Science 3200

Practical Problem Solving in Computer Science

Credit hours: 3.00

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

Lib Ed Req: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.00

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
OR
Admission to the Post-Diploma B.Sc. in Computer Science

Lib Ed Req:Science

Computer Science 3620

Data Structures and Algorithms

Credit hours: 3.00

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
One of Computer Science 2620 or admission to the Post-Diploma B.Sc. in Computer Science

Lib Ed Req:Science

Computer Science 3630

Theoretical Foundations of Computing

Credit hours: 3.00

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):One of Computer Science 1620 or admission to the Post-Diploma B.Sc. in Computer Science AND
Mathematics 2000

Lib Ed Req:Science

Computer Science 3655

Operating Systems

Credit hours: 3.00

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

Lib Ed Req:Science

Computer Science 3660

Introduction to Database Systems

Credit hours: 3.00

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):One of Computer Science 2620 or admission to the Post-Diploma B.Sc. in Computer Science AND
One of Computer Science 1820 or Mathematics 2000

Recommended Background:
Computer Science 2720

Lib Ed Req:Science

Computer Science 3710

Computer Graphics

Credit hours: 3.00

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):One of Computer Science 2620 or admission to the Post-Diploma B.Sc. in Computer Science

Lib Ed Req:Science

Computer Science 3720

Introduction to Software Engineering

Credit hours: 3.00

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

Lib Ed Req:Science

Computer Science 3730

Cryptography

Credit hours: 3.00

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):One of Computer Science 2620 or admission to the Post-Diploma B.Sc. in Computer Science AND
Mathematics 2000

Lib Ed Req:Science

Computer Science 3740

Programming Languages

Credit hours: 3.00

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):One of Computer Science 2620 or admission to the Post-Diploma B.Sc. in Computer Science AND
Mathematics 2000

Lib Ed Req:Science

Computer Science 3750

Artificial Intelligence

Credit hours: 3.00

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):One of Computer Science 2620 or admission to the Post-Diploma B.Sc. in Computer Science

Recommended Background:
One of Computer Science 1820 or Mathematics 2000

Lib Ed Req:Science

Computer Science 3770

Human-Computer Interaction

Credit hours: 3.00

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

Lib Ed Req:Science

Computer Science 3780

Data Communications and Networking

Credit hours: 3.00

Contact hours per week: 3-2-0

Layered network design. Data encoding and transmission. Data link protocols, network protocols, and network applications. OSI and TCP/IP models.

Prerequisite(s):One of Computer Science 2620 or admission to the Post-Diploma B.Sc. in Computer Science

Lib Ed Req:Science

Computer Science 4110

Studies in Algorithms (Series)

Credit hours: 3.00

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):Fourth-year standing (a minimum of 90.0 credit hours) AND
Additional Prerequisites will be specified (including any recommended background) for individual offerings

Lib Ed Req:Science

Computer Science 4210

Studies in Systems (Series)

Credit hours: 3.00

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):Fourth-year standing (a minimum of 90.0 credit hours) AND
Additional prerequisites will be specified (including any recommended background) for individual offerings

Lib Ed Req:Science

Computer Science 4310

Studies in Computational Intelligence (Series)

Credit hours: 3.00

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):Fourth-year standing (a minimum of 90.0 credit hours) AND
Additional prerequisites will be specified (including any recommended background) for individual offerings

Lib Ed Req:Science

Computer Science 4600

Compiler Design

Credit hours: 3.00

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

Lib Ed Req:Science

Computer Science 4625

Design and Analysis of Advanced Algorithms

Credit hours: 3.00

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

Lib Ed Req:Science

Computer Science 4660

Database Management Systems

Credit hours: 3.00

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

Lib Ed Req:Science

Computer Science 4780

Distributed Systems

Credit hours: 3.00

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

Lib Ed Req:Science

Computer Science 4995

Undergraduate Thesis

Credit hours: 6.00

Contact hours per week: Variable

This is a challenging, work-intensive, research-oriented course in which students will conduct fieldwork, text, library-based or empirical research, submit a report in the form of an Undergraduate Thesis which will be made publicly available, and report orally on the work. In consultation with their Thesis Supervisor, students will define a research problem and formulate a research plan.

Prerequisite(s):Fourth-year standing (a minimum of 90.0 credit hours) AND
A minimum GPA of 3.70 calculated on all completed University of Lethbridge courses or calculated on all University of Lethbridge and transferable courses taken within the terms containing the last 20 courses (60.0 credit hours), whichever is higher

Note:Contact hours will vary. Students should be aware that this course involves regular contact with the Thesis Supervisor as well as considerable independent work.