**2004 - 2005 Calendar**

In accordance with Senate's *Policy Regarding Inactive Courses*,
the course descriptions for courses which have not been offered in the
previous three academic years and which are not scheduled to be offered
in the current academic year have been removed from the following listing.
For information about any of these inactive courses, please contact the
Head of the Department.

**FIRST YEAR COURSES**

**1600. Basic Computing and Information Technology (F) & (W).**
This course offers an overview of computers and information technology.
It provides students with the knowledge necessary to answer questions,
such as: What is a computer system? How does it work? How is it used?
This is done through the use of popular spreadsheet, word processing and
database software packages and the Internet. Social issues and implications
will also be included.

Prerequisite: Level III Advanced Mathematics or Mathematics 1090,
which can be taken concurrently.

Lectures: Three hours per week.

Laboratory: Three hours per week.

*NOTE: Students can receive credit for only one of Computer Science
1600, Computer Science 2650 or Computer Science 2801.*

**1700. Introduction to Computer Science (F) & (W).** This course
lays the foundation for the art and the science of computing. The course contains
fundamental and topical issues in computers, languages, programming and applications.
This course is designed for potential Computer Science majors without a background
in programming, but is also available for non majors.

Prerequisite/Co-requisite: Mathematics 1090 (or equivalent), or Mathematics
1000.

Lectures: Three hours per week.

Laboratory: Three hours per week.

**1710. Object-Oriented Programming in JAVA (F) & (W).** An introduction
to fundamental programming techniques, primitive data types and operations,
program control structures and the use of pre-defined objects, classes and
methods.

Prerequisites: Mathematics 1090 (or equivalent), or Mathematics 1000, which
can be taken concurrently.

Lectures: Three hours per week.

Laboratory: Three hours per week.

*NOTE: Students who have previously completed Computer Science 2710 will
not be permitted to register or receive credit for Computer Science 1710.*

**SECOND YEAR COURSES**

**2602. Computer Programming in FORTRAN (F) & (W).** Introduction
to computers and their use; and the FORTRAN programming language and
its application to the computer solution of numeric and non-numeric problems.

Prerequisite: Mathematics 1000.

*NOTE: Students who have received credit for the former Computer
Science 2600, or the former 2601, or the former 2800 cannot receive
credit for Computer Science 2602.*

**2650. Introduction to Computing and Information Technology (F)
& (W). **This course provides a broad overview of hardware and software
components of computer systems, their structure, and principles of operation.
The topics include algorithmic problem solving, visual programming, operating
system services, computer networks, elements of artificial intelligence and
societal issues. In addition to three one-hour lectures, there will be three
hours per week of structured laboratory sessions. Internet and microcomputer
software tools in the Windows environment are introduced.

Prerequisite: Level III Advanced Mathematics, Mathematics 1090 or Mathematics
1000 which can be taken concurrently.

*NOTE: Students can receive credit for only one of Computer Science 1600,
Computer Science 2650 or Computer Science 2801.*

**2710. Problem Solving and Programming (F) & (W).**
This course emphasizes algorithmic problem solving and sound programming
techniques; for instance, mathematical models for abstract data types are
formally defined and their relevant properties are proved. Basic techniques
for the organization of data in the computer's storage are discussed and
the basics for proving properties of programs are given.

Lectures: Three hours per week.

Laboratory: Three hours per week.

Prerequisite: Computer Science 1700.

**2711. Introduction to Algorithms and Data Structures (F) &
(W).** This course includes the study of standard ways of organizing
and manipulating data in the computer's storage. Fundamental concepts
in the design and analysis of algorithms are also discussed.

Lectures: Three hours per week.

Laboratory: Three hours per week.

Prerequisite: Computer Science 2710.

*NOTE: It is recommended that students complete Computer
Science 2740 prior to registering for Computer Science 2711.*

**2740. Discrete Structures I (F) & (W).** Basic concepts
of logic. Propositional logic and its proof system. The language of
predicate logic. Sets, functions and relations, induction and recursion.
Basics of graph theory, elementary properties of graphs.

Prerequisite: Computer Science 1700.

NOTE: Credit cannot be obtained for both Computer Science 2740
and Pure Mathematics 2320.

**2741. Discrete Structures II (F) & (W).** A follow-up
of Computer Science 2740 dealing with more advanced topics in Discrete
Mathematics. These topics include: classical graph theoretic problems,
operations, algebras, abstract algebraic constructions, more on set theory
and predicate logic.

Prerequisite: Computer Science 2710 and 2740.

*NOTE: Credit cannot be obtained for both Computer Science 2741
and Applied Mathematics/Pure Mathematics 3240.
*

**2801. Introductory Computing for Business (F) & (W).** This course
introduces students to computer applications in business, document processing,
application development, decision support, and information management. A three
hour laboratory is required.

Prerequisite: Level III Advanced Mathematics, Mathematics 1090 or Mathematics
1000 which can be taken concurrently.

*NOTE: Students can receive credit for only one of Computer Science 1600,
Computer Science 2650 or Computer Science 2801.*

**THIRD YEAR COURSES**

**3700. Industrial Experience (F) & (W).** Students who are admitted
to CIIO are required to register for this non-credit course every semester
during their internship. This course is open only to students who have
been accepted into the Internship Program and provides an opportunity
for qualified students to obtain rewarding job experience of 8, 12 or
16 months of continuous duration, during the course of their studies.

Prerequisite: Admission to the Computer Industry Internship Option
(CIIO).

**3710. Vocational Languages (W).** Study of several programming languages
of vocational significance (e.g. a selection from C, C++, Prolog, Perl,
Python and LISP). The use of appropriate programming paradigms to solve
some significant problems.

Prerequisite: Computer Science 2711.

**3711. Algorithms and Complexity (F) & (W).** This course
introduces the most common and effective algorithm design techniques
(e.g. divide and conquer, dynamic programming, greedy algorithms). The
theory of NP - completeness is also discussed. Examples will be drawn
from various fields such as graph theory and string matching.

Prerequisite: Computer Science 2711 and 2741.

**3714. Programming Languages and their Processors (F) & (W).**
This course reviews typical elements of (imperative) programming languages,
and then discusses language implementations in the form of compilers
and interpreters. The topics include specification of syntax and semantics
of programming languages, discussion of expressions and assignments, side
effects, control structures, data and procedural abstractions, parameter
passing mechanisms, bindings, scopes, and type systems. The recursive-descent
technique is used for illustrations of different aspects of syntax analysis,
code generation and error recovery. Language interpreters are discussed
for both low-level and high-level languages.

Prerequisites: Computer Science 3740 and 3724.

**3717. Symbolic Computation and Recursion (W).** An exposure to symbolic
computation with emphasis on recursive programming techniques using the
programming language, SCHEME.

Prerequisites/Co-requisites: Computer Science 2711 and 2740.

**3718. Programming in the Small (F).** The main objective
of this course is to demonstrate the tools and techniques used in the
construction of small software systems. The software tools and techniques
to be covered include analysis and design of software components, software
construction tools (e.g. linkers, builders, debuggers), software library
use and design, and system integration.

Prerequisite: CS 2711 and CS 2741.

**3724. Computer Organization (F) & (W).** This course
begins with elementary logic elements and progresses through boolean
algebra, synthesis and analysis of combinational and sequential circuits,
finally covering aspects of von Newmann machine organization. It deals
with topics such as number systems, coding, arithmetic/logic units, register
transfer languages, algorithmic state machines, PLA, Mux, One Hot implementations,
microprogramming, memory, instruction processing cycle, etc.

Prerequisite: Computer Science 2711 and 2741.

**3725. Computer Architecture (F) & (W).** Using the
background offered in Computer Science 3724, this course covers advanced
topics in the areas of memory system organizations (eg. overlapping, interleaving,
cache, associative memory, virtual memory, etc.), foundations of high-speed
computations (eg. various types of dependencies, pipelining, co-operations
and contentions, synchronizations, etc.), interfacing and communications,
and alternative architectures (eg. RISC/CICS, VLIW, superscalar, systolic,
etc.)

Prerequisite: Computer Science 3724.

**3731 Numerical Methods (W). **The development of algorithms for the
numerical solution of mathematical problems and the study of the numerical
stability of these algorithms are the main objectives of this course.
The efficiency of these algorithms with respect to speed and storage
requirements is considered as well. Emphasis is also placed on the study
of the sensitivity of selected problems to perturbations in the data.
There is also a brief introduction to the development of numerical algorithms
that take advantage of advanced computer architectures, such as pipeline
processors, array processors and parallel processors.

Prerequisites: Mathematics 2000, and one Computer Science 2602
or 2710.

*NOTE: Credit cannot be obtained for both Computer Science 3731
and Applied Mathematics 3132.*

**3740. Abstract Machines, Languages and Computations (F) &
(W).** This course provides an introduction to formal languages, formal
grammars and computations. The topics include regular languages, regular
expressions, deterministic and nondeterministic finite automata, formal grammars,
Chomsky hierarchy, context-free grammars and languages, ambiguity, pushdown
automata, Turing machines, recursive and recursively enumerable languages,
Church-Turing thesis, and the concept of algorithm, universal Turing machines,
decidability, reducibility.

Prerequisite: Computer Science 2711 and 2741.

**3753. Computational Aspects of Linear Programming (F).** An introduction
to the Linear Programming Problem (LPP). The emphasis is placed upon
developing the most recent and numerically reliable algorithms for the
solution of the Linear Programming Problem. The numerical stability of
these algorithms will be examined as well. Geometric understanding of
the LPP. Simplex method for the LPP. Sparse matrix LPP. Duality and postoptimality
analysis. Extensions to the simplex algorithm. Principles of interior
algorithms for the LPP.

Prerequisite: Mathematics 2050, and one of Computer Science 2602
or 2710.

**FOURTH YEAR COURSES**

**4711. Structure of Programming Languages (F).** Programming
language design considerations; syntactic and semantic structure; survey
of typical features and operations; analysis of facilities for control
and data structuring; language extensibility; execution models; formal
specification of programming languages.

Prerequisite: Computer Science 3714.

**4712. Compiler Construction (W).** Properties of formal
grammars and languages; syntax-directed parsing and code generation;
top-down and bottom-up parsing methods; LL(k) and LR(k) grammars and
parsers; Code optimization; compiler writing tools.

Prerequisite: Computer Science 3714.

**4715 and 4717. Special Topics in Programming Languages.**

**4716. Software System Design and Implementation (W).**
This course studies the methodology of developing well-engineered large-scale
software systems. It introduces the principal paradigms of software design
and implementation and provides hands-on practice of software engineering
concepts and object-oriented techniques (with CASE tools) in project team
environments.

Prerequisite: Computer Science 4718.

**4718. Software Methodology (F) & (W).** This course
introduces methods and tools for developing, managing, and maintaining
large-scale software systems. The life-cycle of software development
is covered with special emphasis. The topics discussed include development
models and environments, project management, requirement engineering,
design and programming techniques, software validation, maintenance, and
re-engineering.

Prerequisites: Computer Science 3711. Students are encouraged to
take Computer Science 3718 prior to doing this course.

**4719. Software Specification (F).** The primary emphasis
in this course is on the mathematical specification of software in Z.
Z is a mathematical notation based on sets, functions, and relations,
using schemas to place logical constraints on sets of values. The basic
of Z notation and schema calculus will be presented, followed by examples
of the use of Z. In addition, some elementary features of a pure functional
programming language will be presented to further support the advantages
of a mathematical treatment of software.

Prerequisite: Computer Science 3711.

**4721. Operating Systems Principles (F) & (W).** This
course provides an introduction to the main concepts and techniques
used in operating systems. The topics include history of operating systems,
structures of operating systems, process management, process coordination,
deadlocks, memory management, secondary storage management, file management,
security and protection issues, elements of distributed operating systems,
and selected case studies.

Prerequisite: Computer Science 3725.

**4723. Introduction to Microprocessors (F).** The architecture
and instruction sets for several microprocessors are examined. The use
of microprocessors as device controllers; comparisons of hardware and
programed techniques; microprocessor interfacing with external devices;
methods of I/O; bus structures; modern microprocessor support devices are
discussed.

Prerequisite: Computer Science 3724.

Lecture: Three hours per week.

Laboratory: Minimum of three hours per week. Practical experience
with basic principles will be obtained through laboratory experience.

**4726-4729. Special Topics in Computer Systems.**

**4734. Matrix Computations and Applications (W).** An introduction
to linear algebra; solution to linear systems; scaling, improving and
estimating accuracy; the linear least squares problem; the eigenvalue
problem; singular value decomposition of a matrix; the generalized eigenvalue
problem.

Prerequisite: Computer Science 3731.

**4736-4739. Special Topics in Numerical Computations.**

**4741. Theory of Abstract Automata and Formal Languages (W).**
This course covers more advanced topics of abstract automata, formal
grammars and languages. They include timed and stochastic automata, probabilistic
grammars, tree automata and languages, cellular automata, matrix grammars,
controlled rewriting systems, and L-systems. Applications in computer
graphics, visualization and digital images, and modeling of systems are
used as illustrations of the formalisms.

Prerequisite: Computer Science 3740.

**4742. Computational Complexity (F).** This course is an
in-depth discussion of computational complexity theory. Topics covered
in the course include: models of computation (for both serial and parallel
computations); complexity measures; reducibility; complexity classes
(NP, PSPACE, NC, LOGSPACE and P); and randomized computations.

Prerequisites: Computer Science 3711 and 3740.

**4745-4749 (excluding 4748). Special Topics in Theoretical Aspects.**

Prerequisites: Computer Science 3711 and 3740.

**4751. Computer Graphics (F).** Display devices, display
processors, display file compilers, display transformations, structured
display files, graphical input devices, perspective, hidden line elimination,
languages and graphics systems.

In addition to three one-hour lectures, there will be a minimum
three hour laboratory per week, to be scheduled by the Department.

Prerequisites: Computer Science 3711 and Mathematics 2050.

**4753. Introduction to Artificial Intelligence (F).** Selected topics
from AI programming languages; problem solving; search and heuristic
search; game-playing; knowledge-based systems; pattern recognition; computer
vision; natural language understanding; and machine learning.

Prerequisite: Computer Science 3711.

**4754. Data Base Systems (F).** Data Base as a new approach
to data processing; survey of 3 different types of data base systems:
relational, hierarchical and network; security and integrity; comparison
studies of some existing systems.

Prerequisite: Computer Science 3725.

**4755-4769 (excluding 4756, 4759, 4761 and 4762). Special Topics
in Applications.**

**4756. Image Processing (W).** Lectures will centre on the
key analytical and algorithmic tools and concepts of digital image processing.
Topics will include Transformations, Enhancement, Encoding, Data Bases,
Segmentation and Description.

In addition to three one-hour lectures, there will be a three hour
laboratory per week, to be scheduled by the Department.

Prerequisite: Computer Science 3711.

**4759. Computer Networks (W). **The operation of computer
networks requires the following: a) communication between two computers,
b) information transfer between two computers not directly connected,
and c) services that need computer communication. This course focuses
on the standard solutions and services used to fulfill the previous requirements.
These include: physical transmission of signals, reliable communication
based on unreliable communication channels, the routing of messages between
connected computers to reach computers that are not directly connected,
e-mail, file transfer, name servers, remote terminal access and the World
Wide Web. Particular attention will be placed on the workings of the Internet.

Prerequisite: Computer Science 3725.

**4761. Human-Computer Interaction (W).** User modelling,
task analysis, user-interface design, environments and toolkits, prototyping,
user psychology, empirical methods, usability analysis. Representative
methods, techniques, and tools are applied to the design and development
of human-computer systems.

Prerequisites: Computer Science 3714 and Statistics 2510.

Prerequisite: Computer Science 3711.

**4780. Honours Project. **This course introduces computer science
honours students to research activities, familiarizes them with a special
problem in computer science, and provides independent study on an advanced
topic under the direct supervision of a member of the computer science faculty.
The topic is decided in consultation with the supervisor. The student
is required to produce a written report on the project, to include the
literature search on the topic, and to present this work at a departmental
seminar prior to the last week of the semester.

Prerequisite: Consent of the Head of Department.

*NOTE: This course is only available to students who have been
accepted into the honours program.*

Please direct inquiries to science@mun.ca.

Last modified on April 30, 2004 by R. Bruce

Up to Calendar Table of Contents

Back to Office of the Registrar's Home Page