Computer science is the systematic study of computation, hardware systems, software systems, and networks, combined with the design and analysis of algorithms and data structures. It is the foundation upon which all branches of information technology rest. Students of computer science learn to design and implement systems to manage and visualize data, control robots, model human cognition, extract information from vast volumes of data, and build the tools used by other IT professionals.
The goal of this course is to introduce computer science to students interested in pursuing computer science as a major or minor. This course is also suitable for informatics majors who are considering a computer science cognate, or any student who anticipates the need to develop computing skills that are applicable to a variety of disciplines. Students majoring in psychology, business, sociology, physical and natural sciences, and mathematics are particularly encouraged to take C211.
Computer programming is a fundamental tool of computer scientists, so a primary focus of this course will be computer programming. We will also be looking at the bigger picture and introducing concepts that will be needed for subsequent computer science courses. We will study various algorithms and abstractions and problem-solving techniques.
The prerequisite for this course is "High school precalculus math." Note that neither MATH M027, M118, nor M211 is required, despite misleading language to this effect in older course descriptions.
In algebra, you solved problems involving symbols (numbers, variables, and operators like "+") by applying rules (usually in the form of laws or theorems). The trick in algebra was deciding which rule among many was most promising to lead to the solution of the problem. Computer scientists solve problems in much the same way. If you really enjoyed high-school math, you are likely to enjoy this course and to do well in it.
For our programming assignments, we use the Scheme programming language. Scheme is an interesting language in that it is both easy to learn and extremely powerful. Both properties derive from its simple, uniform syntax, its provision of a few general features in place of myriad special-purpose features, and its lack of restrictions. Scheme is often used in industry by expert programmers with really hard problems to solve. In subsequent courses, you will learn other languages, like C++ and Java, that build in more special-purpose features and, through various restrictions, help the everyday programmer create correct and efficient programs.
Here's what you can expect to learn in C211: