COMPUTER SCIENCE 1000
Introduction to Computer Science
Overview of computer technology. The concept of software. Introduction to word processing, spreadsheets, electronic mail, database management, graphics and other applications. Problem solving using the computer. Social issues in computing.
Note: This course may NOT be included among the 16 courses required for a Computer Science or Mathematics major in Arts and Science.
The concept of an algorithm. Fundamentals of programming concepts in an Object-Oriented context: classes, objects and methods. Modular design. Arrays and files. Techniques for constructing elegant and robust programs.
Prerequisite: Mathematics 30 or Pure Mathematics 30, or Applied Mathematics 30 and at least 75% standing in Athabasca University's Mathematics 101.
Digital circuit design principles for small, medium and large scale integrated circuit building blocks. Switching theory, finite state machines and introductory register-level transfer design.
Prerequisites: Computer Science 1620 and Mathematics 1410.
Backus-Naur Form/syntax chart description of a language. Recursion. Abstract Data Types: lists, stacks, queues, binary trees. Algorithms for searching and sorting. Programming in an Object-Oriented environment: inheritance, polymorphism, generic programming.
Prerequisites: Computer Science 1620 and Mathematics 1410.
Introduction to the COBOL language. Sequential file processing. Sorting and merging files. Relative file processing. Random access, hashing and indexing. Indexed sequential file processing. Multi-list and inverted file organization.
Prerequisite: Computer Science 2620.
Contemporary ideas and techniques in system programming using the C language. Using and implementing software tools: filters, pipelines, sorts, text patterns and others. Programming at the shell level.
Prerequisite: Computer Science 2620.
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.
Prerequisites: Computer Science 2610 and 2620.
Abstract data types: stacks, queues, lists, trees, search trees, graphs, sets. Algorithm analysis. Algorithm techniques: divide and conquer, greedy, dynamic programming. Algorithms for searching and sorting, merging, hashing and graph algorithms.
Prerequisite: Computer Science 2620.
Recursive functions, Turing machines and effective computability. Church's thesis. Formal grammars, regular languages and context-free languages. Finite state automata, push-down automata and their equivalence to languages. The Chomsky hierarchy.
Prerequisites: Computer Science 1620 and Mathematics 2000.
Physical data organization. Logical representations of data records. Data models. Database design and normal forms. Database control. Studies of some popular database management systems.
Prerequisite: Computer Science 2660.
Organization of multimedia content, multidimensional data structures, image, text document, video, audio and multimedia databases; storage retrieval from disks, CD-ROMs and tapes; creation and delivery of networked multimedia presentations.
Prerequisite: Computer Science 3660.
Note: Credit is not allowed for Computer Science 3662 and Computer Science 3850 (Multimedia Database Management System).
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.
Prerequisites: Computer Science 1620 and Mathematics 2560.
Overview of a computer graphics system. Output primitives, display algorithms, graphics data structures. Two-dimensional and three-dimensional graphic transformations. Curves and surfaces. Picture processing.
Prerequisite: Computer Science 2620.
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: Computer Science 2620.
Note: Credit is not allowed for Computer Science 3720 and Computer Science 3850 (Software Engineering).
Classical cryptosystems, substitution ciphers, permutation ciphers; Shannon's information theory, entropy, Huffman codes, perfect secrecy; the Data Encryption Standard, cryptosystem; public key cryptosystems, the RSA cryptosystem; digital signatures.
Prerequisite: Computer Science 2620.
Note: Credit is not allowed for Computer Science 3730 and Computer Science 3850 (Cryptography).
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: Computer Science 2620.
Introduction to Lisp and Prolog. Fundamental approaches to the problems in artificial intelligence. Topics selected from problem solving, game playing, pattern recognition, knowledge representation, expert systems, heuristic programming, theorem proving, natural language understanding and computer vision.
Prerequisite: Computer Science 3740.
OSI model for data communication, data encoding and transmission techniques, data link control, circuit switching, packet switching and local area networks.
Prerequisite: Computer Science 2620.
Protocols, architectures and software for internetworking, TCP/IP protocols, routing protocols and algorithm, network architectures, distributed systems, ATM, traffic management and applications.
Prerequisite: Computer Science 3780.
Topics will be selected in the semester prior to the semester of offering on the basis of student and faculty interest.
Syntax analysis. Top down and bottom up parsing. Syntax-directed compilation, symbol tables, code generation. Semantics. Non-procedural language implementation.
Prerequisite: Computer Science 3740.
Recommended background: Computer Science 3630.
Mathematics for the analysis of algorithms. Models of computation. Advanced algorithms. NP-completeness. Topics chosen from: probabilistic algorithms, parallel algorithms, complexity classes.
Prerequisites: Computer Science 3620, 3630 and Mathematics 2865.
Structure and evaluation of operation systems. Multi-programming and multi-processing. Dynamic procedure activation. Concurrency control. Memory, processor and device management.
Prerequisites: Computer Science 2690 and 3615.
Query translation and optimization techniques. Transaction. Recovery. Concurrency control. Database integrity. Distributed database systems. New data models. Intelligent database systems.
Prerequisite: Computer Science 3660.
Topics will be selected in the semester prior to the semester of offering on the basis of student and faculty interest.