Applications of computers and software are everywhere. Programs enable and mediate instant communication, global financial networks, a smoothly running engine, an interactive graphical display, and a perfectly browned slice of sourdough. Writing software to instruct computers to do even simple tasks can be challenging, fun, and creative.
Computer science is the study of algorithmic processes and the machines that carry out these processes. It is a mix of theory, application, design, and experiment. Theory addresses questions about the nature and limits of computation, the abstract properties of machine models, the complexity of algorithms, and the formalization of programming languages. Applications include machine and systems design, the design and implementation of programming languages, artificial intelligence, networks, graphics, and simulation. An important aspect of computer science is the development of methods for the systematic and accurate design of large systems in hardware and software. Both applications and theoretical issues must be tested experimentally.
The computer science major prepares students for graduate study in computer science, for computer-intensive professional careers, and for a diverse collection of other career opportunities that increasingly overlap with and require expertise in computer science. In addition to the computer science major, the department also offers a joint computer science/math major as well as a minor in computer science for interested students. All programs are described completely in the University Catalogue and a good deal more information can be gained by accessing the department web page and the department-maintained website. Faculty members in the computer science department are always happy to discuss computer science courses with any interested students.
Introductory-level courses in the department include COSC 101, 102, and 140. The courses COSC 101 and 140 provide an introduction to computational thinking through substantial practice in computer programming. The major and minor programs begin with COSC 102, for which COSC 101 or equivalent experience is a prerequisite.
Students wishing to major in computer science should begin by enrolling in the Introduction to Computing sequence, COSC 101/101L-102/102L. This sequence provides an introduction to computational thinking and contemporary programming practice. In COSC 101 students learn program design and the implementation of algorithms using the programming language Python. In COSC 102 the concepts of information hiding, data abstraction, and modular design are emphasized to build more sophisticated programs in the programming language Java. The sequence is suitable for any students who are interested in learning about programming as well as the fundamentals of computer science.
Students interested in learning programming in the context of web-application design should enroll in COSC 140/140L, when offered. This course, like COSC 101, introduces the programming language Python, but explores software development and design topics with a focus on modern web applications.
No previous experience in computer science is required to enroll in COSC 101/101L or 140/140L. Students who have prior experience in computer science may be able to start their studies at Colgate at a higher level; COSC 102/102L is available to qualified students, who should consult the department chair about appropriate placement.
Colgate course credit is awarded to students receiving a score of 4 or 5 on the AP Computer Science A exam. Students receiving a score of 4 or 5 on the A exam will be awarded credit for COSC 000 and may qualify for placement in COSC 102, pending consultation with the department chair. If you did not take the AP exam but have had a substantial introduction to computer science, you should register for COSC 101/101L, but consult with the department chair about appropriate placement when you arrive at Colgate.