Computer Science Courses
Prerequisites
Almost all of our mathematics and computer science courses have prerequisites. Introductory courses require mastery of elementary
skills as demonstrated by the combination of a student's high school
preparation and a satisfactory placement test score. Enrollment in
courses beyond the introductory level require successful completion
of another Albion course as listed in the catalog or comparable course at
another institution. Students taking an
advanced course should have at least a 2.0 in all prerequisite courses.
The purpose of a prerequisite is to ensure a student has a solid
foundation of necessary skills required to succeed in completing
course objectives. Prerequisites protect students by ensuring they are not asked to
perform activities for which they are not prepared.
We have established the prerequisites for our courses
to help students have a coherent learning experience.
Prerequisites are strictly enforced. Before enrolling in a course,
all of its prerequisites must be completed. A student enrolled in
a course will be dropped from the course if they have do not have
the prerequisites.
In a few special situations a student may be granted permission to
enroll in a course without a prerequisite. These situations are
rare and must be approved in consultation with the student's academic
advisor and the course instructor. The instructor of the course and
department chair have the final decision to waive a prerequisite.
Students granted a waiver cannot expect the course to be taught at
a lower level or demand the instructor teach prerequisite material.
Expectations of all students in a course are the same even if a waiver
of a prerequisite is granted.
151 Information Technology
1 unit
Fall, Spring
Intended for the liberal arts student who wants to understand and better use information technology.
Topics include how computers work, the Internet and World Wide Web, new trends in computing such as
mobile computing and peertopeer networks, how software development differs from traditional
manufacturing, how computing is changing our culture and laws, current trends in computer crime,
security, and privacy. Additional topics are drawn from current events and issues. Laboratory.
Does not count toward the computer science major or minor.
171 Introduction to Computer Science I
1 unit
Fall, Spring
Prerequisite: Mathematics 125 (or equivalent); or
permission of the instructor.
Designed to be the first computer science course taken by students in
mathematics and science, as well as those wishing to major in computer
science. Topics include fundamentals of computation and algorithmic
problem solving, data types, control structures, the objectoriented
programming paradigm, and applications. The course introduces a high
level programming language such as Java or Python.
Students
with a year or more of computer science at the secondary level may be
qualified for Computer Science 173.
173 Introduction to Computer Science II
1 unit
Spring
Prerequisite: Computer Science 171.
A continuation of Computer science 171.
Emphasis is on advanced objectoriented programming (interfaces,
multiple inheritance, reflections), abstract data types (stacks,
queues, lists, strings, trees, graphs, etc.), and analysis of algorithms.
Other topics include recursion, searching and sorting, simulation and an
introduction to some of the advanced areas of computer science, e.g.,
computer organization, artificial intelligence, and user interfaces.
Students will refine their programming skills in a highlevel programming
language such as Java or Python.
256 Practicum in Programming Languages
1/4 unit
Fall, Spring
Prerequisite: Computer Science 171 or permission of the instructor.
Designed to teach an additional computer
language beyond those currently used in the computer science courses. The
emphasis will be on writing and debugging programs that use the special
features of the language. FORTRAN and C are the languages that have been
taught most recently. Special sections of this course have been devoted to
developing problemsolving skills in computer programming.
261 Computers, the User, and Society
1 unit
Fall every third year, 2008, 2011, ...
Prerequisite: Computer Science 171
An examination of how computers are used and how computers fit into society.
Topics include user interface design, humancentered software development and
evaluation, software reliability, social context of computers, professional and
ethical responsibilities for technology professionals, intellectual property
rights, privacy and civil liberties, computer crime.
263 Operating Systems and Networks
1 unit
Fall every third year, 2006, 2009, ...
Prerequisite: Computer Science 173
The role of operating systems, concurrency and deadlock avoidance, memory management,
clientserver models, device management. Networking, LANs and WANs, TCP/IP, network
architectures, security, trends in networks such as wireless networks and the internet.
265 Database Programming
1 unit
Fall every third year, 2007, 2010, ...
Prerequisites: Computer Science 173 and
Mathematics 239
Fundamental concepts of database management systems: the relational
data model, relational algebra, and normal forms, file organization
and index structures, and the query language SQL and embedded SQL.
271 Artificial Intelligence
1 unit
Spring every third year, 2006, 2009, ...
Prerequisites: Computer Science 173 and
Mathematics 239
Basic techniques of artificial intelligence including knowledge
representation and reasoning, problem solving and planning, game
playing, and learning. As part of the course, students will learn
common AI programming languages such as Scheme, Lisp, and/or Prolog.
273 Computer Graphics and Image Processing
1 unit
Spring every third year, 2007, 2010, ...
Prerequisites: Computer Science 173 and
Mathematics 236 or 247.
A unified introduction to image synthesis and image analysis aimed
at students with an interest in computer graphics, computer vision,
or the visual arts. The course will cover the basics of image generation,
image manipulation, and digital special effects. The course will involve
a significant programming project using the OpenGL programming interface.
275 Software Development
1 unit
Spring every third year, 2008, 2011, ...
Prerequisite: Computer Science 173.
An introduction to the techniques of developing large software projects
including unit testing, version control, and build management. Students
will learn the popular industrial languages C and C++, and part of the
course will involve a large group programming project.
299 Colloquium in Mathematics & Computer Science I
1/4 unit
Fall, Spring
Offered only on a credit/no credit basis.
Prerequisite: Computer Science 173 or
Mathematics 143.
Selected topics in mathematics and computer science as presented by
students, departmental faculty and visiting speakers. In addition
to submitting written summaries of each presentation, students also
write a paper on a mathematics/computer science topic of personal interest.
316 Numerical Analysis
1 unit
Fall of oddnumbered years
Prerequisites: Computer Science 171 and
Mathematics 247 or 236.
Methods of obtaining numerical solutions to mathematical problems. The
implementation and error analysis of algorithms are stressed. Topics include:
solution of nonlinear equations, systems of equations, interpolating
polynomials, numerical integration and differentiation, numerical solution to
ordinary differential equations, and curve fitting.
326 Operations Research
1 unit
Spring of oddnumbered years.
Prerequisites: Mathematics 236 or 247,
and Mathematics 245.
An introduction to computational methods in mathematical modeling, including
linear programming and Markov chains. Applications in business, economics and
systems engineering. Knowledge of probability will be helpful.
352 Algorithms
1 unit
Fall of oddnumbered years
Prerequisite: Computer Science 171 and Mathematics 239.
This course focuses on the design and efficiency of algorithms.
The basic algorithm paradigms will be studied including graph traversals, greedy
algorithms, divide and conquer, dynamic programming, and flow algorithms.
The course will introduce complexity theory, NPcompleteness, and polynomialtime
reductions. Additional topics may include approximation algorithms, randomized
algorithms, and linear programming.
354 Computer Organization
1 unit
Spring of evennumbered years
Prerequisite: Computer Science 173.
Topics on the organization of digital computers: digital logic, arithmetic,
assembly language, data paths, memory, inputoutput, secondary storage devices,
multiprocessors, and computer performance. Programming tools and techniques are
also discussed with emphasis on their application in assembly language.
356 Programming Languages
1 unit
Fall of evennumbered years.
Prerequisite: Computer Science 173.
A survey of the structure of programming languages and programming as an
abstract concept. Topics include syntax and semantics, scope rules,
environments, types, procedures, parameters, overloading, parametric
polymorphism, and inheritance. Students will learn to program in the
functional paradigm by studying the Scheme programming language. As part
of the course, students will develop a language interpreter.
358 Foundations of Computing
1 unit
Spring of oddnumbered years.
Prerequisite: Computer Science 171 and Mathematics 239.
The theoretical underpinnings of computer science: models of computation
including automata, Turing machines, and circuits, the Chomsky language
hierarchy, Church's thesis, computable and noncomputable functions,
recursive and recursively enumerable sets, reducibility, introduction
to complexity theory.
360 Mathematical Modeling
1 unit
Spring of evennumbered years.
Prerequisites: Computer Science 171 and Mathematics 247.
An introduction to analytical methods in mathematical modeling, including
nonlinear optimization, dynamical systems and random processes. Applications
in physics, biology, economics, and systems engineering. Knowledge of
probability and statistics will be helpful.
388, 389 Topics
1/2, 1 unit
Fall, Spring
Prerequisite: Permission of instructor.
Topics in computer science such as recursive function theory, computational
complexity, formal languages and algorithms.
391, 392 Internship
1/2, 1 unit
Fall, Spring
Offered on a credit/no credit basis.
399 Colloquium in Mathematics & Computer Science II
1/4 unit
Fall, Spring
Offered only on a credit/no credit basis.
Prerequisite: Mathematics/Computer Science 299
and senior standing.
Selected topics in mathematics and computer science as presented by students,
departmental faculty and visiting speakers. In addition to submitting written
summaries of each presentation, students take a departmental major assessment
examination, and give an oral presentation on a mathematics/computer science
topic of personal interest.
411, 412 Directed Study
1/2, 1 unit
Fall, Spring
See the registrar's page for
http://www.albion.edu/academics/catalog/departments/compsci.asp
for a printable page of academic information.
