# Computer Science

## Computer Science

### Courses

Introduction to Robotics

Computer Science 240 Bergman

3 credits

This course gives an introduction to the background and theory of robotics, as well as to the practical electronic, mechanical, and programming aspects of building and controlling robots. Topics include sensors, feedback, control, and mechanical construction. For ease of prototyping we use an off the shelf robot controller, the Handy Board, an 8-bit microprocessor that can run Interactive C, and the LEGO Technic system. Along with a variety of sensors, these materials will allow the class to work through a series of projects that introduces robotics. In a broader sense, this course serves as an introduction to solving engineering problems. Prerequisite: Permission of the instructor. No previous programming or robotics experience is required.

This course is generally offered once every two years. Last taught S12.

Computer Science I

Computer Science 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 structures, objects and classes, and polymorphism and recursion. The course will use the Java language. No prerequisites.

This course is generally offered three times every two years.

Algorithms and Data Structures

Computer Science 243 Shields

3 credits

This is the second course in the ACM computer science curriculum and lays the foundation for further 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. Prerequisite: Computer Science 242 or permission of the instructor.

This course is generally offered once every year and a half.

Computer Networking

Computer Science 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: Computer Science 242 or permission of the instructor.

Last taught F09.

Computer Organization

Computer Science 250 Shields

3 credits

This course introduces the low-level organization and structure of computer systems, including boolean logic and digital circuits, forms of 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. Prerequisite: Computer Science 242 or permission of the instructor.

This course is generally offered once every year and a half. Last taught F10.

Discrete Mathematics

Computer Science 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: Mathematics 210.

This course is offered when there is sufficient student interest. Last taught S12.

Scientific Computing

Computer Science 260 Kramer

3 credits

The course covers computer algorithms commonly used in the physical and biological sciences: Minimizing a function, special functions, Fast Fourier Transforms, numerical solution to differential equations, etc. The end of the semester is devoted to an independent project, with a topic chosen by the student and subject to approval of the instructor. In recent years these projects have ranged from bioinfomatics to quantum mechanics. Requirements: The student should have a laptop with compiler installed (one may be available as a loan from ITS, though the student is responsible for this arrangement). The student should already be fluent in a programming language (a prior programming course is not required). The student should be taking or have completed vector calculus (Mathematics 221).

This course is generally offered as a tutorial.

Artificial Intelligence

Computer Science 264 Shields

3 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: Computer Science 243 or permission of the instructor.

This course is offered when there is sufficient student interest. Last taught F07.

Programming Languages

Computer Science 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. Prerequisite: Computer Science 243.

This course is generally offered once every two years. Last taught F11.

Operating Systems

Computer Science 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, synchronization and deadlock, and distributed operating systems. Prerequisite: Computer Science 250.

This course is offered when there is sufficient student interest. Last taught S11.

Theory of Computation

Computer Science 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 contextfree languages, the Chomsky hierarchy, the Church-Turing thesis, and some major limitation results on computability and complexity. Prerequisite: Computer Science 243.

This course is generally offered once every two years. Last taught S11.