CPSC 120 Principles of Computer Science Spring 2010

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. In addition, students will learn how to create their own web pages and how to display their sketches on those pages.

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. 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 who 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

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




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.

Valid HTML 4.01!