Introduction to Computer Science - Honors
Computer science is the study of computation, computing machinery (hardware and software), and information technology in general. A computer scientist builds the tools that others simply use. The goal of this course is to introduce computer science to students possibly interested in a computer science major.
Computer programming is at the heart of computer science, 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. Students interested only in programming (using tools) and not in computer science (developing tools) should consider taking A201 instead, where the focus is entirely on programming.
The official prerequisite for 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 apparently to this effect in older course descriptions. Furthermore, you need not be in the honors college to take this course.
In algebra, you solved problems involving symbols (numbers, variables, and operators like "+") by applying rules (usually in the form of laws, axioms, 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 (even if you did not enjoy calculus), you are likely to enjoy this course and to do well in it. If not, you should think carefully about whether to proceed.
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.