Major & Minor

Course Descriptions

100-Level Courses

CSCI 100: Scientific Computing.
Show some of the connections between computer science and other disciplines such as mathematics and the natural sciences. We will study the fundamental computer science concepts for the design and implementation of solutions to problems that can be solved through approximations, simulations, interpolations, and recursive formulas.
No prerequisite. Annually, fall and spring.

CSCI 102: Multimedia Computing.
The purpose of this course is to show some of the connections between the humanities, social science and computer science. We will study the fundamental computer science concepts for the design and implementation of animations, simulations, simple computer games and three-dimensional virtual worlds.
No prerequisite. Annually, fall.

CSCI 110: Imperative Problem Solving.
This course emphasizes the imperative view of problem solving, supported by problem solutions implemented in the C programming language. Some topics include: top-down and procedural design; algorithm development for interesting problems such as the Sieve of Eratosthenes, a Magic Square, displaying the Mandelbrot Set; introduction to recursion; C language constructs such as variables, sequential statements, control structures, functions, parameters, pointers, arrays; and introduction to the C standard library.
Prerequisite: CSCI 100 or CSCI 102. Annually, fall and spring.

CSCI 120: Data Structures & Algorithms.
Building on the basic problem solving skills developed in CS 11000, this course adds tools to solve more complex problems using the C++ programming language. It introduces classic data structures used to store collections of data efficiently. It further develops software-engineering practices - including testing, documentation, and object-oriented programming - that aid in the construction of solutions for complex problems.
Prerequisite: CSCI 110. Annually, fall and spring.

200-Level Courses

CSCI 200: Algorithm Analysis.
This course covers standard and advanced algorithms for problem solving in computer science. Brute force, recursion, greedy strategies and dynamic programming techniques are applied to real world problems. Time- space analysis is performed for various algorithm and data structure pairings. The limitations of algorithms are also studied in the context of NP-completeness.
Prerequisite: CSCI 12000 and MATH 21100 or 21500 or 22300. Annually, spring.

CSCI 210: Principles of Computer Organization.
This course provides an overview of computer systems design and architecture, and machine language. Topics include: instruction set design, register transfers, data-path design, pipelining, controller design, memory sys- tems, addressing techniques, microprogramming, computer arithmetic. A survey of popular computer systems and microprocessors reinforce how real computer systems are designed.
Prerequisite: CSCI 12000. Alternate years, fall.

CSCI 212: Operating Systems.
Beginning with a brief historical perspective of the evolution of operating systems over the last fifty years, stu- dents are introduced to the important problems in operating system design and implementation. This discus- sion will cover the tradeoffs that can be made between performance and functionality during the design and implementation of an operating system. Particular emphasis will be given to three major OS subsystems: process management (processes, threads, CPU scheduling, synchronization, and deadlock), memory manage- ment (segmentation, paging, swapping), and file systems.
Prerequisite: CSCI 12000. Alternate years, fall.

CSCI 220: Theory of Computation.
The theory of abstract machines and formal languages is introduced in this course. Computability by finite automata, pushdown automata and Turing machines is examined and related to pattern matching, lexical analysis, compilation and programming for digital computer systems. Proofs by induction, construction, con- tradiction and reduction are used to formalize computability theory and the limitations of computing.
Prerequisite: CSCI 12000 and MATH 21500 or 22300. Alternate years, fall.

CSCI 222: Programming Languages.
Beginning with a study of the historical development of programming languages, students are introduced to the decisions involved in the design and implementation of such programming language features as elemen- tary, structured, and user-defined data types, sub-programs, sequence control, data control and storage man- agement. Selected features of several existing languages are examined in the context of these issues.
Prerequisite: CSCI 12000. Alternate years, fall.

CSCI 230: Software Engineering (Mobile Computing).
Software engineering is the discipline concerned with the application of theory, knowledge, and practice to effectively and efficiently build reliable software systems that satisfy the requirements of customers and users. Students are introduced to the field of software engineering in the context of the design and implementation of software for mobile devices.
Prerequisite: CSCI 12000. Alternate years, spring.

CSCI 232: Software Engineering (Databases).
Software engineering is the discipline concerned with the application of theory, knowledge, and practice to effectively and efficiently build reliable software systems that satisfy the requirements of customers and users. Students are introduced to the field of software engineering in the context of the design and implementation of database-driven software applications.
Prerequisite: CSCI 12000. Alternate years, spring.

CSCI 279: Problem Seminar.
This course provides the opportunity for students to practice solving challenging computer science problems. Typically, this is for those students intending to prepare for the ACM programming contest in which the College participates. The ACM contest is the culmination of this course.
(S/NC course, .25 course credit. May be taken more than once.)
Prerequisite: CSCI 11000. Annually.

300-Level Courses

CSCI 300: Computer Graphics.
This course explores the theory and application of computer graphics through the evolution of graphics algo- rithms and rendering hardware. Topics include 2-D and 3-D transformations and projections, illumination models, texture mapping, animation techniques, user interfaces, and rendering algorithms. Group projects, lab assignments and in class activities expose students to the practical problems inherent in computer graphics problem solving.
Prerequisite: CSCI 20000 or CSCI 23000 or CSCI 23200 and MATH 21100. Alternate years, fall.

CSCI 310: Machine Intelligence.
This course is a hands-on introduction to machine learning and artificial intelligence. The main question addressed is: How can we design good computer algorithms that improve automatically through experience (e.g. similar to the way humans learn)? Multiple machine learning models are examined. The goal of the course is that students begin to understand some of the issues and challenges facing machine learning while being exposed to the pragmatics of implementing machine learning systems in Matlab.
Prerequisites: CSCI 20000 or CSCI 23000 or CSCI 23200. Alternate years, spring.

CSCI 320: User Interface Design.
This course explores human computer interaction theory within the framework of user interface (GUI) design. The material includes user centered design principles, prototyping and evaluation techniques and implemen- tation of interfaces. Human capabilities (including the human information processor model, perception, motor skills, color, attention, and errors) are discussed. Small and medium scale user interfaces are developed during the semester along with several team projects.
Prerequisite: CSCI 20000 or CSCI 23000 or CSCI 23200. Alternate years, fall.

CSCI 330: Computer Networking & Communication.
This course provides a broad introduction to fundamental concepts in the design and implementation of com- puter communication networks, their protocols, and applications. Topics to be covered include: network design principles, protocol layering, naming and addressing, TCP/IP protocol, unicast and multicast routing, flow control, routing algorithms, network security.
Prerequisites: CSCI 20000 or CSCI 23000 or CSCI 23200. Alternate years, spring.

CSCI 399: Special Topics.
The content and prerequisites of this course vary according to the topic chosen. The course is available at irregular intervals when there is a need for a special topic. Past topics include Software Quality, Parallel and Distributed Computing, and Web Programming. (Variable course credit)
Prerequisite: Permission of the instructor.

400-Level Courses

CSCI 400: Tutorial.
This course is given for topics not normally covered in regular courses.
Prerequisite: Approval of both the supervising faculty member and the chairperson, required before registration.

CSCI 410: Internship.
A structured, usually off-campus experience, in which a student extends classroom knowledge to a work position within a community, business, or governmental organization. Student interns work and learn under the joint guidance of a host organization supervisor and a College of Wooster mentor. The student must arrange the internship in advance through the appropriate department or program. No more than six internships, and a maximum of four Wooster course credits, will count toward graduation. The form for registering for an internship and the Internship Learning Plan are available in the office of the Registrar.
Prerequisite: The approval of a College of Wooster mentor, department chair, the faculty adviser, and the Associate Dean for Experiential Learning is required. Annually.

CSCI 451: Senior Independent Study, Semester I.
The first semester of the Senior Independent Study project, in which each student engages in creative and independent research guided by a faculty mentor and which culminates in a thesis and an oral examination in the second semester.
Prerequisite: CSCI 20000.

CSCI 452: Senior Independent Study, Semester II.
The second semester of the Senior Independent Study project, which culminates in the thesis and an oral examinatio.n
Prerequisite: CSCI 20000.

Math Courses

MATH 108: Calculus with Algebra (B).
This course is a continuation of MATH 10700 and will further cover topics in differential and integral calculus. It will examine algebraic, geometric, and analytic properties of trigonometric, exponential, and logarithmic functions. Limits, continuity, differentiation, and integration in connection with these functions will be studied, along with applications.
This course counts toward a major or minor and may not be taken by anyone with credit for MATH 10400 or 11100, nor can a student receive credit for both this course and MATH 10400 or 11100.
Prerequisite: MATH 107. Annually, spring.

MATH 111: Calculus and Analytic Geometry I.
This course and MATH 11200 cover the calculus of functions of one variable. Topics include limits, continuity, differentiation and integration, applications of the calculus, elements of analytic geometry, and the Fundamental Theorem of Calculus.
Prerequisite: Departmental approval, as determined by performance on placement exam. Annually, fall and spring.

MATH 211: Linear Algebra.
This course covers systems of linear equations, matrix theory, vector spaces and linear transformations, deter- minants, eigenvalues and eigenvectors, and inner product spaces.
Prerequisite: MATH 11200 with a C- or better, AP/equivalent credit, or permission of the instructor. Annually, fall.

MATH 215: Transitions to Advanced Mathematics.
This is a transition course from the primarily computational and algorithmic mathematics found in calculus to the more theoretical and abstract mathematics in the 300-level mathematics courses. The emphasis is on devel- oping the skills and tools needed to read and write proofs and to understand their importance in mathematics. The course examines topics such as set theory and logic, mathematical induction, and a number of other proof techniques.
Prerequisite: MATH 11200 or 21100 or AP/equivalent credit. Annually, fall and spring.

MATH 223: Combinatorics and Graph Theory.
This course introduces the basic techniques and modes of reasoning of combinatorial problem-solving in the same spirit that calculus introduces continuous problem-solving. It will include fundamental topics in graph theory, counting, the inclusion/exclusion principle, recurrence relations, and generating functions.
Prerequisite: MATH 12300 or 21100. Alternate years.