Archive for December, 2017

Beginning with App Inventor

December 18, 2017

In the process of writing the curriculum for the CSCI 100 course I have to learn a few odds and ends.  One new to me odd thing is App Inventor.  I had looked at App Inventor previously but not to the point where I could teach it.  I worked through the App Inventor site tutorials (Beginner, PaintPot and Mole Mash).  Pretty easy.  I figured I better find something a bit more challenging.  Nothing super fancy but enough to explain a bit more about the IDE and programming techniques.  Google to the rescue.  I found one PDF tutorial that had excellent graphics and readable text.  After spending 10 minutes of confusion I discovered that there is a big difference from App Inventor v1 and v2.  Using a v1 tutorial when coding with v2 is not a good thing.  After a few minutes of digging through YouTube I found David Wolber’s eight part series “Code “Pong” with App Inventor II”.  The tutorials are straightforward and I would categorize them as excellent.  I have learned one really important thing from working in App Inventor.  This will not be a revelation to those that work in drag and drop regularly.  That important thing is have a really big monitor.  DnD blocks take up room.  Yes, they do collapse but then they have to be expanded to see what is in there when you forget 5 minutes later.  Doing App Inventor on a 13-inch laptop would require young eyes.  I have a 29-inch monitor.  I am good.

DnD is a bit of a shift.  I think it is slower than text programming.  You have a lot of mouse work which is slower than typing (even my typing).  Also the overall setup is just so different.  Creating variables, building If statements and the general flow of the code is very different.  Not bad, it just takes a shift in the way to read code.

Would I want to produce a professional level app in App Inventor?  Nope but then that is not its intent.  Is it a good way to learn and have some fun writing simple apps?  For sure.

I now need to write something semi-original (no YouTube) to truly test how hard it is to chase down coding issues.

Don’t need no silly CS degree or background

December 13, 2017

Someone just sent me the link to Pythonroom.com, an online curriculum for Python.  The claim by Pythonroom is “Pythonroom lets anyone teach computer science.”  You mean I spent all those years learning pedagogy, multiple languages, hardware, software, binary numbers, programming logic and so on for nothing?  Shucks.

Building a new CS dual-credit course

December 11, 2017

I offer dual-credit courses for juniors and seniors.  These are fully accredited courses from University of Montana that I teach on my high school campus.  The kids are fully registered UM students and will receive a UM transcript.  The kids get the grade on their transcript that they get in my course.  No big final like an AP course.  It is a nice setup for them and me.  My course simply has to fit the broad requirements of the UM course.  I do not have to use the UM book or follow the exact UM course plan.  At the moment we offer four dual credit courses: Pre-calc, Stats, CSCI 100 (general credit) and CSCI 135 (CS credit).  The CSCI 100 used to be an intro to Python course with the CSCI 135 being a hard-core Java course.  The university just revamped these two courses.  The CSCI 100 is now a programming survey course, seven “languages” in the semester, and the CSCI 135 is a Python course.  Changing the CSCI 135 was not a big deal for me.  I just renumber my CSCI 100 course to CSCI 135.  My old CSCI 100 Python course was a year long so I did more than the university’s old CSCI 100 by a long shot.  My course now matches their new CSCI 135.  Sweet.  The university’s new CSCI 100 on the other hand will be a completely new course.  I talked to the CSCI 100 instructor (a friend of mine) who rebuilt and teaches the course.  His course consists of these seven topics:

  1. Code.org – fundamentals of DnD programming
  2. Scratch – simple coding in DnD
  3. Studio Code – mobile apps
  4. Alice – stories and interactive animations
  5. HTML – a basic web site
  6. Processing – visual programming
  7. Python

He also sent me his assignments for the semester.  After a quick look I decided his material would be perfect for the seniors looking at an education degree and have no programming experience.  Not so perfect for those of my students who have taken any programming from me or looking at going into CS.  A bit too basic.  I like the concept of the course, hitting a number of topics lightly so students have a starting point at building a tool set for programming.  I just have to redesign the course so it fits my knowledge set.  I do not know any HTML (something I should fix some day), Code.org is a bit too simple, most of my students will have seen Scratch, I am not sure what Studio Code is and I have a better idea for Processing.  OK, so I need to rewrite 90% of his course.  Not a problem, I have ideas for substitutes.

Here is my altered CSCI 100 that suits my skill set and hardware availability:

  1. Code.org – just so the students can see Code.org
  2. App Inventor – build an Android app
  3. Micro:bit – make music with DnD
  4. Alice – build a scene from Shakespeare
  5. Small Basic – intro to a simple line code language
  6. Arduino – line code and hardware (Processing is the IDE Arduino uses)
  7. Python – back to micro:bit along with some pure coding projects

Nothing earth shaking there.  I think I am hitting all the bases for a good cross section of programming tools and still providing enough rigor to justify 3 college level credits.  I have eighteen weeks to cover this material.  With some heavy math and some head scratching logic here is my time schedule:

(We have block periods so classes are 90 minutes every other day.)

  1. Course set up and Code.org – 1 week
  2. App Inventor – 2 weeks
  3. Micro:bit – 2 weeks
  4. Alice – 2 weeks
  5. Small Basic – 2 weeks
  6. Arduino – 2 weeks
  7. Python – 4 weeks

That gives me 3 weeks of slack in there.  This seems like a lot of time but I know from experience that spring semester is pure hell on the seniors.  Sports, senior projects, college visits, extended spring breaks and general weird events really cut into the spring semester.  If I see extra time looming there are several other topics I can pull up in a hurry; Unity, Code Combat, or just flesh out some of the previous topics that were of special interest.

My biggest issue will be to have good assignments ready to go.  Some, maybe all, of the seniors will be doing this course independent study or with minimum supervision.  I have to have things laid out for them in a manner that will minimize confusion.  In a classroom setting confusion is minimized on the fly, no so with independent study.  So for this first offering I am being very select as to who I allow take the course.  I need the students that can think for themselves, not get hung up when something does not work out perfectly and give helpful feedback.  I have already eliminated one prospective student.  She asked if the course was going to be hard because she did not want any hard courses her senior year.  Good luck in college.

I really hope I can get five or six students to sign up for the course.  I think it will be a fun experience for them and for me.