Computer Science 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.

172 Accelerated Introduction to Computer Programming (1)
Prerequisite: Permission of instructor. Intended for students receiving AP or transfer credit for CS 171. It is recommended that such students take this course prior to enrolling in additional computer science courses.
An overview of programming in the same high-level language used in CS 171. 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.

Majors and Minors

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 and one-quarter units in computer science in computer science 171, 173, and 299; plus three additional units at the 200-level or above. At last two of these three units must be selected from 352, 354, 356, or 358..
  • Mathematics 141, 239.
  • All courses for the minor must be taken for a numerical grade.

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 in computer science are required to complete both 299 and 399: Colloquium in Mathematics and Computer Science. Students minoring in computer science are required to complete 299.
  • 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.

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.

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 Website

More Articles ...