CSCI C211/A591
Introduction to Computer Science

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, physics, biology, chemistry, cognitive science, music, fine arts, 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. If you are ready to take a calculus course, then you are ready to take Introduction to Computer Science.

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.

Scheme is the programming language used for the assignments. 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.

Not convinced? Why Scheme rather than Java or C++?

Why Computer Science?

Still not convinced Computer Science is for you? Find out why it might just be the best thing that ever happened to you by reading this excellent resource from Univeristy of Colorado at Boulder.

Course Goals

At the end of C211, you should be able to:

  1. Think logically to solve concrete problems.
  2. Write a correct and efficient program to implement an algorithm.
  3. Productively critique the thinking of self and others.
  4. Demonstrate the ability to work in teams, and effectively communicate ideas to others.
  5. Acquire a deep and practical understanding of fundamental computer science concepts, especially recursion, abstraction, and data structures.

Learning Outcomes

At the end of C211, you should be able to:

Course Topics

Here's a list of topics that are typically covered in C211:

  1. Basic datatypes and recursion
  2. Abstract data types
  3. Algorithms
  4. Advanced programming
  5. Programming Style

[ Proceed to internal home page | Authorization Failed? ]