Computer Science

Professors: Brady (Co-Chair), Cutter(Co-Chair), Howser, Érdi, Tobochnik

The mission of the computer science program is to provide students with a foundation in the concepts and skills underlying computer science, in the context of an integrated, multi-dimensional liberal arts program. The study of computer science enriches a liberal arts education by fostering skills in problem-solving, logical reasoning, organizing and manipulating information, expressing ideas precisely and effectively, and managing complexity. Students who want to develop their skills in these areas may take introductory courses or continue on for a major or minor.

The computer science program is committed to providing a firm foundation in computing to our majors and minors, and to creating an environment in which students who do not think of themselves as computer scientists can learn about the discipline, discover an interest in it, explore, and thrive. At every level, the program is designed to expose students to the central themes of this rapidly evolving discipline, and to generate an understanding of the principle techniques and algorithms necessary to support meaningful applications.

Students who graduate from this program are prepared for graduate study or a wide range of computing careers.

 

Advanced Placement

A student with a score of 4 or 5 on the Computer Science Principles exam will be awarded credit for COMP 105 (Introduction to Computer Science). A student with a score of 4 or 5 on the Computer Science A exam will be awarded credit for COMP 110 (Introduction to Programming). Note that both COMP 105 and COMP 110, or their Advanced Placement equivalents, are required for the major or minor. (COMP 107 or 108 may be used as substitutes for COMP 105, but COMP 110 may not.) Computer Science majors are strongly encouraged to take advantage of advanced placement to take additional courses in the major.

Transfer, Dual Enrollment, Study Abroad Credit

Courses taken at other institutions will be awarded credit in computer science if they meet one of the following criteria: 1) the course is similar in content and rigor to an existing course in the Computer Science department, or 2) the course covers some important topic of computer science not offered at Kalamazoo College. Students are responsible for meeting with the director of the computer science program in advance to determine whether a course offered elsewhere will transfer back as a computer science credit. External credits may also be used to satisfy the mathematics cognates for the major or minor.

Requirements for the Major in Computer Science

Number of Units
Nine units are required, not including SIP, plus the cognate courses in mathematics, all of which must be earned at a grade of C- or above. Taking the comprehensive exam in computer science is required for program assessment purposes, and results are considered in determining honors in the major.

Required Courses
Introduction to the Discipline: COMP 105 Introduction to Computer Science (recommended), or COMP 107 Pictures and Sounds, or COMP 108 Introduction to Scientific Computing
COMP 110 Introduction to Programming
COMP 210 Data Structures
COMP 215 Design and Analysis of Algorithms
COMP 230 Computer Organization

Four additional computer science courses at the 300-level or higher. Students may take MATH 240 (linear algebra) as a fourth mathematics cognate in place of the fourth computer science elective.

Required Cognates
MATH 112 Calculus I
MATH 113 Calculus II
MATH 250 Discrete Mathematics

Other mathematics courses with particular application to computer science include MATH 240 (Linear Algebra), 330 (Abstract Algebra I), 362 (Probability) and 365 (Mathematical Statistics).

Students who plan graduate work in computer science are expected to take additional computer science and mathematics courses beyond the requirements for the major.

Requirements for the Minor in Computer Science

Number of Units
Six units are required, plus the cognate courses in mathematics, all of which must be earned at a grade of C- or above.

Required Courses
Introduction to the Discipline: COMP 105 Introduction to Computer Science (recommended), or COMP 107 Pictures and Sounds, or COMP 108 Introduction to Scientific Computing
COMP 110 Introduction to Programming
COMP 210 Data Structures
COMP 230 Computer Organization or COMP 215 Design and Analysis of Algorithms

Two additional computer science courses at the 200-level or higher.

Required Cognates
MATH 112 Calculus I
MATH 250 Discrete Mathematics

 

Computer Science courses

COMP105Introduction to Computer Science with LabComputers have had an impact on almost every aspect of modern life. Why is this? What has been their impact on other disciplines and on the society in which we live? What do we need to know about computing so that we control the technology rather than being controlled by it? This course will address these and other questions while giving hands-on practice in a particular context, such as creating animations or web applications. Topics include fundamental computer programming concepts and constructs, how computers represent information, limits to what is computable, human-machine interaction, and ethical and social issues raised by the widespread use of computers. Except in unusual circumstances, students who have already taken 107 or 108 should generally not take this course.
COMP107Pictures and Sounds: Programming with Multimedia with LabThis course provides an introduction to multimedia programming: developing programs that create and manipulate text, pictures, sound, and movies. Topics include creating negative and gray-scale images, reversing and splicing sounds, creating sound visualizations, and creating animations. Students will learn some of the concepts and techniques underlying software applications like Photoshop or SoundEdit as well as fundamental concepts underlying all of computing, such as algorithms, abstractions, and how computers represent numbers, text, images, and sound. Hands-on programming is a central component of the course, embodied in weekly labs and frequent programming assignments. No previous programming experience is required. Except in unusual circumstances, students who have already taken 105 or 108 should generally not take this course.
COMP108Introduction to Scientific ComputingThe purpose of this course is to give students an introduction to scientific modeling and data analysis. The course will provide an introduction to computer programming and will cover a selection of topics relevant to scientific research, emphasizing the process of modeling, simulation, visualization, and evaluation of data. It will also introduce fundamental computer science topics, including the limits of computation and algorithm analysis. This course is intended for students with a strong interest or background in science, math, and/or computer science. Prior programming experience is not required. Except in unusual circumstances, students who have already taken 105 or 107 should generally not take this course.
COMP110Introduction to Programming w/LabAn introduction to object-oriented programming. Topics include basic language features and the fundamentals of the programming process, including design, implementation, and testing. Hands-on programming is a central component of the course, embodied in weekly labs, in-class mini-labs, and frequent programming assignments. Some previous exposure to programming or strong math skills are recommended; see a faculty member if you have questions about taking this course.Prerequisite: COMP 105, 107, or 108, or 1 200-level Math course, or 1 200-level Physics course, or instructor permission All course prerequisites must be met with a minimum grade of C-.
COMP210Data StructuresProvides students an opportunity to further develop and refine their design, implementation, and testing skills. In particular, the emphasis of this course is on the organization of information, the implementation of common data structures such as lists, stacks, queues, trees, and graphs, and techniques of data abstraction, including encapsulation and inheritance. The course will also explore recursion and the close relationship between data structures and algorithms. Hands-on programming is a central component of this course, through numerous mini-labs and outside programming assignments.Prerequisite: COMP-110 All course prerequisites must be met with a minimum grade of C-.
COMP215Design and Analysis of AlgorithmsIntroduction to a variety of algorithms and algorithm design techniques that recur in computer science literature and applications. These include common sorting and searching algorithms, divide-and-conquer and dynamic programming algorithms, and algorithms in the areas of string processing, geometry, and graph theory. This course also provides an introduction to the mathematical analysis of the complexity and performance of algorithms. Prerequisite: COMP-210 and MATH-250 All course prerequisites must be met with a minimum grade of C-.
COMP230Computer OrganizationIntroduction to computer organization; gates, truth tables, and logic design; number representation and arithmetic; assembly-language programming and the assembly process; and current techniques for improving computer performance.Prerequisite: COMP-210 All course prerequisites must be met with a minimum grade of C-.
COMP/PHYS255Computer Programming and SimulationComputer modeling of physical phenomena. Programming skills will be developed in the context of doing physics. Topics include numerical integration of Newton's equations, cellular automata, and random walks, including Monte Carlo methods.Prerequisite: PHYS-150 All course prerequisites must be met with a minimum grade of C-.
COMP/PSYC265Cognitive ScienceCognitive science is the interdisciplinary study of mind and the nature of intelligence. It is a rapidly evolving field that deals with information processing, intelligent systems, complex cognition, and large-scale computation. The scientific discipline lies in the overlapping areas of neuroscience, psychology, computer science, linguistics and philosophy. Students will learn the basic physiological and psychological mechanisms and computational algorithms underlying different cognitive phenomena. This course is designed mostly for psychology and computer science students, but other students interested in interdisciplinary thinking might take the course.Prerequisite: PSYC-101 or COMP-105 All course prerequisites must be met with a minimum grade of C-.
COMP/MATH300Automata, Formal Languages, and ComputabilityStudy of automata as mathematical models of computation; of formal languages, which play a central role in the specification and translation of programming languages; and of the fundamental capabilities and limitations of computers.Prerequisite: MATH-250 or MATH-330, and 1 COMP course. All course prerequisites must be met with a minimum grade of C-.
COMP320Principles of Programming LanguagesStudy of programming language concepts and paradigms. Students will look at the historical progression of language design, study the distinctive characteristics of major programming paradigms, discuss design decisions and tradeoffs, and develop fluency in a new language. Typical topics include syntactic and semantic differences among languages, type theory, static and dynamic binding of variables, and scope rules.Prerequisite: COMP-210 All course prerequisites must be met with a minimum grade of C-.
COMP415Computational NeuroscienceStudy of mathematical models, computational algorithms, and simulation methods that contribute to our understanding of neural mechanisms. Brief introduction to neurobiological concepts and mathematical techniques. Both normal and pathological behaviors will be analyzed by using neural models.Prerequisite: PSYC-101 and MATH-113 All course prerequisites must be met with a minimum grade of C-.
COMP430Operating Systems and NetworkingProvides an introduction to operating system and networking concepts. In particular, the course covers processes and threads, process synchronization, deadlocks, CPU scheduling, memory management, file systems, security, and network structures and protocols.Prerequisite: COMP-230 All course prerequisites must be met with a minimum grade of C-.
COMP480Special TopicsSpecial Topics offerings focus upon topics not addressed in the department's regular offerings. Check the course schedule to see when Special Topics courses are being offered.Prerequisite: Usually COMP-210, although specific prerequisites depend on the topic. All course prerequisites must be met with a minimum grade of C-.
COMP481Topics: Comp Networking & InternetOpen standards for communications between computers (and similar devices) are defined by the Open Systems Interconnection (OSI) model. The seven layer OSI model will be used as a structure to explore the hardware and software most commonly used to interconnect devices to form computer networks. The INTERNET will be used as an example of how these concepts are used to create real world networks using TCP/IP. Many of the most important high-level protocols that comprise the current INTERNET will be explored to aid in understanding why the INTERNET works and what can be done to protect the INTERNET from some common attacks.Prerequisite: COMP-230 or Instructor Permission
COMP482Special Topics: Software EngineeringSpecial Topics offerings focus upon topics not addressed in the department's regular offerings. Check the course schedule to see when Special Topics courses are being offered.Prerequisite: COMP-210 All course prerequisites must be met with a minimum grade of C-.
COMP483/MATH 450Special Topics: CryptographySpecial Topics offerings focus upon topics not addressed in the department's regular offerings. Check the course schedule to see when Special Topics courses are being offered.Prerequisite: COMP-110 and MATH-250 or MATH-316 or MATH-330 All course prerequisites must be met with a minimum grade of C-.
COMP485Special Topics: Numerical MethodsSpecial Topics offerings focus upon topics not addressed in the department's regular offerings. Check the course schedule to see when Special Topics courses are being offered.Prerequisite: COMP-210
COMP486Special Topics: Machine LearningSpecial Topics offerings focus upon topics not addressed in the department's regular offerings. Check the course schedule to see when Special Topics courses are being offered.Prerequisite: COMP-110 All course prerequisites must be met with a minimum grade of C-.
COMP487/COMP 490Special Topics: Software DevelopmentSpecial Topics offerings focus upon topics not addressed in the department's regular offerings. Check the course schedule to see when Special Topics courses are being offered.Prerequisite: Usually COMP-210, although specific prerequisites depend on the topic. All course prerequisites must be met with a minimum grade of C-.
COMP488/COMP 490Special Topics: FOSS DevelopmentSpecial Topics offerings focus upon topics not addressed in the department's regular offerings. Check the course schedule to see when Special Topics courses are being offered.Prerequisite: COMP-210
COMP489/COMP 490Special Topics: Mobile ComputingSpecial Topics offerings focus upon topics not addressed in the department's regular offerings. Check the course schedule to see when Special Topics courses are being offered.Prerequisite: COMP-210 All course prerequisites must be met with a minimum grade of C-.
COMP490/COMP 487CS Senior Seminar: Collaborative Software DevelopmentThis course is a combination of advanced seminar and software development work environment, in which teams of students develop software products in support of a community, whether that is the college community, an organization in the larger, local community, or the online open-source community. In addition to collaborating on a specific project, students present material on a wide range of software development topics, including software engineering, professional ethics, web-based development, open source, and current trends in languages, tools, and methodologies.Prerequisite: COMP-210 and Seniors Only
COMP490/COMP 489CS Senior Seminar: Mobile ComputingThis course is a combination of advanced seminar and software development work environment, in which teams of students develop software products in support of a community, whether that is the college community, an organization in the larger, local community, or the online open-source community. In addition to collaborating on a specific project, students present material on a wide range of software development topics, including software engineering, professional ethics, web-based development, open source, and current trends in languages, tools, and methodologies.Prerequisite: CS Senior major or minor or permission
COMP490/COMP 488Senior Seminar: FOSS DevelopmentThis course is a combination of advanced seminar and software development work environment, in which teams of students develop software products in support of a community, whether that is the college community, an organization in the larger, local community, or the online open-source community. In addition to collaborating on a specific project, students present material on a wide range of software development topics, including software engineering, professional ethics, web-based development, open source, and current trends in languages, tools, and methodologies.Prerequisite: COMP-210 and Senior Standing
COMP593Senior Individualized ProjectEach program or department sets its own requirements for Senior Individualized Projects done in that department, including the range of acceptable projects, the required background of students doing projects, the format of the SIP, and the expected scope and depth of projects. See the Kalamazoo Curriculum -> Curriculum Details and Policies section of the Academic Catalog for more details.Prerequisite: Permission of department and SIP supervisor required.