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 Information Technology (1)
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 peer-to-peer 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.
Connamacher.
171 Introduction to Computer
Science I (1)
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 such as Java or Python. Connamacher, Reimann.
173 Introduction to Computer Science II (1)
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 refine their
programming skills in a high-level programming language such as Java or
Python. Connamacher,
Reimann.
256
Practicum in Programming Languages
(1/4)
Prerequisite: Computer Science 171 or permission of instructor.
Designed to teach an additional computer language beyond those currently used in the computer science courses.
Emphasizes 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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
Offered on a credit/no credit basis.
Staff.
399 Colloquium in Mathematics and Computer Science (1/4)
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)
Staff.
