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. 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 100, 101, 102, 140, and 150. The courses COSC 101 and 140 provide an introduction to computational thinking through substantial practice in computer programming, while the courses COSC 100 and 150 provide opportunities for non-majors to learn about computer applications in the liberal arts and to survey, at an introductory level, various topics in computer science. 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 102the 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 start their studies at Colgate at a higher level; COSC 102/102L and COSC 201/201L are both 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 101 and qualify for placement in COSC 102. 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.
An introduction to computer science through the study of programming utilizing the programming language Python. Topics include program control, modular design, recursion, fundamental data structures including lists and maps, and a variety of problem-solving techniques.
A weekly two-hour laboratory provides the opportunity to develop programming and design skills. Required corequisite to COSC 101.
A continuation of COSC 101 and the first course in the major. Develops advanced programming topics such as abstract data types and algorithms and their analyses. Abstract data structures may include lists, stacks, queues, maps, trees, and heaps; algorithms include search and sort procedures. The concepts of information hiding, data abstraction, and modular design are emphasized. Object-oriented programming is used throughout.
Required corequisite to COSC 102. This weekly two-hour laboratory includes the design and implementation of programs that illustrate the topics of the course.