CS 419ab -- The Art and Beauty of Computer Programming

Winter Quarter 2018

http://cs.oregonstate.edu/~mjb/cs419ab


Handouts Classes Projects Grades VHR


This page was last updated: February 28, 2018


Announcements:


What We Will Be Doing This Quarter

In this course, you will learn:

The CGEL

If you need a place to do your programming assignments, you can get access to the Windows 10-based graphics systems in OSU's Computer Graphics Education Lab (CGEL) in Batcheller Hall 244.

Given the size of this class, we will hold all of our classes in the CGEL so that we can do live exercises together.

Access to the CGEL is by your OSU ID card, which also acts as a card key. The first full week of classes, I will give the EECS Main Office a list of who is in this class, so that they can enable your cards for the CGEL.

Computational Thinking Comes First

The goal of this class, at least the first part of it, is to develop your "computational thinking", that is, how to go from an idea in your head to actually writing code. It's more straightforward than you think.

Prerequisites

None, although some memory of algebra will be helpful.

Derequisites

To take this course, you can't be an Engineering major. (That includes Computer Science.)

Professor

The class is being taught by Professor Mike Bailey.

Office: Kelley 2117 (2nd floor, south side)
E-mail: mjb@cs.oregonstate.edu
Phone: 541-737-2542

Office Hours:

Mondays 3:00 - 5:00 Kelley 2117
Wednesdays 1:00 - 3:00 CGEL (Bat 244)
Thursdays 12:30 - 2:30 Kelley 2117
    or, anytime my office door is open
    or, by appointment -- send email

Textbook

There is no purchased textbook for this course. Course material will consist of handouts, web pages, and notes taken in class.

Computer

You are expected to have access to a computer. There are many student computer labs around campus. We will work to get the right software loaded on them.

What would be really nice is if it's your own laptop so that we can work together on examples in class, but this is not absolutely necessary. Don't let it prevent you from taking the class.

Getting Software

The software will be loaded on the computers in various student computer labs, but you will most enjoy having it on your own machines. Here is how to do that.

  1. One package we will use is Scratch. You can get Scratch in one of two ways:
    1. As a standalone program. Get it at: http://scratch.mit.edu/scratch2download/
    2. As a web browser-based program. Point your web browser to: http://scratch.mit.edu/projects/editor/ to run it. This seems to run better on the Chrome browser than on others.
  2. The more-serious package we will use is Processing. Get it at: https://processing.org/ . Click on the Download button in the top-left corner.

Handouts

Programming Through the Ages 1pp 2pp 4pp 6pp
Some Important Scratch Puzzle Pieces 1pp 2pp 4pp 6pp
Project #1 Notes 1pp      
Intro to Processing 1pp 2pp 4pp 6pp
Running Processing 1pp 2pp 4pp 6pp
Writing Processing 1pp 2pp 4pp 6pp
Variables and Loops 1pp 2pp 4pp 6pp
Drawing Arbitrary Polygons 1pp 2pp 4pp 6pp
if-statements 1pp 2pp 4pp 6pp
Drawing Text 1pp 2pp 4pp 6pp
Reacting to the Mouse and Keyboard 1pp 2pp 4pp 6pp
Transformations 1pp 2pp 4pp 6pp
Images 1pp 2pp 4pp 6pp
Drawing Circles 1pp 2pp 4pp 6pp
3D 1pp 2pp 4pp 6pp
Randomness 1pp 2pp 4pp 6pp
De-bouncing the keyboard keys 1pp 2pp 4pp 6pp
Polar Equations 1pp 2pp 4pp 6pp
Arrays 1pp 2pp 4pp 6pp
Data 1pp 2pp 4pp 6pp
A Fairly Complete List of Processing Variables and Functions, Sorted by Name Here      
A Fairly Complete List of Processing Variables and Functions, Sorted by Category Here      
A Simpler List of Processing Variables and Functions Here      
The Simplest List of Processing Variables and Functions Here      
Processing Quick Reference Sheet Here      

What if I really, really want a book?

There is no required textbook for this course. Everything will be done with free notes. But, if you are dying to have a book, I personally like this one:


https://www.amazon.com/Processing-Visual-Artists-Expressive-Interactive/dp/1568817169/ref=sr_1_10?s=books&ie=UTF8&qid=1541098991&sr=1-10&keywords=glassner

Class Schedule

To see an Academic Year calendar, click here.

Class time is: Monday, Wednesday, and Friday, 12:00 - 12:50.

Our first class will be in Owen 101.
Given the size of this class, we will hold the rest of the classes in the CGEL so that we can do live exercises together. (The CGEL is the Computer Graphics Education Lab, and is located in Batcheller Hall 244.)

Cancelled dates: January 18, January 21

Note: this schedule is my best guess of where we'll be when -- it is only approximate.
  Date Where Topics
1 Jan 7 Owen 101 Introductions. General course information. Computation is a solution-generating process. Project #1.
Scratch: getting, running, screen layout, coordinate system
2 Jan 9 CGEL More Scratch: move, glide, repeat, forever, rotate, change size to, pick random, backgrounds, sounds, if <key is pressed>
3 Jan 11 CGEL More Scratch: arithmetic, costumes, set/change effects, broadcasting/receiving, cloning.
Variables -- the process of replacing concrete values with symbols in order to generalize a computation to work in more than one situation..
4 Jan 14 CGEL Processing: Getting, installing, screen areas, coordinate system, menues, setup( ), draw( ),
5 Jan 16 CGEL More Processing: setup( ), background( ), draw( ), color( ), colorMode( RGB ), Color Selector, statements, rect( xleft, ytop, xsize, ysize ), variables, multiply (*), divide (/), add (+), subtract (-) semi-colons
6 Jan 18 CGEL Prof. Bailey out of the office -- no class today -- sorry.
7 Jan 21 CGEL Martin Luther King holiday -- no class today
8 Jan 23 CGEL More Processing: parentheses, comments, for-loops, line( x1, y1, xr, y2 ), stroke( r, g, b ), strokeWeight( w ), fill( r, g, b )
if-statements
9 Jan 25 CGEL Reacting to the mouse and keyboard
10 Jan 28 CGEL Work on Project #4.
11 Jan 30 CGEL Work on Project #4.
12 Feb 1 CGEL Work on Project #4.
Groundhog Day is tomorrow!
13 Feb 4 CGEL Transformations
14 Feb 6 CGEL Animation
Work on Project #5
15 Feb 8 CGEL Images
Work on Project #5
16 Feb 11 CGEL Discuss the Final Project.
Circles and arbitrary-sided polygons
17 Feb 13 CGEL Don't forget that Valentine's Day is tomorrow!
18 Feb 15 CGEL 3D
19 Feb 18 CGEL  
20 Feb 20 CGEL Written Final Project proposals due
Randomness
21 Feb 22 CGEL  
22 Feb 25 CGEL  
23 Feb 27 CGEL Data
    CGEL . .
30 March 15 Final Project Help session. CGEL
* March 19 CGEL Final Project Presentations Tuesday, March 19, 9:30 - 11:30.
You can confirm this for yourself by going here.

Projects

Project # Points Title Due Date
1 50 Creating a 2D animation using Scratch! January 14
2 50 Draw Something Cool in 2D using Processing January 21
3 100 Draw Something Cool in 2D using Processing and for-loops January 28
4 100 Simple Painting Program February 4
5 100 Simple Animation using Transformations February 11
6 100 3D Animation using Transformations February 20
7 100 Add Noise to Your Simple Painting Program February 27
8 100 Polar Shapes March 8
FP 100 Final Project March 18, noon, no BDs


Project Turn-In Procedures

Life Events

As {John Lennon? Allen Saunders?} has said: "Life is what happens to you while you're busy making other plans". I care about you as a person. When life happens to you, send me an email and come see me. I might be able to help, I might not. But I surely can listen. You are not alone.

And, Speaking of Having Some Control Over Your Life Events: Bonus Days and Late Assignments

"I love deadlines. I like the whooshing sound they make when they fly by."
-- Douglas Adams

Projects are due at 23:59:59 on the listed due date, with the following exception:

Each of you has been granted five Bonus Days, which are no-questions-asked one-day project extensions which may be applied to any project, subject to the following rules:

  1. No more than 2 Bonus Days may be applied to any one project
  2. Bonus Days cannot be applied to tests
  3. Bonus Days cannot be applied such that they extend a project due date past the start of Test #2.

Click here to get a copy of the Bonus Day Submission Form. Fill this out and turn it in the next class period after turning in your project.

Students With Disabilities

Accommodations for students with disabilities are determined and approved by Disability Access Services (DAS). If you, as a student, believe you are eligible for accommodations but have not obtained approval please contact DAS immediately at 541-737-4098 or at http://ds.oregonstate.edu. DAS notifies students and facult'ay members of approved academic accommodations and coordinates implementation of those accommodations. While not required, students and faculty members are encouraged to discuss details of the implementation of individual accommodations.

Religious Holidays

Oregon State University strives to respect all religious practices. If you have religious holidays that are in conflict with any of the requirements of this class, please see me immediately so that we can make alternative arrangements.

Basic Needs

Any student who has difficulty affording groceries or accessing sufficient food to eat every day, or who lacks a safe and stable place to live, is urged to contact the Human Services Resource Center (HSRC) for support: hsrc@oregonstate.edu, 541-737-3747. The HSRC has a food pantry, a textbook lending program, and other resources to help. Furthermore, if you are comfortable doing so, please notify me. I will do everything I can do to help you.

Grading

Grades will be posted through this web page. To protect your privacy, they will be posted by your alias that you give me in the web form.

Click here to see the current grade posting.

CS 419ab will be graded on a fill-the-bucket basis. There will be 8 projects, 11 quizzes (weeks 0-10), and one presentation. You get to keep all the points you earn.
The quizzes will be done via Canvas. They will open each Friday afternoon at 1:00 and close Sunday night at 23:59:00. Canvas is very unforgiving about due times -- don't push it.

... with the exception of Quiz #0:

Quiz #0 is due to me by 4:00 PM on Friday, January 11. Fortunately, it is not too hard:

  1. Get a 3"x5" index card (I'll give you one the first day of class).
  2. Print your name neatly at the top (holding the card horizontally).
  3. Print the course number (CS 419ab) neatly next to your name.
  4. Also, printing neatly, tell me why you are taking this class. What do you hope to get out of being here?
  5. Be honest -- no sucking up!
  6. Bring the card to my office (Kelley 2117: second floor, south side) sometime when I am there. (Don't throw it under the door.)

Your final grade will be based on your overall class point total. Based on an available point total of 910, grade cutoffs will be no higher than:

Points Grade
870
840 B+
810
780 C+
760
730 D+
710


Other Notes You Might Enjoy!

University Classes
Computer Graphics Shaders
Scientific Visualization
Parallel Programming
CS Skills for Simulation and Game Programming
Vulkan

Grades 4-12 Outreach
Scratch
SketchUp
Blender
TinkerCad
Processing


For more information, contact:
Professor Mike Bailey
Kelley 2117 (2nd floor, south side, overlooking the Milam dumpsters)
mjb@cs.oregonstate.edu
http://cs.oregonstate.edu/~mjb/cs419ab