Computer Science
Faculty
The computer science faculty at Albion College are listed under the Department of Mathematics.
Introduction
Computer science is the youngest of the liberal arts. It shares with mathematics strong historical ties as well as underlying values of abstraction, rigor and elegance. During its vigorous growth as an academic discipline, computer science has worked to map this abstraction onto physical devices. Computer science students will address significant problems: finite-precision arithmetic, limited storage capacity of data, and bounded processing capacity of a computer. They will develop distinct methodologies: programming languages, data encoding and the analysis of the complexity of algorithms in terms of time and space requirements. And they will experiment with some results distinctive to computer science: the existence of the general-purpose computer, serial and parallel processing, and modularity and layers of abstraction in both hardware and software. This deep understanding of computer science will engage the student in discerning the benefits and limitations of computers in society.
The study of algorithms is the theme underlying all aspects of computer science. Computer science students will learn to define a problem and specify a step-by-step solution at a level of detail and clarity unparalleled in any other discipline. They will also examine the practical issues of efficient storage, manipulation and retrieval of data.
Computer science interacts naturally with many other disciplines. Students will have opportunities to explore the interconnections among artificial intelligence, psychology and philosophy; to become involved in the physics and engineering of circuit design; to employ biological models in their study of genetic algorithms and neural networks; and to see aspects of grammar and linguistics in their study of programming languages.
Department of Mathematics and Computer Science Web site
Career Opportunities
Computer science graduates will enter a very favorable job market with opportunities in business, industry, government and private consulting. There is also a need for secondary school teachers with certification in computer science. The study of fundamental principles of computer science and the strong mathematical component of this major fortify students with the lifelong learning skills essential for success in this rapidly changing field. A degree in computer science provides a suitable background for graduate work in this or a related field.
Special Features
The E. R. Sleight Computing Laboratory contains a network of workstations dedicated for use by computer science students. These computers run individually or in parallel under the Linux operating system.
The Math/Stat Computing Laboratory is designed especially for students in computer science, mathematics and statistics. This computer laboratory features computers running Windows. Laser printers are available in these labs for high-resolution graphics and typesetting.
These laboratories are part of Albion's campus-wide computer network connecting faculty offices, residence hall rooms, classrooms, laboratories, public computer areas, printers and the library automation system. From computers on the network, students can access their files, run software on the campus network, interact with other computers, send electronic mail and browse the World Wide Web. Virtually every major programming language is available through these systems.
Each year the Mathematics and Computer Science Department awards approximately $30,000 in scholarships in honor of E. R. Sleight, a beloved mathematics professor who taught at Albion from 1908 to 1948. Prospective students with strong interests in computer science are encouraged to contact the department to apply for these scholarships. Additional awards are made to outstanding upperclass students in the mathematical sciences.
Computer science majors are eligible for the J. R. Lancaster Award presented to the student who best exemplifies the liberally educated student and for the Ronald C. Fryxell Prize presented to the outstanding senior in computer science. Each summer several students receive stipends as Kresge Fellows and from other sources for independent research projects in the mathematical sciences. Students participate in regional and national programming competitions. Internships and the Oak Ridge Science Semester provide additional opportunities for intensive computer science study.
Requirements for Major
- All majors are required to complete successfully the six foundation courses: Computer Science 171, 173, 352, 354, 356, 358, plus two additional units of computer science courses numbered 200 or above and Computer Science 299, 399. The Mathematics and Computer Science Department may waive one or more of the foundation course requirements for students with advanced high school computer science preparation. Students may enroll in Internship (391, 392) and Directed Study (411, 412) in consultation with their advisers.
- The following mathematics cognates are also required: Mathematics 141, 239, and one selected from 210 and 236.
Requirements for Minor
- Five units in computer science: Computer Science 171, 173, 352, 356, and one from 354, 358.
- Mathematics 141, 239.
- All courses for the minor must be taken for a numerical grade.
Requirements for Minor With Secondary Education Certification
- Five units in computer science: Computer Science 171, 173, 352, 356 and one from 354, 358.
- Mathematics 141, 239.
- Completion of all other requirements for teacher certification.
Other Requirements for All Computer Science Majors and Minors
- Students are encouraged to elect cognates in a specific field of interest in consultation with their adviser. Possible cognate areas include, but are not limited to, mathematics, physics, philosophy, psychology and economics.
- All computer science courses must be taken for a numerical grade, except those offered only on a credit/no credit basis.
- Students majoring or minoring in computer science are expected to attend all departmental colloquia.
- Students majoring or minoring in computer science are expected to furnish the Department of Mathematics and Computer Science with information about their course work and activities related to the department. The department faculty will use this information when nominating students for awards, scholarships and membership in professional societies, and as the basis for letters of recommendation. Students are encouraged to include this information on their personal World Wide Web pages or to develop a portfolio Web page for their activities related to their major.
Courses
The Department of Mathematics and Computer Science reserves the right to deny enrollment to students taking courses out of sequence as determined by prerequisites.
151 Survey of Computing (1) Fall, Spring
Prerequisite: Three years of high school mathematics or
permission of instructor.
Intended for the liberal arts student who wants a
one-semester introduction to computing technology and
computer science. Provides an overview of current issues
and events, and includes how computers work, what
programming is, how the Internet and Web work, and
security and privacy. Additional topics may include
graphics and animation, simulations and games,
artificial intelligence, mathematical reasoning and the
social consequences of computers. The laboratory offers an
introduction to programming in a high-level language and
to computer applications such as spreadsheets, word
processors, database managers and photograph editors.
Not open to students who have had Computer Science 171.
Connamacher.
171 Introduction to Computer
Science I (1) Fall, Spring
Prerequisite: Mathematics 125 (or equivalent) or permission of 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 object-oriented
programming paradigm and applications. Introduces a high-level
programming language. Reimann.
173 Introduction to Computer Science II (1) Spring
Prerequisite: Computer Science 171.
A continuation of Computer Science 171. Emphasizes advanced
object-oriented programming (interfaces, multiple inheritance,
reflections), abstract data types (stacks, queues, lists, strings,
trees, graphics, 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 high-level programming language. Connamacher,
Reimann.
256
Practicum in Programming Languages
(1/4)
Fall, Spring
Prerequisite: Computer Science 171 or permission of 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 offered that are devoted to developing problem-solving skills in computer programming.
Staff.
261 Computers, the User and Society (1) Fall
Prerequisite: Computer Science 171.
An examination of how computers are used and how computers fit into
society. Topics include user interface design, human-centered 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. Offered every third year. Connamacher,
Reimann.
263 Operating Systems and Networks (1) Fall
Prerequisite: Computer Science 173.
The role of operating systems, concurrency and deadlock avoidance,
memory management, client-server models, device management, networking,
LANs and WANs, TCP/IP, network architectures, security, trends in
networks such as wireless networks and the Internet. Offered every third
year. Reimann.
265 Database Programming (1) Fall
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. Offered every
third year. Connamacher, Reimann.
271 Artificial Intelligence (1) Spring
Prerequisites: Mathematics 239 and Computer Science 173.
Basic techniques of artificial intelligence including
knowledge representation and reasoning, problem-solving
and planning, game playing, and learning. Covers AI
programming and languages. Offered every third year.
Connamacher.
273 Computer Graphics and Image
Processing (1) Spring
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. Covers the basics of image generation, image manipulation
and digital special effects. Includes a significant programming project
using the OpenGL programming interface. Offered every third year.
Connamacher, Reimann.
275 Software Development (1) Spring
Prerequisite: Computer Science 173.
An introduction to the techniques of developing large software projects
including unit testing, version control and build management. Covers the
popular industrial languages C and C++ and includes a large-group
programming project. Offered every third year. Connamacher, Reimann.
299 Colloquium in Mathematics and Computer Science (1/4) Fall,
Spring
Prerequisite: Mathematics 143 or Computer Science 173.
Selected topics in mathematics and computer science as presented by
students, departmental faculty and visiting speakers. Requirements
include written summaries of each presentation and a paper on a
mathematics/computer science topic of personal interest. Same as
Mathematics 299. Staff.
316 Numerical Analysis (1) Fall
Prerequisites: Mathematics 236 or 247, and Computer Science 171.
Methods of obtaining numerical solutions to mathematical problems.
Stresses the implementation and error analysis of algorithms. Topics
include solution of non-linear equations, systems of equations,
interpolating polynomials, numerical integration and differentiation,
numerical solutions to ordinary differential equations, and curve
fitting. Offered in alternate years. Same as Mathematics 316. Mason.
326 Operations Research (1) Spring
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. Offered in alternate years. Same as Mathematics 326.
Mason.
352 Algorithms (1) Fall
Prerequisites: Mathematics 239 and Computer Science 171.
Focuses on the design and efficiency of algorithms. Covers the basic
algorithm paradigms including graph traversals, greedy algorithms,
divide and conquer, dynamic programming and flow algorithms. Introduces
complexity theory, NP-completeness and polynomial-time reductions.
Additional topics may include approximation algorithms, randomized
algorithms and linear programming. Offered in alternate years.
Connamacher.
354 Computer Organization (1) Spring
Prerequisite: Computer Science 173.
Organization of digital computers: digital logic, arithmetic, assembly
language, data paths, memory, input-output, secondary storage devices,
multiprocessors and computer performance. Programming tools and
techniques are also discussed with emphasis on their application in
assembly language. Offered in alternate years. Reimann.
356 Programming Languages (1) Fall
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. Projects include programming in the
functional paradigm using the Scheme programming language and
development of a language interpreter. Offered in alternate years.
Connamacher.
358 Foundations of Computing (1) Spring
Prerequisites: Mathematics 239 and Computer Science 171.
The theoretical underpinnings of computer science: models of computation
including automata, Turing machines, circuits, the Chomsky language
hierarchy, Church’s thesis, computable and noncomputable functions,
recursive and recursively enumerable sets, reducibility and introduction
to complexity theory. Connamacher.
360 Mathematical Modeling (1) Spring
Prerequisites: Mathematics 247 and Computer Science 171.
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. Same as
Mathematics 360. Mason.
388, 389
Selected Topics
(1/2, 1)
Fall, Spring
Prerequisite: Permission of instructor.
Topics in computer science such as recursive function theory, computational complexity, formal languages, automata and algorithms.
Staff.
391, 392
Internship
(1/2, 1)
Fall, Spring
Offered on a credit/no credit basis.
Staff.
399 Colloquium in Mathematics and Computer Science (1/4)
Fall, Spring
Prerequisites: Mathematics 299 and senior standing.
Selected topics in mathematics and computer science as presented by
students, departmental faculty and visiting speakers. Requirements
include written summaries of each presentation, a departmental major
assessment examination, and an oral presentation on a
mathematics/computer science topic of personal interest. Offered only on
a credit/no credit basis. Same as Mathematics 399. Staff.
411, 412 Directed Study (1/2, 1) Fall, Spring Staff.
