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 a computer science major.
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 official prerequisite of this course is "MATH M027 or higher," which is a shorthand for "you've taken high school math up to but not necessarily including calculus." MATH M118 is not 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: