Story of the year:

In this class you’ll learn how to be a computer programmer.  A lot of people think that all there is to being a computer programmer is knowing how to write working source code in a specific language, but the truth is that this is just a small part of the skills you need. To be a computer programmer you need at least the ability to:

These are the four skills that we’re going to focus on in our class. And here’s how we’re going to do it.

There are some basic, core programming concepts that you need to be comfortable with, and you need to be comfortable with them right away. In order to achieve this we’re going to use Scratch, a programming language that doesn’t have a lot of complicated text so that you can jump into the planning and writing process as quickly as possible.

As soon as we start with Scratch, though, we’re going to give it up for another environment for developing programs: Greenfoot. In Greenfoot we’ll also use our basic programming toolkit, but we’ll also be introduced to the programming concepts that make big projects easier to plan, communicate and adjust later. These concepts are objects, classes, inheritance and methods. We’ll also implement our basic programming toolkit in the new environment and language, as well as gain some experience testing, breaking and fixing our programs.

Then, we’ll move into Java, a professional programming language. Java is our most powerful language yet, and we’re going to be in control of much more. That means that we’re going to move well-beyond our basic programming kit. We’re going to start writing programs that take user input, that store large quantities of information and that make complex decisions.

Programmers need to learn new languages and techniques all the time. Part of what it means to be a modern day programmer is having the ability to adapt a core set of skills to different languages and environments. That’s why we’re going to end the year by learning a new language, one that’s used by Facebook and numerous other companies to create webpages. I’m talking about PHP, and design some web pages as a final project.

Assessments in this course:

  1. Write a program that does X
  2. Write a program that does X_0 – X_N
  3. Fix this program
  4. Find an input that will break this program
  5. Rewrite this program
  6. Hand-trace the output of this program (Human compiler)
  7. Design, but don’t implement, a program
  8. Explain how this program works

Concepts :

Writing a basic, working program

  1. Primitive Types
  2. Objects
  3. Variables
  4. Decisions
  5. Loops

Writing reusable programs

  1. Good naming practices
  2. Choosing classes
  3. Designing methods
  4. Comments

Making sure that your program works

  1. Decomposition
  2. Hand-tracing code
  3. Compile-time versus run-time error
  4. Debugging and testing

Keeping track of lots of information

  1. Strings
  2. Memory
  3. Arrays
  4. Lists
  5. Files

Unit One:  Your basic programming toolkit        

Statements, Boolean expressions, conditions, loops, variables

Project: Make your own Scratch project that uses two loops, one conditional, one variable

Hacker:  Include random numbers and keyboard input.

Assessments:

  1. Hand-trace a program, and predict the output (in Scratch).
  2. Write a program that uses the basic programming toolkit in Scratch.
  3. Create a thread for a Sprite where the order makes a huge difference.

Skills:

  1. I can hand-trace a program and predict its output.
  2. I can write a program using the basic programming toolkit.
  3. I can choose between if and if-else style conditionals.
  4. I can choose between for and while loops.

Scratch Resources:

http://www.cs.harvard.edu/malan/scratch/

http://info.scratch.mit.edu/sites/infoscratch.media.mit.edu/files/file/ScratchGettingStartedv14.pdf

For me: http://info.scratch.mit.edu/sites/infoscratch.media.mit.edu/files/file/ScratchProgrammingConcepts-v14.pdf

Unit Two: Using classes and methods

Unit Three: Writing methods with conditionals

Unit Four: Writing methods with loops

Unit Five: Debugging and Testing

Unit Six:  Making a game (Designing classes and reusable methods)

Unit Seven: Moving into Straight Java in BlueJ

Unit Eight:  Strings

Unit Nine: Data Structures – Array Lists and Arrays

Unit Ten: Recursion and Searching

Unit Eleven: Final Project -- PHP and Web Design