Course Descriptions

Analog and Digital Electronics
Physics 210 Bergman 3 Credits
Prerequisite: Mathematics 210

Introduction to Robotics
CMPT 240 Bergman 3 Credits

Computer Science I
CMPT 242 Shields 3 Credits

This course provides an introduction to fundamental concepts of computer science, both as a prelude to further study in the discipline and to serve broader educational goals. Focus will be on principles of object-oriented programming and design, including the study of basic data types and control struc­tures, objects and classes, polymorphism and recursion. The course will use the Java language. It will be offered at least once a year. No prerequisite.

Algorithms and Data Structures
CMPT 243 Shields 3 Credits

This is the second course in the ACM computer science curriculum and lays the foundation for futher work in the discipline. Topics covered include algorithmic analysis, asymptotic notation, central data structures such as lists, stacks, queues, hash tables, trees, sets, and graphs, and an introduction to complexity theory. It is not a language course and is intended for students who already have competence in a high level language such as C++ or Java. Offered yearly. Prerequisite: CMPT 242 or permission.

Computer Networking
CMPT 244 Staff 3 Credits

This is a course on computer networking covering the Internet protocol stack, implementation technologies, and management and security issues. Topics will include service paradigms and switching alternatives, application layer protocols such as HTML, SMTP, and DNS, transport layer protocols like TCP and UDP, network layer (IP) and routing, data link protocols such as Ethernet, ATM, and Token Ring, and physical media. We will also look at issues of network management and security, as well as new technologies involving multimedia and wireless networks. Prerequisite CMPT 242 or permission.

Computer Organization
CMPT 250 Shields 3 Credits

This course introduces the low-level organization and structure of computer systems, including boolean logic and digital circuits, numeric representation and computer arithmetic, instruction sets and assembly language programming, basic CPU design, and more advanced architecture topics such as pipelining and memory management. Offered yearly. Prerequisite: CMPT 242 or permission.

Discrete Mathematics
CMPT 252 Shields 3 Credits

The mathematical foundations of computer science, including propositional and predicate logic, sets, algorithm growth and asymptotic analysis, mathematical induction and recursion, permutations and combinations, discrete probability, solving recurrences, order relations, graphs, trees, and models of computation. Prerequisite: MATH 210.

Functional Programming
CMPT 255 Shields 2 Credits

A modular course providing an introduction to programming in a functional language--either LISP, Scheme, ML or Haskell. This course cannot substitute for CMPT 242.

Scientific Computing
CMPT 260 Kramer 3 Credits

Artificial Intelligence
CMPT 264-364 Shields 3 or 4 Credits

An examination of selected areas and issues in the study of artificial intelligence, including search algorithms and heuristics, game-playing, models of deductive and probabilistic inference, knowledge representation, machine learning, neural networks, pattern recognition, robotics topics, and social and philosophical implications. Prerequisite: CMPT 243 or permission.

Programming Languages
CMPT 312 Shields 4 Credits

An examination of the design and implementation of modern programming languages, covering such paradigms as imperative languages, object-oriented languages, functional languages, and logic-oriented languages. Topics will include syntax, semantics, pragmatics, grammars, parse trees, types, bindings, scope, parameter passing, and control structures. Offered alternate years. Prerequisite: CMPT 243.

Operating Systems
CMPT 316 Shields 4 Credits

This course is an introduction to the principles of centralized and distributed operating systems. It examines the management of memory, processes, devices and file systems. Topics covered include scheduling algorithms, communications, synchron-ization and deadlock, and distributed operating systems. Prerequisite: CMPT 250.

Theory of Computation
CMPT 320 Shields 4 Credits

The study of models of computation and their associated formal languages and grammars. Topics will include finite automata, pushdown automata, turing machines, regular and context free languages, the Chomsky heirarchy, the Church-Turing thesis, and some major limitation results on computability and complexity. Offered alternate years. Prerequisite: CMPT 243.

Cryptography and Number Theory
Mathematics 324 Altman 4 Credits