CPSC 120 Principles of Computer Science Spring 2015

CPSC 120 Course Information

Course Description

This course is an introduction to computer science. What does that mean? Programming is a key element of computer science, so we'll spend a fair amount of time thinking about and doing programming. But programming isn't all there is to computer science - the "principles" referred to in the course title include concepts like representation and abstraction and computability and skills like logical thinking and algorithm development.

This course will use art, games, and the natural world to explore many of the principles of computer science. Through labs and projects, students will program increasingly sophisticated interactive animated "sketches" which will showcase the concepts introduced in the course.

This course is appropriate for students who are interested in computer science as well as those interested in employing computers in the creation of art (e.g. majors or minors in art, media and society, etc). No background in computer science or computer programming is necessary or expected. (If you've had previous programming experience, you should take CPSC 124 instead.) The course is designed to be taken by non-majors as well as those who might be considering majoring or minoring in computer science. (For those who continue on in computer science, this course will give you a head start by introducing concepts and skills that you'll revisit in CPSC 124 and later courses.)

Note that this is not a course on general computer skills or on how to use particular software applications like Word or Excel. While you will gain experience and skills that will increase your computer literacy, the emphasis in this course is on the science of computing rather than on how to use a computer.

This is also not a programming course as such. While a good deal of time will be spent programming and talking about programming, programming concepts will be introduced to service our twin goals of exploring key principles of computer science and creating nifty pictures - concepts will not be covered as broadly or as deeply as they would be in a course whose goal is proficiency in programming. Students who wish more programming experience after completing CPSC 120 should take an introductory programming course such as CPSC 124.



Course Web Page

You are expected to regularly consult the course web page for announcements, assignments, and most handouts.


Learning Processing
Daniel Shiffman
Morgan Kaufmann, 2008
ISBN 978-0-12-373602-4

The textbook is required, and should be purchased from the College Store or elsewhere.

Additional material will be handed out in class or posted on the course webpage.

Recommended Materials

If you have a laptop computer, you should bring it to class on non-lab days.

In addition, you will find it useful to have a notebook for taking notes in class and a folder to keep track of class handouts.

Aims and Objectives

As stated in the course description, this course is an introduction to computer science. The course has three broad goals:

  • To introduce students to fundamental computer science concepts.
  • To introduce students to computer programming in at least one problem-solving paradigm.
  • To excite students about computer science.

By the end of the course, the successful student will be able to:

  • define, explain, and give concrete examples of terms like algorithm, representation, decomposition, abstraction, modularity, efficiency, and computability
  • decompose complex scenes into smaller parts, choose appropriate representations, and utilize abstraction and modularity to simplify the task
  • use programming constructs like variables, conditionals, loops, arrays, functions, and recursion
  • create nifty interactive animated graphical programs
  • describe some of the many applications of computer science, and have an idea of how it is possible for programs to do all that

The course contains an element of quantitative reasoning (Goal 3), in that numbers are used to express coordinates, sizes, velocities, and so forth and appropriately-sized values must be chosen. The course also contains an element of artistic expression (Goal 5), in that students learn how to create animated scenes algorithmically, and also are encouraged to be creative with the scenes they construct.


This course will use a fairly new programming language called Processing. Processing was developed specifically for people who want to program using graphics, images, interaction, and animation but who don't know anything about programming. One of the exciting things about Processing is that you can create very sophisticated-looking programs much more easily - and with a lot less knowledge - than you can in most programming languages.

Another nice feature of Processing is that it is free and is available for Windows, Mac OS X, and Linux. This means that you can install it on your own computer if you want to continue working with Processing after this course.

A third reason for choosing Processing for this course is that under the hood, it is really the same as the powerful and well-known language Java. (Processing just strips and out simplifies a lot of the tricky stuff Java makes you do so you can create nifty graphical programs from day one.) This means that should you decide to continue on in computer science, what you learn in this course will give you a good head start in CPSC 124.

Active Learning

Computer science and programming are subjects best learned by doing. Class time will frequently be used for active discussions/problem-solving and for hands-on group activities to explore new concepts. Friday lab sessions will be an opportunity for students to integrate concepts from the readings and from class into larger units, with the chance to get help from other students and/or the instructor.

Time Required

The out-of-class workload for the course consists of the following:

  • readings, for most classes - typically around 10 pages, with examples and illustrations breaking up the text but new concepts and examples to absorb
  • weekly labs, which you get started on during the lab period
  • three projects, with about two weeks spent on each project
  • studying for two midterm exams and a final exam - best done by keeping up with the course material and completing the assignments rather than cramming at the last minute

Students most often report spending 5-7 hours per week outside of class, but this can vary substantially depending on individual skills, willingness to seek help, and motivation. Going beyond the bare minimum needed to complete the assigned work will enhance your learning of the material, and also reduce the time needed for later assignments. Regardless of whether you do the minimum or strive for more, it is essential that you budget sufficient time before the last minute so that you can seek help if you get stuck. The course material is cumulative, so turning in a half-completed assignment because you couldn't figure something out means that the next topic will be that much harder.

Valid HTML 4.01!