Courses

Course sequence for the major
Course sequence for the minor

COMP 101 Intro to Computers & Computing 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 dohumans and computers interact, and what are the social and ethical that arise?
COMP 102 Programming Basics for JavaScript /Web Development 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.
COMP 103 Python Programming Basics in a Multimedia Context 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.
COMP 104 Python Programming Basics in a Scientific Computing Context 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.
COMP 105 Introduction to Computer Science with Lab Computers 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.
COMP 107 Pictures and Sounds: Programming with Multimedia with Lab This 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.
COMP 108 Introduction to Scientific Computing The 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.
COMP 150 Introduction to Programming w/Lab An 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. 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-.
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. By Instructor Permission only
COMP 210 Data Structures Provides 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. COMP-110 All course prerequisites must be met with a minimum grade of C-.
COMP 215 Design and Analysis of Algorithms Introduction 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. COMP-210 and MATH-250 All course prerequisites must be met with a minimum grade of C-.
COMP 230 Computer Organization Introduction 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. COMP-210 All course prerequisites must be met with a minimum grade of C-.
COMP 265 Cognitive Science Cognitive 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. PSYC-101 or COMP-105 All course prerequisites must be met with a minimum grade of C-.
COMP 300 Automata, Formal Languages, and Computability Study 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. This course is offered in the spring of odd-numbered years. MATH-250 or MATH-330, and 1 COMP course. All course prerequisites must be met with a minimum grade of C-.
COMP 320 Principles of Programming Languages Study 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. This course is offered in the spring of even-numbered years. COMP-210 All course prerequisites must be met with a minimum grade of C-.
COMP 395 Ranking As a Social Game Ranking of people, schools, products, countries and just about everything else is part of our daily life. We like to compare ourselves to others and see who is stronger, richer, better, cleverer. Our love for comparison led to our fad to make rankings. Ranking is about becoming more organized and we like the idea of being more organized! We are in a paradoxical relationship with ranking: ''ranking is good because it is informative and objective; ranking is bad because it is biased and subjective, and occasionally, even manipulated." The cognitive science and social psychology of ranking will be discussed. Take COMP-210 or PSYC-301;
COMP 415 Computational Neuroscience Study 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. PSYC-101 and MATH-113 All course prerequisites must be met with a minimum grade of C-.
COMP 480 Special Topics Special 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. Usually COMP-210, although specific prerequisites depend on the topic. All course prerequisites must be met with a minimum grade of C-.
COMP 481 Applied Parallel Algorithms 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. COMP-210 and COMP-215
COMP 483 Special Topics: Cryptography This course provides a mathematics-based introduction to cryptography. Students will study the algorithms and security of various symmetric-key and public-key cryptosystems, and will write programs to implement several different cryptographic algorithms. Students will also gain some awareness of the social, ethical, and political issues related to cryptography. COMP-108 or COMP-110 and MATH-250 or MATH-316 or MATH-330 All course prerequisites must be met with a minimum grade of C-.
COMP 484 Computing for Env. Science In this class we will use 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. Must have taken COMP-210 with a C- or better.
COMP 485 ST: Hist & Future of Computing This course will discuss the history and future of computing. COMP-210
COMP 486 Special Topics: Machine Learning Special 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. COMP-110 All course prerequisites must be met with a minimum grade of C-.
COMP 487 Special Topics: Software Development This special topics course will focus on web development technologies and practices. Topics will include languages and patterns used in web development, interacting with databases, and developing greater awareness of, and sensitivity to, customer and end-user needs. Students will also develop or deepen their understanding of general software development topics, such as developing and refactoring code, developing test cases, working within a team, and managing large projects, as well as further their understanding of their professional responsibilities as software developers, becoming familiar with the ACM Code of Ethics. 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. Usually COMP-210, although specific prerequisites depend on the topic. All course prerequisites must be met with a minimum grade of C-.
COMP 488 Special Topic: Open Source Project Dev. This 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 All course prerequisites must be met with a minimum grade of C-.
COMP 489 Special Topics: Mobile Computing This special topics course will allow 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. COMP-210 and junior or senior standing
COMP 490 CS Senior Seminar: Mobile Computing Each year the Computer Science department offers a senior seminar focusing on team-based software development within a specific context (e.g., mobile, web, or open source software development). The context varies from year to year. In addition to collaborating on a specific project, students present material on a wide range of software development topics, including software engineering methodologies, professional ethics, and current trends in languages and software development tools. As a senior seminar, the course has a strong problem-solving focus, encourages student participation and leadership, develops their communication skills, and stresses integration of the student's full undergraduate experience. COMP-210 and must be CS Senior major or minor
COMP 490 SR Sem: Open Source Project Dev. This 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
COMP 490 Senior Seminar The CS senior seminar, a combination of advanced seminar and team-based software development, is offered each year in conjunction with the fall Special Topics course. In addition to collaborating on a specific project, students present material on a wide range of topics, including software engineering methods, professional ethics, and current trends in computing. As a senior seminar, the course has a strong problem-solving focus, encourages student participation and leadership, develops communication skills, and stresses integration of the student's full undergraduate experience.
COMP 490 Sr Sem Computing for Env Sci The CS senior seminar, a combination of advanced seminar and team-based software development, is offered each year in conjunction with the fall Special Topics course. In addition to collaborating on a specific project, students present material on a wide range of topics, including software engineering methods, professional ethics, and current trends in computing. As a senior seminar, the course has a strong problem-solving focus, encourages student participation and leadership, develops communication skills, and stresses integration of the student's full undergraduate experience. Must have taken COMP-210 with a C- or better.
COMP 490 Senior Seminar: Web Development Each year the Computer Science department offers a senior seminar focusing on team-based software development within a specific context (e.g., mobile, web, or open source software development). The context varies from year to year. In addition to collaborating on a specific project, students present material on a wide range of software development topics, including software engineering methodologies, professional ethics, and current trends in languages and software development tools. As a senior seminar, the course has a strong problem-solving focus, encourages student participation and leadership, develops their communication skills, and stresses integration of the student's full undergraduate experience. COMP-210 and must be CS Senior major or minor
COMP 500 Sip Peer Review
COMP 593 Senior Integrated Project Each program or department sets its own requirements for Senior Integrated 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 -> Senior Integrated Project section of the Academic Catalog for more details. Permission of department and SIP supervisor required.