Revised Mar 28, 2017

CS 105: Introduction to Computer Programming 1


General description

This course introduces practical computer programming to students who don't have previous programming experience. Students learn programming concepts by creating interactive visualizations, simple games, and image processing effects. They also explore fundamental imperative programming language concepts, such as variables, conditionals, loops, functions, events, and arrays. Students learn general skills, such as coding style, modular design, testing, and debugging. In addition, they explore media computation topics, such as two-dimensional graphics drawing, human input, animation, and image processing.

Logistics

Audience

  • Students in the Global Business and Digital Arts (GBDA) program
  • Fine Arts - Studio majors taking the Digital Art Specialization
  • Students interested in learning how to program

Normally available

  • Fall

Related courses

  • Successors: CS 106
  • Conflicts: CS 115, CS 135, CS 145, CS 137, and other courses in introductory computer science

For official details, see the UW calendar.

Software/hardware used

Typical reference(s)

  • Daniel Shiffman, Learning Processing (second edition), Morgan Kaufmann

Required Preparation

At the start of the course, students should be able demonstrate a basic understanding of mathematical concepts. No programming background is expected.

Learning objectives

At the end of the course, students should be able to

  • Write interactive programs that draw shapes and respond to mouse and keyboard input using the Processing programming language
  • Understand and apply concepts, such as variables, conditionals, loops, functions, and arrays
  • Read simple pieces of code to explain their function, trace code execution, and identify related errors

Typical syllabus

Introduction (3 hours)

  • What is an algorithm? What is code?
  • Code syntax and syntax errors

Drawing and attributes (3 hours)

  • Two-dimensional coordinates, drawing functions, commenting practices, the concept of sequential control flow
  • Drawing attributes and the concept of program state
  • Colour representation and hexadecimal numbers

Interaction and variables (3 hours)

  • Draw loop and the concept of program events
  • Variable declaration and initialization, variable types, and the concept of computer memory

Conditionals (3 hours)

  • Boolean logic and relational expressions
  • If-then-else statements
  • Numeric representation and binary numbers
  • Bounds detection for hit testing

Loops (6 hours)

  • While loop and for loop
  • Variable scope
  • Remapping variables
  • Nested loops

Functions (3 hours)

  • Writing custom functions, function parameters, return values
  • Variable shadowing

Arrays (4.5 hours)

  • Arrays, array elements, indexing
  • Array operation idiom

Objects and program design (4.5 hours)

  • Using classes and objects for program encapsulation
  • Modularity, testing, and debugging

Images, video, and libraries (6 hours)

  • Loading and displaying images, image pixels
  • Image processing and computational complexity
  • Video capture and processing
  • Using libraries, e.g., loading and playing sounds