Computer Science

Professors: Cutter (Chair), Gharaibeh, Polanco, Vargas-Pérez, Érdi

The study of computer science enriches a liberal arts education by fostering skills in problem-solving, logical reasoning, organizing information to make it easier to understand and manipulate, expressing ideas precisely and effectively, and managing complexity. The computer science department is committed to providing a firm foundation in computing to our majors and minors, and to help students at all levels learn about the discipline, discover an interest in it, explore, and thrive.

Placement

For purposes of course placement and prerequisites, a score of 4 or 5 on the Advanced Placement Computer Science A exam is regarded as equivalent to successful completion of COMP 150. For students who place out of COMP 150 and plan to continue in Computer Science, we recommend taking COMP 101 as an extra half-unit during the same term as COMP 210.

A score of 4 or 5 on the AP Computer Science Principles exam is not equivalent to a specific Kalamazoo College course but satisfies the prerequisite for COMP 150. COMP 101 is still required for the major or minor.

Students whose high school curriculum covered topics in COMP 101 should talk to the department chair about whether they should place into or out of COMP 101.

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 chair 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

Eight units numbered 150 or above, not including a SIP are required, in addition to the half-unit COMP 101 Introduction to Computers & Computing plus 3 mathematics cognates. Each must be earned at a grade of C- or above. The department administers a required program assessment instrument in place of a comprehensive exam.

Required Courses

COMP 101 Intro to Computers and Computing (a half-unit course)
COMP 150 Object Oriented Programming
COMP 210 Data Structures
COMP 215 Design and Analysis of Algorithms
COMP 315 Computer Organization

Four additional computer science courses at the 300-level or higher.

Required Cognates

MATH 112 Calculus I
MATH 250 Discrete Mathematics
One other additional Mathematics Course (not including MATH-110) or BUSN/ECON 160 Statistics for Business and Economics

Additional Recommendations

Just as the study of computer science enriches the liberal arts, the study of arts, humanities, and social sciences enrich computer scientists. All students are encouraged to take a broad range of courses across the liberal arts, including at least one writing-intensive course.

Students who plan graduate work in computer science are expected to take additional computer science and mathematics courses appropriate to their interests.  COMP 400 (Automata) is particularly recommended.

Requirements for the Minor in Computer Science

Number of Units

Six units in Computer Science plus 2 mathematics cognates are required, not including a SIP. Each must be earned at a grade of C- or above.

Required Courses

COMP 101 Intro to Computers & Computing (a half-unit course)
COMP 150 Object Oriented Programming
COMP 210 Data Structures
COMP 215 Design and Analysis of Algorithms or COMP 315 Computer Organization

Two additional Computer Science courses at the 200-Level or higher

Required Cognates

MATH 112 Calculus I
MATH 250 Discrete Mathematics

Computer Science Courses

COMP 101 Explorations in Computer Scien This half-unit course addresses three big questions in the field of computing: What is a computer (and how does it work)? How do we compare and analyze computational solutions? And finally, how do humans and computers interact, and what are the social and ethical issues that arise? This course introduces the field of computing without programming; it is generally taken in combination with COMP 102, 103, or 104 -- basic programming in JavaScript or Python -- for a full unit.
COMP 102 Prog. Basics: JavaScript/WebD This half-unit course introduces the general algorithmic (disciplined, step-by-step) approach to problem solving, and the basic concepts of computer programming in the context of developing dynamic web pages using JavaScript. This course is generally taken in combination with COMP 101 Introduction to Computers and Computing for a full unit. COMP 101 introduces the field of computing without programming; this course adds basic programming concepts to that.
COMP 103 Prog Basics: Python/Multimedia This half-unit course introduces the general algorithmic (disciplined, step-by-step) approach to problem solving, and the basic concepts of computer programming in the context of developing Python programs to create and manipulate pictures, sound, and animations. This course is generally taken in combination with COMP 101 Introduction to Computers and Computing for a full unit. COMP 101 introduces the field of computing without programming; this course adds basic programming concepts to that.
COMP 104 Prog Basics:Python/Scien Comp This half-unit course introduces the general algorithmic (disciplined, step-by-step) approach to problem solving, and the basic concepts of computer programming in the context of developing Python programs for scientific modeling, visualization, and data analysis. This course is generally taken in combination with COMP 101 Introduction to Computers and Computing for a full unit. COMP 101 introduces the field of computing without programming; this course adds basic programming concepts to that.
COMP 200 Professional Apprenticeship Students majoring in computer science may participate in apprenticeships, which are opportunities for the students to learn computer science concepts through professional internships. To be considered for a professional apprenticeship, a student must approach a faculty member with a proposal of the expected work and learning goals to be accomplished in the project or internship. A written reflection will be required at the end of the apprenticeship. A minimum of 10 hours of work per week is expected. Enrollment is by permission of instructor only.
COMP 305 Software Development This course focuses on software development methods and practices. Topics include traditional and agile software engineering approaches, common processes and tools, database concepts, user interface design, and professional standards and ethics. Students will analyze existing code, develop and refactor code, develop test cases, interact with a relational database, and work on large projects within a team. Must have completed COMP-210 with a minimum grade of C-.
COMP 480 ST: Game Des & Dev This course explores the world of video game development, focusing on the history, ethics, technological advances, coding, and the impact of the video game industry on society. Throughout the course, students will engage with key concepts in game design, development tools and engines, business models (including microtransactions, loot boxes, and other controversial monetary systems), while critically analyzing the ethical responsibilities of developers. Legal frameworks, particularly U.S. laws affecting gaming (such as copyright, violence, and censorship), will be discussed, along with public opinion and societal perceptions of video games. A major component of the course involves hands-on experience where students will develop their own video games, applying the concepts covered in lectures and discussions, integrating the technical, ethical, and legal aspects of game development process. Must have completed COMP-210 with a minimum grade of C-. COMP-305 is strongly recommended.
COMP 481 ST: Parallel Computing This course explores parallel algorithms and their applications, particularly how to choose the appropriate parallel programming paradigm, as well as how to parallelize a given problem. Emphasizing shared and distributed memory models of parallel programming, this course will include theoretical and programming aspects in which students will be able to learn how to measure efficiency in parallel algorithms, as well as time complexity, speedups, the cost of communication, data and task parallelism, synchronization, and how to prepare a personal computer for parallel programming. Must have completed COMP-215 with a minimum grade of C-.
COMP 482 ST: Cybersecurity This course provides an introduction to a variety of topics in cybersecurity. The course will cover computer security technology and principles (e.g., encryption, database security, distributed denial of service, etc.), software security (e.g., operating systems, mobile devices), network security (e.g., internet service protocols, VPN services, authentication apps), and privacy concerns (e.g., modern systems and data, implications of data gathering). We will explore additional topics of interests through project work and student presentations on additional concepts. Must have completed COMP-210 & MATH-250 or MATH-330 with a minimum grade of C-.
COMP 485 ST:Networking & Dist. Systems This course provides an overview of computer networking principles, protocols, and architecture. Students will learn about the Internet, the technologies used to configure local and wide area networks, operating system concepts focusing on network usage and resource sharing, and the ethics and responsibilities of secure networks, focusing on confidentiality, integrity, and authentication. Must have completed COMP-315 with a minimum grade of C-.
COMP 488 ST: Adv. Software Design This course will focus on software development philosophies and practices. Topics will include traditional and agile software engineering approaches, open source software development, common processes and tools, and the use of modern AI in software development. Students will deepen their skills, including analyzing existing code, developing and refactoring code, developing test cases, interacting with a relational database, working within a team, and managing large projects. Students will also further their understanding of their professional responsibilities as software developers, and become familiar with the ACM Code of Ethics. Must have completed COMP-305 with a minimum grade of C-.
COMP 489 ST: Mobile Computing This course allows students to explore issues in designing and writing mobile applications. Topics will include the software development process, memory management, user interface design, user interface building, input methods, data handling, connecting to databases, app development (for iOS and Android), and possibly other specifics such as GPS and motion sensing, and security issues related to mobile device software. This course will have both conceptual and hands-on components. Students will research and present various topics, install and work with real-world projects, and document and reflect on their learning and their software development progress throughout the course. Must have completed COMP-210.COMP-305 is strongly recommended. All course prerequisites must be met with a minimum grade of C-.
COMP 490 SR Semn: Mobile Computing This course allows students to explore issues in designing and writing mobile applications. Topics will include the software development process, memory management, user interface design, user interface building, input methods, data handling, connecting to databases, app development (for iOS and Android), and possibly other specifics such as GPS and motion sensing, and security issues related to mobile device software. This course will have both conceptual and hands-on components. Students will research and present various topics, install and work with real-world projects, and document and reflect on their learning and their software development progress throughout the course. Must have completed COMP-210. COMP-305 is strongly recommended. All course prerequisites must be met with a minimum grade of C-.
COMP 490 SR Sem:Comp for Env & Soc Jus In this course students will apply concepts and techniques from computer science to address and understand problems in environmental science. We will explore the application of computational intelligence to environmental data, current solutions to create, collect, store, process, model, and distribute data and information, as well as the environmental impacts of computers. Open to seniors only. Must have completed COMP-210 with a C- or better. COMP-305 is strongly recommended.
COMP 490 SR Sem: Adv Software Develop This course will focus on software development philosophies and practices. Topics will include traditional and agile software engineering approaches, open source software development, common processes and tools, and the use of modern AI in software development. Students will deepen their skills, including analyzing existing code, developing and refactoring code, developing test cases, interacting with a relational database, working within a team, and managing large projects. Students will also further their understanding of their professional responsibilities as software developers, and become familiar with the ACM Code of Ethics. Open to Seniors only. Must have completed COMP-210 with a minimum grade of C-. COMP-305 strongly recommended.