"Computers are dull and boring; humans are clever and imaginative. We humans make computers exciting. Equipped with computing devices, we use our cleverness to tackle problems we would not dare take on before the age of computing and build systems with functionality limited only by our imaginations." -- Jeannette Wing

Course Description

or... Should I Take This Course?

This course is an introduction to the field of Computer Science. It will cover the breadth and impact of computer science on society; and what it means to be a computer scientist. A large portion of the class will be devoted to introducing the major concepts of computer science, and the background needed to be successful as a computer science student such as tools, terminology, and introductory programming skills. (If you have already done a lot of computer programming this is probably NOT the course for you. Keep reading.)

One way to introduce this information is by learning to program. All of the assignments will be programming assignments in a variety of computer languages of varying complexity. Hopefully in an entertaining way. This course is for people who have little to no programming experience. It should comfortably give students confidence in the deep technical side of computers. This course is not about how to use applications on a computer. It is how to begin to bend a computer to our will.

Everyone is welcome to take this course, whether you are going on in computer science or not. However, this course has a specific audience in mind. This course is not designed for people who have had nontrivial programming experience in a language such as C, C++, Python, Java, JavaScript, PHP, Lisp, etc. You probably should not be in this course if you are currently taking calculus or higher level math. In these cases you should probably be enrolled in CS120. Furthermore, this course has much to do with procedural and symbolic abstraction. If you have trouble with algebra you might want to allow extra time for homework or consider waiting until you have a stronger grasp of algebra.

Time: MWF 9:30-10:30
Final: None
Location: TLC 031
Text: None (see the resources section throughout the semester)

Estimated Syllabus

This syllabus is an estimate of what we might cover this semester. The class varies from semester to semester to reflect new and interesting topics.

Wk#

Monday
of that
Week

Topics/Links Assignments Comments
1 Jan 9 Context. Software is everywhere. The information age. What is computer science? Computer science is about organizing process and data. Any limits to computing?

Information and Representation: Files and data. Number systems and encoding things in bits.

Hardware and Software. Operating Systems duties.

  NO CLASS MONDAY
2 Jan 16 Intro to Programming in Scratch, the Scratch interface, simple programming. x-y coordinate system. Sprites and motion. Program flow, loops, decisions. Assignment 1 NO CLASS MONDAY
3 Jan 23 More simple programming, threads of execution, introducing pong    
4 Jan 30 The Pong game and multiple threads of execution, inter thread communication, interaction of sprites and background. What does it mean to be random? Randomness in our programs. Estimating pi and making random choices. Assignment 2  
5 Feb 6 I'm Thinking of a Number the guessing game (threads, messages, variables, scope (local and global)), Submarine hunter game (sounds, sensing, images, and more messages) Assignment 3  
6 Feb 13 NetLogo and the dance program to understand turtles location and movement. Discrete vs continuous coordinate systems. The blocks program to understand patches. The virus simulator.   NO CLASS MONDAY
7 Feb 20 More virus simulation and the rabbits and grass simulation, plotting graphs and histograms, wolves and sheep, mathematical models and computer models, more on working with patches, the game of life, the philosophy of computing Assignment 4 NO CLASS FRIDAY
8 Feb 27 more game of life and control structures TEST ON WEDNESDAY!!! NO CLASS MONDAY
9 Mar 6 Simple graphics with the Processing language, coordinates and shapes, the syntax of languages, the idea of type, the execution model, frame rate, mouse position    
10 Mar 13     SPRING BREAK!
11 Mar 20      
    Robert Heckendorn becomes instructor    
12 Mar 27 Color models, control, loops, nesting of loops, functions, data vs function abstraction, new shapes with sine/cosine/radians and degrees. Translating between polar and Cartesian coordinates.    
13 Apr 3 The clock program, program design, functions, interfaces. Assignment 5 Due Apr 13  
14 Apr 10 1D Arrays, 2D arrays, image processing, nested loops, objects What so useful about subscripting a variable? Making simple image filters. Making some exotic image filters. Assignment 6  
15 Apr 17 More on Arrays. The object paradigm. Abstraction of function AND data. Review of variable scope. What's so great about objects? Tic-tac-toe.    
16 Apr 24 Can we detect edges in a picture? Fading between two images. More with color and transparency, saving images. Assignment 7  
17 May 1 Angles and direction. Text and the meter program.   PROCESSING TEST ON FRIDAY MAY 5!!!
18 May 8 Finals Week Final: None  

References and Resources

General References

Scratch

NetLogo

Processing

CS in the News

Services

Policies and Processes