Archive for the ‘Uncategorized’ Category

CS quotes to live by

November 13, 2018
  1. “Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to build bigger and better idiots. So far, the universe is winning.” – Rick Cook
  1. “Lisp isn’t a language, it’s a building material.” – Alan Kay.
  1. “Walking on water and developing software from a specification are easy if both are frozen.” – Edward V Berard
  1. “They don’t make bugs like Bunny anymore.” – Olav Mjelde.
  1. “A programming language is low level when its programs require attention to the irrelevant.” – Alan J. Perlis.
  1. “A C program is like a fast dance on a newly waxed dance floor by people carrying razors.” – Waldi Ravens.
  1. “I have always wished for my computer to be as easy to use as my telephone; my wish has come true because I can no longer figure out how to use my telephone.” – Bjarne Stroustrup
  1. “Computer science education cannot make anybody an expert programmer any more than studying brushes and pigment can make somebody an expert painter.” – Eric S. Raymond
  1. “Don’t worry if it doesn’t work right. If everything did, you’d be out of a job.” – Mosher’s Law of Software Engineering
  1. “I think Microsoft named .Net so it wouldn’t show up in a Unix directory listing.” – Oktal
  1. “Fine, Java MIGHT be a good example of what a programming language should be like. But Java applications are good examples of what applications SHOULDN’T be like.” – pixadel
  1. “Considering the current sad state of our computer programs, software development is clearly still a black art, and cannot yet be called an engineering discipline.” – Bill Clinton
  1. “The use of COBOL cripples the mind; its teaching should therefore be regarded as a criminal offense.” – E.W. Dijkstra
  1. “In the one and only true way. The object-oriented version of ‘Spaghetti code’ is, of course, ‘Lasagna code’. (Too many layers).” – Roberto Waltman.
  1. “FORTRAN is not a flower but a weed — it is hardy, occasionally blooms, and grows in every computer.” – Alan J. Perlis.
  1. “For a long time it puzzled me how something so expensive, so leading edge, could be so useless. And then it occurred to me that a computer is a stupid machine with the ability to do incredibly smart things, while computer programmers are smart people with the ability to do incredibly stupid things. They are, in short, a perfect match.” – Bill Bryson

34.  “In My Egotistical Opinion, most people’s C programs should be indented six feet downward and covered with  dirt.” – Blair P. Houghton.

  1. “When someone says: ‘I want a programming language in which I need only say what I wish done’, give him a lollipop.” – Alan J. Perlis
  1. “The evolution of languages: FORTRAN is a non-typed language. C is a weakly typed language. Ada is a strongly typed language. C++ is a strongly hyped language.” – Ron Sercely
  1. “Good design adds value faster than it adds cost.” – Thomas C. Gale
  1. “Python’s a drop-in replacement for BASIC in the sense that Optimus Prime is a drop-in replacement for a truck.” – Cory Dodt
  1. “Talk is cheap. Show me the code.” – Linus Torvalds
  1. “Perfection [in design] is achieved, not when there is nothing more to add, but when there is nothing left to take away.” – Antoine de Saint-Exupéry
  1. “C is quirky, flawed, and an enormous success.” – Dennis M. Ritchie.
  1. “In theory, theory and practice are the same. In practice, they’re not.” – Yoggi Berra
  1. “You can’t have great software without a great team, and most software teams behave like dysfunctional families.” – Jim McCarthy
  1. “PHP is a minor evil perpetrated and created by incompetent amateurs, whereas Perl is a great and insidious evil, perpetrated by skilled but perverted professionals.” – Jon Ribbens
  1. “Programming is like kicking yourself in the face, sooner or later your nose will bleed.” – Kyle Woodbury
  1. “Perl – The only language that looks the same before and after RSA encryption.” – Keith Bostic
  1. “It is easier to port a shell than a shell script.” – Larry Wall
  1. “I invented the term ‘Object-Oriented’, and I can tell you I did not have C++ in mind.” – Alan Kay
  1. “Learning to program has no more to do with designing interactive software than learning to touch type has to do with writing poetry” – Ted Nelson
  1. “The best programmers are not marginally better than merely good ones. They are an order-of-magnitude better, measured by whatever standard: conceptual creativity, speed, ingenuity of design, or problem-solving ability.” – Randall E. Stross
  1. “If McDonalds were run like a software company, one out of every hundred Big Macs would give you food poisoning, and the response would be, ‘We’re sorry, here’s a coupon for two more.’ “ – Mark Minasi
  1. “Beware of bugs in the above code; I have only proved it correct, not tried it.” – Donald E. Knuth.
  1. “Computer system analysis is like child-rearing; you can do grievous damage, but you cannot ensure success.” – Tom DeMarco
  1. “I don’t care if it works on your machine! We are not shipping your machine!” – Vidiu Platon.
  1. “Sometimes it pays to stay in bed on Monday, rather than spending the rest of the week debugging Monday’s code.” – Christopher Thompson
  1. “Measuring programming progress by lines of code is like measuring aircraft building progress by weight.” – Bill Gates
  1. “Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” – Brian W. Kernighan.
  1. “People think that computer science is the art of geniuses but the actual reality is the opposite, just many people doing things that build on each other, like a wall of mini stones.” – Donald Knuth
  1. “First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack.” – George Carrette
  1. “Most of you are familiar with the virtues of a programmer. There are three, of course: laziness, impatience, and hubris.” – Larry Wall
  1. “Most software today is very much like an Egyptian pyramid with millions of bricks piled on top of each other, with no structural integrity, but just done by brute force and thousands of slaves.” – Alan Kay
  1. “The trouble with programmers is that you can never tell what a programmer is doing until it’s too late.” – Seymour Cray
  1. “To iterate is human, to recurse divine.” – L. Peter Deutsch
  1. “On two occasions I have been asked [by members of Parliament]: ‘Pray, Mr. Babbage, if you put into the machine wrong figures, will the right answers come out?’ I am not able rightly to apprehend the kind of confusion of ideas that could provoke such a question.” – Charles Babbage
  1. “Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program.” – Linus Torvalds
  1. “Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live.” – Martin Golding
  1. “There are two ways of constructing a software design. One way is to make it so simple that there are obviously no deficiencies. And the other way is to make it so complicated that there are no obvious deficiencies.” – C.A.R. Hoare

No CS in this post

November 12, 2018

Winter in Montana.  A 2.2 mile walk in a foot of fresh snow and this at the end.  No people for 4 hours except the friend that hiked with me.  Life is good.

Confusion reigns

October 31, 2018

Sometimes you just have one of those days.  I had my Python class compute some Taylor Series where the input was number of iterations and the x value.  One of the students was working on sin x and was getting really weird results.  We sat there together trying to figure out what was wrong with her algorithm.  We tore it apart and put it back together half a dozen times.  No luck.  Everything was correct except the solution.  The partial sums were not even close.  It was driving me batty.  It was not that hard an algorithm.  OK, maybe Python was computing powers weird so I switched from (-1)^n to pow(-1,n).  It worked.  Thirty seconds later I figured out the carrot (^) does not work in Python.  I knew that.  Yes I did.  But it is correct for the TI-84 calculator.  Too many platforms and I am getting them all mixed up.  I put something on the board the other day, stepped back and thought, “No, wait.  That is Small Basic”.  I am getting my colon and semi-colons mixed up.  Python is colons, C# (Unity) is semi-colons.  Small Basic does not use “Print” to print, “print” is lowercase in Python.  I have three different “For” syntaxs to remember.  I am so glad I am not teaching a Java class.  Must be the early onset of Alzheimer’s.  Well, maybe not so early.

Game Making 101: Keeping it simple

October 23, 2018

I am teaching a game making class this fall.  Nothing fancy, just letting the kids explore Unity and Blender.  Since I have never worked for a game making outfit I cannot really dive into the actual non-coding process that game making entails.  So we have some fun making some simple games following YouTube and printed resources I have. The course really is not about making a game, it is more on how to learn to use a game engine.  In that idea I usually have the kids look at GameMaker to see a different approach to making games. Being less than impressed with GameMaker I am always looking for a better second game engine to include in the course.  I have looked at Unreal Engine (a bit more than I want to bite off right now), Amazon Lumberyard (short on support material and poor ratings) and Cryengine (mediocre ratings). Yesterday I was just looking to see if there was anything else out there of interest when I found Godot Engine.  Good support material on the website, some good YouTube tutorials (this is critical), easy to install, good ratings as a beginner engine and similar enough interface to Unity that some of that knowledge with transfer over. It apparently will publish directly to an Android device which makes it more fun for the kids.  They get to play their game. I am going to give it a try.

This game making class is one of my hardest to grade.  I have students who really enjoy it and spend hours at home getting things to work and I have students that only work in class and even then they tend to wander.  The kids that are really into it obviously produce a better product but the kids that are just surviving do produce. I do not feel right giving the overachievers a better grade, after all, this is their hobby.  So I have to grade on effort which can be a bit tricky. How hard a kid is “trying” is really hard to measure. Part of that “trying” involves how long they can sit in front of a monitor without going buggy. I am good for about 15 minutes (unless I am really getting into it) before before I have to go wander around.  I have a couple of students that can sit there for an hour and a half and be happy as a clam. I have some that are only good for ten minutes before they have to wander mentally and physically. I simply cannot bring myself to grade a kid on how long they can listen to a YouTube tutorial or my lecture before they need to do something to clear their head.  Right now my grading is based on one of my favorite criteria, that ever useful, but a bit undefined, “warm and fuzzy”. Try and you get a decent grade. Do not try and the grade is not so hot. If there is a deadline then how close did you come and how hard did you try to make it? Luckily I have very small classes. I do not think this would work with more than ten students.  Right now my class sizes are five, eight, one and one. Warm and fuzzy works.

State Digital Guideline: Are they worth the electrons they are stored on?

October 17, 2018

This is one of those deals where reading a blog led to reading a document on CS adoption in the US which lead to another document on the Nine Policies and from there reading another document, the “Montana K-12 Digital Literacy and Computer Science Guidelines”.  It was a journey. One of the maps in the CS adoption article had Montana in the 2-3 policies adopted range.  Looking at the nine policies from I knew Montana had a state plan, although the last time I looked it was an antique.  What else we had is a mystery to me. I looked at our state plan and to my surprise it was dated 2018! Wow! Who knew? No CS teachers I know knew.  So how useful is a state plan that nobody that would use it knows about? Well, OK, maybe the few I talked to were just out of the loop. Possible but considering how few CS teachers there are in Montana you would think the Office of Public Instruction would get the word out.  Whatever. So I look at the advisory committee. Twenty-one people on the list. I know several people on the committee but they are not people I would expect to be on a K-12 guideline. They are university CS people, not high school CS people, not even CS Ed people. There is one high school CS teacher on the list and she is from one of the largest schools in the state.   Not really representative of CS in Montana but still a high school person.

Ok, maybe I am getting a bit nit-picky here.  I start looking through the document. It is the usual “Grades 6-8 should know” type thing.  I look through the Grades 9-12. You have got to be kidding me. I do not know half the stuff all high school students should know by graduation.  I would not even have a lot of this stuff on a “perfect world” list.

So how useful is this “Montana K-12 Digital Literacy and Computer Science Guidelines”?  If a school has a dedicated CS teacher with an extensive background in teaching CS and an excellent CS education themselves, if the school offers a multi-year program, if the school invests a lot of time and resources to aligning the curriculum to fit the guidelines then this document is pretty slick.  The trouble is none of those “ifs” fit more than a couple of schools in Montana.

I can imagine this document cost the state a pretty penny.  It checks a box; the state does have a plan. The fact no one that the plan affects really cares about it, that the plan is idealistic and undoable for almost all schools in the state and the people that wrote the plan may be experts in their field but their field is not K-12 CS ed kind of puts a kink in things.  So is “Montana K-12 Digital Literacy and Computer Science Guidelines”, as it is presently written, worth the electrons it is stored on?

Too bad they did not write something a school could actually use as a guide to design a realistic affordable curriculum.  Montana has a lot of schools that are just starting to introduce CS into their curriculum. There are just so many ways a plan like this could be written to make it a useful tool for schools.  Assets needed, professional development requirements, practical ideas or examples for each topic, things a beginning school or teacher can actually look at and go “Ah ha!”. As it is it is space junk.

Lions and tigers and bears, oh my. OK, just bears.

October 8, 2018

A friend and I went hiking Sunday.  I usually do a good sized hike on the weekend.  This was a 10 mike out and back to Illinois Peak in the northern Bitterroots.  We were in maybe two inches of snow near the top.  Weather was great, mid 30’s, maybe low 40’s, not too hot. not too cold.  Did not see any wildlife but lots of tracks.  The usual; grouse, mice, deer, coyote and this.  Probably a really big black bear.  Now I have seen a lot of bear prints where I hike and have had several face-to-face encounters with black bears and one with a grizzly.  No big deal, everybody just goes on their peaceful way.  This one kind of freaked me out.  When we came on the tracks they were fresh, like maybe minutes fresh, snow was still falling into the print fresh.  But no bear.  Ever get that feeling you are being watched?  It added a whole new dimension to that stretch of the trail.  My friend had bear spray, I did not.  I will ensure that does not happen again.

Python and Pygame and PyCharm, oh my!

September 30, 2018

I am teaching Python again this year.  Nothing different there. What is different I have 3 of 9 Python students with previous Python experience.  I cannot do my usual course with them so I thought I would get clever and throw Pygame at them. Now I have tried Pygame previously with mixed results.  It is not Pygame that I had issues with, it is getting Pygame to work at all. Since I am not the sharpest pencil in the box I figured I would try it again.  Opps. Two installs went along with no issues. Now this is on student owned laptops, not identical school lap computers. The third laptop has issues. Pygame runs in the console so it should run in the editor right?  Nope. We use PyCharm as the editor. I used to use PyScripter but it was not being updated and would not work with newer versions of Python. Running Pygame was giving a very ambiguous error that Google was no help with.  I uninstall and reinstall everything. Versions are correct, Pygame is installed and working, Python is working, PyCharm is working but mixing the three is not working. Hmmmm. The only variable I have to work with now is the editor.  I try PyScripter. Everything works. What the heck? What is it about the different computers that is different? Beyond me. That student is going to use PyScripter.

Now I know I could use IDLE and maybe bypass all these editor issues but what fun would that be?  Maybe it is time to have less fun but the trouble is I like the autofill and formatting features the editors give me.  Spoiled.

It is fun things like this that makes even a simple programming class a royal pain.  Time lost by the student, time lost by me troubleshooting the issue, added gray hair wondering what the heck, and of course the humph factor.  (The humpf factor is me being stubborn and not letting the issue go. I what to know why it is doing weird stuff. More time lost.) Handling issues like this does make me laugh a bit.  I think of that poor business teacher that has been informed by the administration they are teaching Python. They are not given a second prep period. Their experience is nil. Their PD is nil.  Their free time after school has just gone to nil. Ouch.

Reading blogs leads to more work

September 27, 2018

So I read Alfred Thompson’s blog on What makes a great high school CS program.  Then on to Mike Zamansky’s continuation of that blog, What CS should we teach in high school.  I have been through this thought process before so no great deal here.  OK, it is a great deal since the underlying questions are important but I have considered these questions before and years ago decided there is no correct answer.  I teach what I teach because of resources: my skill level, the hardware and software available and the students I get in the seats. Then I read Gas station without pumps’ blog on learning outcomes.  Now that I have never really defined.  It has always just been a warm and fuzzy mental list of goals.  Now I am thinking. (Bad, very bad. Not one of my strengths.) I am thinking the first two blog questions are extremely dependent on the decision on learning outcomes.  And if the learning outcomes are laid out nicely the “What” and “What” of the Alfred and Mike blog questions becomes much easier to figure out. I really like how Gas’ outcomes are observable skills and not some conceptual thing that fits in that “warm and fuzzy” category that I like so much.  Now I do have learning outcomes for my courses. Admittedly they are not written down or really well defined. They are things like “can problem solve”, “can locate documentation needed to learn a language” and so on. Not real specific and sometimes a bit broad.

I can tell I have been in the classroom teaching groove a bit too long.  I had not really thought about the idea of learning outcomes as a concrete list in a long time nor have I thought if I am achieving any of my learning outcome with the courses I am teaching or within the courses.  I need to nail down some solid learning outcomes then start looking at my curriculum. Am I actually achieving what I want to do with what I am doing? I am just not sure how far I want to drill down on the outcomes.  I could really care less if students know how to write a program to count all the “s” letters in a phrase from a file. I do want the student to be able to find the resources to learn how to write a program that will find all the “s” letters in that file.  (At one time I was big on finding those s’s. But then I got confused with the “what language” question.)

Now I need a strategy on how to build learning outcomes for my CS courses then my CS curriculum.  Something to do in my idle moments.

Office Space: I need a red stapler

September 5, 2018

I have never had an office in my home for school work.  I have never even had a dedicated desk or table location for grading or whatever.  I do most of that sitting on the couch.  I have a small laptop perched on the arm of the couch that I can do most of anything I need to do.  Anything serious I do at school during prep times.  This scheme has worked for many years.  It is not going to work this year.  Typically, I have three preps; Stats, Alg 2 and a programming class.  The rest of the time is spent with IT work which, if things are running correctly, leaves me lots of time for class prep while at school.  This year I have six preps.  In fact one of the preps, one of the Python classes, I had to split into two separate groups because I have three students in the class are familiar with Python so I have to dream up something other than the usual Intro to Python material.  Not a problem other than it takes time.  I now have to do some serious work at home.  I am redesigning the Stats course so I have to do some writing and planning there.  The Game Making with Unity class is going to be interesting because the text reference I have used for several years no longer matches the version of Unity I am using this year.  I have to work through the book and note the differences or the kids will get majorly lost.  For my regular Python class I typically have students that have some programming background.  This class I have three with no background out of six.  This is a dual-credit course so they may be over their head.  I have one student doing an intro to programming independent study the same time I am teaching the Stats class.  She is turning out to be needier than I was expecting.  I am hoping she will come in during lunch.  Even though it is independent study I do have a lot of planning to set up for her.  If I do not do at home what I used to use my prep periods for the IT side of the job is going to be ugly.  So home office it is.  The wife is not too tickled with the idea since I set up in the living room with a table, an office chair and a dual-monitor setup.  Not exactly living room furniture but it will have to do.

I think this is going to be one of the busiest years I have had in a long time.  I am looking forward to it, should be a challenge and fun.

Aristotle and computer labs

August 16, 2018

I happened to stumble on this website.  It was not the website itself I was interested in but the picture of the computer lab.  It looks like most high school labs. It also looks like a very expensive lab. Nice computers, large monitors, nice big interactive board and a good sized room with space to move.  Is it just me or is this a terrible lab layout? When the teacher is at the front of the room, which looks like the intended location considering that big interactive board, does the teacher have a clue what the kids are doing?  Not just if some kid has lost focus but how can the teacher tell who is struggling? The teacher needs to be in the back of the room or overlooking the monitors for a couple reasons.

  1. See what kids doing on their computers – good or bad.
  2. When the teacher needs to present on the board, the kids have to turn away from their screen and focus on the teacher.  (This is huge.)

Another thing is monitors on top of computers.  To see the teacher, either in the front or back of the room, the kids are going to be trying to find a lane to look down.  Also the teacher cannot see faces, a big thing for me. If I cannot see faces I have no idea who has a clue and who does not.

If this were my room I would try to turn everything by 90 degrees.  Half the lab would face left, half would face right, with an aisle between.  Now to see the front or back of the room the kids would only have to turn 90 degrees.  While the kids were working I could pace the aisle and see every computer screen. Give me a wireless keyboard and mouse and I would be set.

Of course there are some realities involved but seems many teachers are focused on the same seating plan that has been used since Aristotle.  Oh, that reminds me, I need to find a laser pointer. I want to be able to point at something on the board without being at the board. Hot dang!  Laser point in one hand, Gyration mouse in the other. I will be a techie geeky teaching god! Now if I can just find a mini-keyboard/touchpad combo with a laser pointer built in.  Ohhh, ahhh.

Did you notice the slide rule at the base of the right whiteboard?  There is another hanging from the ceiling in one of the other pictures.  Cool. (Geek!!)