Course Introduction & code.org

CS 1150 PEEE — Spring 2018

Day 1: Course Intro; Getting started on code.org

Hello

Hi. I'm Philip East and this is CS 1150 Programming Environments for Elementary Education. If you need to contact me try one of the following.

Pair-Programming

For much of the course I want you to use pair-programming. Pair-programming involves one person serving as the driver and one person serving as the navigator. Then, every so often, they swap roles. The driver does all the typing, program execution, etc. The navigator watches closely to make sure the driver is doing what's needed. They work together to decide what to do.

That means you'll need a partner. So, look around. Introduce yourselves. Be thinking about who you might like to partner up with. If you have a friend in the class, that might make for a good partnership or it might end up hurting your friendship because programming partners need to be willing to say things like "you're wrong", "that won't work", ...

At the beginning of next class period, we will identify partners and create a seating chart. Partners will sit side by side. Be aware that the big tables have power (if you are using your own computer) and the middle tables do not.

Questions?, comments? wonderings?

Course Activity/Syllabus

  [ display syllabus ]  

Hopefully you all read the syllabus. Any questions? Comments? [scroll through projected version of the syllabus] I think most students want to know the following about the course:

  • What get's graded?
  • What do I have to do?
  • [Discuss responses & expectations]

Course Success

We have a shared goal in this course—to be successful. For me, that means you learn a lot (mostly what I wanted you to learn :-) For you, ... Learn a lot? A good grade? Help you be a better teacher?

What can you do to enhance the likelihood or degree of your success?

  • Attend class and think/question during presentations and discussion. (What is being said? Do I understand/does it make sense? Do I agree? ...)
  • Ask questions when you don't understand/agree.
  • Persist when I am too dense to see your point.
  • Do all the assignments to the best of your ability—do more than the minimum.
  • Seek help when you have difficulty on the assignments. (e-mail, office hours, classmates, ...)
  • Try stuff beyond what is assigned or what you already know.
  • Think about assignments from the teacher's standpoint, e.g., it's goals, why/how it is useful, how it could be adapted, ...
  • Wonder about programming. (e.g., how is it similar to or different from other intellectual activity)
  • Be curious.
  • anything else?

Course Content

The university catalog indicates that this course is to address

Introduction to computational thinking and computer programming. Taught as a survey of programming environments used by elementary education teachers. Topics include structure of programming and the study of several programming environments used by students at a variety of age/ability levels.

This course is mostly about programming. It came to be because a long time ago (circa 1980) Bonnie Litwiller saw that her math teaching graduates were being asked to teach computer programming. So, she worked to get the state of Iowa to require colleges to include programming for their 7-12 math endorsement. At some point in time the elementary math specialist program was recognized to have the same need or expectation.

So, "What is programming?" To me, programming is the development of a set of instructions that allow the computer to independently accomplish some task. Typically, those instructions will produce some needed information or supervise some activity.

So, What does developing a set of computer instructions entail?   [note/discuss any responses]   One can certainly just jump in and write out some instructions and have the computer do them. For some very simple tasks that will work. But, my experience (and research that has been conducted) leads me to the conclusion that programming (done reasonably) consists of:

  • Deciding precisely what the program should accomplish
  • Determining what that will entail — what the computer needs to do
  • Producing a plan or algorithm that will accomplish the desired activity
  • Translating the plan/algorithm into code
  • Testing and revising the program code until it works (this may require changing the plan or even revising why you believe the program needs to do)

Only the last two of these tasks involve writing/producing code. Most of the problem solving required in programming should occur before any thought is given to coding.

Some people think programming is hard. It's not, or at least it is no harder than writing a research paper or designing and carrying out a science experiment or most any other activity that involves problem solving. Learning to program might be a little harder but that is because the learner has to learn a new kind of problem solving and how to convert the solution to a programming language which they don't know yet. It is somewhat like learning to write a new kind of poetry in a foreign language. You have to learn the poetry part and the foreign language.

Luckily for you, Scratch (the language you'll learn first) is fairly easy to pick up.

Questions?, comments? wonderings?

Basics of Programming

From a general point of view programming is relatively simple. It must be done in a language the computer understands. (There are lots of programming languages.) Each language provides a number of actions the computer can accomplish. The computer also has mechanisms for storing and manipulating data. Programming involves determining the actions and data manipulations that are needed and then organizing them appropriately. The basics of programming are:

  • Actions (including data manipulation, which is critical)
  • Organizing the actions

    There are four ways to organize actions.

    • Sequence

      This involves putting the actions in the appropriate order. Sounds simple but can become complex, particularly when the other organizing mechanisms are included.

    • Selection

      Selection involves choosing between alternatives (nearly always) using if. You can select one of two alternatives (if ... then ... else ...) or select between doing something or nothing (if ... then ...)

    • Repetition

      Repetition involves doing a set of actions over and over again. The repetition can occur a specified number of time or so long as something is true or until something becomes true. Specific syntax of the repetition statements depends on the language being used.

    • Modularization

      Modularization is the grouping of some basic actions (including selection and repetition) to make a new, more involved action. The set of actions (module) is given a name and when the new action needs to occur the module's name is placed in the program.

Keep these basics in mind as you complete your assignments.

Laptop Use in ITTC 328

If you have your own computer you can ignore this. If you need to use our laptops, please note the following.

  • Go to the cabinet;   pick a laptop   unplug it;   and note its location/number
  • Return to your seat and open the lap top;   if it doesn't light up, press the power button   [ display cart laptop startup for next steps ]  
  • When it asks for a bit locker password, enter compsci1
  • When directed, press CTRL-ALT-DELETE and log into your UNI active directory, be patient
  • Start up a web browser
  • Start to work or ask a question
  • DO ONLY CLASS STUFF!
  • When done for the day, press CTRL-ALT-DELETE and log out
  • Return the laptop to the cart, in the appropriate position, above its number, and plug it in

The code.org Course

  [ display code.org assignment and signup activity ]  

Your first assignment is to do the code.org course. We'll go over that right now. So, get your computer out. If you don't have one you are welcome to use one of ours from the laptop cart. Directions for accessing the site and signing in are in the code.org course assignment description.

The code.org learning activity introduces you to programming in a limited context. It doesn't have the freedom you'll eventually have. That should limit the complexity you encounter.

You are to complete the code.org course individually, i.e., each person logs in and does the work. You are, however, allowed/welcome to sit side by side with another person to work on it if you wish. It is important, however, that each person does all the coding on each lesson and follows along on the unplugged activities.

Partnerships

I would like you to find a partner in this class by the beginning of class on Thursday. It is probably a good idea to partner with someone who has grade level interests/preferences similar to your own. Another consideration is how well your schedules match so you can work together outside of class.

I will be sending a message to the class asking you to report partnerships. Please try to do so before the start of class on Thursday.

Questions?, Comments? Wonderings?

Take roll

Next Time:

And final questions? comments? wonderings?   ...   See you Thursday.