Technology & Pedagogy

31 Dec 2009 - The Nature of Intelligence and the Universe

Neurons make new connections during learning.

Students have been known to ask the question, “Why should I study Computer Science?”

One reply correctly advises that there are fascinating and lucrative careers in Computer Science.

A second reply is that Computer Science helps us understand the nature of intelligence and the universe!

Bertrand Russell reminded us that we do not have personal experience with creation or annihilation.

Before we can begin to understand the nature of the universe, we must first understand the tools that we use to understand the universe so that we might distinguish the effects of those tools against subjects that we analyze with those tools. We must understand the effects of the tools on the objects of analysis just as we must understand that the very act of observing the movement of an electron impacts the movement itself. Results of observation themselves become part of what we observe.

We use intelligence to study and think about and model and make sense of the universe, but the very nature of the artefacts of intelligence shape and distort our understanding of the universe. Thus it behoves us understand the nature of understanding so that we might better tease the nature of understanding itself from that which we seek to understand.

Broadly speaking, there are two models of intelligence that we can study. One is the product of 500+ years of biological evolution. For lack of a more familiar term, we use the inaccurate phrase “natural intelligence” as we currently find it in our biosphere, perhaps most famously associated with the human brain. The other model, known by an equally inaccurate term, is the phrase “artificial intelligence”, currently manifested by things that we call “computers”. It is significant and telling that the adjectives “natural” and “artificial” are value laden by the arrogance of a species that finds itself reluctant to imagine that another entity could be more “intelligent” than itself, although by any and every measure this prospect seems virtually inevitable.

Everything that our species is, knows and does is a derivative of “nature” and is thus “natural”, including all “man made” artefacts, be they moon busting rockets or silicon wafered circuitry because, notwithstanding the shame and queasiness inspired by such thoughts, our species is the result of, not independent of, processes that are as “natural” as rivers flowing and stars exploding. We too are products of 500+ million years of evolution. The flip side of this lexiconial coin is that the toys and tools of civilization are no more “artificial” than twigs used by crows to fish grubs from cracks or rocks used by otters to crack open crustaceans.

It is becoming evident that the twenty-first century belongs to two disciplines that study models of intelligence. Brain science is finally teasing the morphology and process of intelligence as it has evolved from eons of random mutation and environmental selection. Computer science continues to engineer the inculcation of algorithms by architectural design (mutation) and design motivated by human vanity and fashion and pecuniary pursuit. Do not be misled by the institutional trappings of these historical arrangements. The investigation of both models focuses upon the holy grail of academia – the nature of intelligence itself. The architectures of wetware and hardware differ significantly, but motivations to identify algorithms of adaptive design are the same. Paradigms and heuristics of these models differ significantly at operational levels of implementation, but ultimately the objectives of reaction and adaptation to environmental variation flow and ebb together. Understanding intelligence itself is the prize.

As the twentieth century came to a close, we found ourselves disappointed by the failure of AI (“artificial intelligence”) to proceed as rapidly as early students of Turing might have predicted. Meanwhile we found ourselves equally disappointed by the failures of the psycho babble of cognitive science to identify empirical referents for so many Platonic shadows, and for neuroscientists to identify anatomical structures corresponding to so many pathological behaviours documented by health professionals.

Now, in the first decade of the twenty-first century, it appears that parallel progress in the twin disciplines that study these two apparently disparate models of intelligence is changing rapidly, indeed, with empirical observations that are beginning to finally point to the correct questions to ask. Indeed, that has been the major obstacle to progress in the understanding of the nature of intelligence. We may not have even been asking the right questions. If we ask how high the building is, we will not learn what the CEO had for lunch. If we study the colour of our children’s eyes, we will not learn how far they can throw a baseball. If we follow Alice down holes of distracting attention displacement, we will never get to the other end.

Brain science has made more progress in the past five years than in its entire prior history. At last we are beginning to map external behaviours to morphological structures. For some time we have known that specific parts of the cortex correspond to specific parts of our body. We have known what part of the brain connects to the thumb and forearm. Five hundred million years of evolution has designed a wiring diagram manifested by our brains. Our brains are genetically pre-wired, but we now know that our brains are exceedingly plastic and that the brains “wiring” is modified and sometimes even over-hauled by life experiences.

Amazingly, the frontier of brain research is now asking very “simple”, empirical questions that may be studied and documented, verified and peer-reviewed! We now want to identify the algorithms, or “computer code” that the brain uses to demonstrate skill movement. We know that the brain can “learn” to direct muscles to contract to shoot a basketball through a hoop! We know that the brain sends electro-biochemical impulses through the spinal chord to muscles. We now know that the brain also simulates skill movements in the brain without sending those impulses. This means that the brain can “practice” shooting basket balls without actually shooting basketballs.

A famous urban legend (probably untrue) reports a “visualization” study said to have been conducted by one Dr. Judd Blaslotto at a University of Chicago physical education class. Three groups of basketball players prepared for a contest consisting of twenty free throws. Group A shot 100 free throws a day for 30 days. Group B practiced “normally”. Group C spent 15 minutes every day visualizing shooting perfect free throws. At the end of the month Groups A and C had essentially the same scores of 24% improvement while Group B lost dramatically. ( I was crushed when I failed to find a respectable source for this story because an entire generation of athletes have been motivated by it.

Nevertheless, some of the top neuroscientists in the world now believe precisely what the mythical Dr. Blaslotto story suggests. My favourite talking head television program, “Charlie Rose”, just broadcast (23 December 2009) the third episode in a remarkable series on the brain. See a summary of the Brain series at: In that episode John Krakauer, Associate Professor of Neurology and Neuroscience at Columbia University, (

( Not Finished ... to be continued later!)


5 Nov 2009 - Why Is Java Now Alberta's "Preferred" Programming Language of Instruction?

Is this a good time for Java?

The decision to use a particular programming language for instruction is enormously important.

I generated the following list of reasons for teaching a preferred programming language. After making the list, I was going to preface it with the caveat, "in no particular order", but I hate cop-outs. I gave my best shot at prioritizing the reasons that have been most important to me. Some or most reasons might be logically subsumed under the first or another reason, but I wanted the list to be explicit. I am not sure that any one reason is either necessary or sufficient in itself.

  1. The language is in the best interests of the student. (Administrators: take note!)
  2. The language is in the best interests of the teacher. (Teachers: take note!)
  3. The language is "fun". (This is really important, but "fun" is more about the learner and less about the language.)
  4. Paradigms supported by the language are broadly generic and transfer well to other knowledge domains. (High school programming is a means to broader ends.)
  5. The language has sufficient depth to support extensive student learning. (A new language should not have to be learned to learn new and worthy paradigms.)
  6. Accessible teacher professional development in the language is available.
  7. Accessible bodies of mutually supportive teaching colleagues are available. (The teacher needs technical support to implement the language in the classroom.)
  8. Accessible bodies of mutually supportive student learners are available. (The power of a peer group is typically greater than parental authority!)
  9. The language optimizes time spent by students in learning the syntax of the language.
  10. The language optimizes time spent by students in learning concepts with the language.
  11. The language optimizes time spent by the teacher (as student) in learning to program with the language.
  12. The language optimizes time spent by the teacher (as teacher) in learning to teach with the language.
  13. A critical mass of learning resources has been identified. (Exotic languages with few learning resources can waste a lot of time on mechanics and syntax.)
  14. Advanced credit is earned at post-secondary institutions.
  15. Advanced standing is recognized at post-secondary institutions.
  16. The language is accepted by computing competitions such as the Canadian Computer Competition, USACO and TopCoder. (Contests motivate big time!)
  17. The language is used extensively in industry. (Many place this sort of relevancy to the "real world" much higher on this list, but it is presumptuous to assert that any language will ensure employment years into the future.)
  18. Costs of textbooks and other supporting resources are affordable.
  19. The language is inexpensive or free to acquire.

There is a broad though by no means unanimous acceptance today that Java is the defacto recommended programming language of instruction used in North America generally and Alberta specifically. Historically, when I consider the languages that I taught with in Calgary high schools, this status has belonged very approximately to BASIC (1978-1984), Pascal (1982-1998), C++ (1995-2003), and Java (2001-present). The years overlap because I would begin a new language with my grade tens while finishing a current language with my grade 11 and 12 students. In the 1980's I also encouraged students to experiment with APL, Fortran and LISP. We had fun with Logo too. In recent years I experimented with Scheme and most recently Alice.

So why is Java now Alberta's "preferred" programming language of instruction in Alberta?

It is "fun" to program in Java! I insist that "fun" is a direct function of the learner, but such attitudes are bolstered or suppressed by artifacts of learning such as hardware (fast, reliable), interface (graphical, intuitive), purpose (utility, entertainment) and degree that others deem it to be "socially redeeming". I can now reveal that my students often told me that did their Java "homework" in other classes because it was more enjoyable. I hasten to admit that such statements will vary by student, that some students preferred poetry, others doing mathematics, yet others playing football. My students preferred programming ... in Java as it happened since 2001.

For many teachers, the most compelling reason at this point in time is that Java is the mandated language of examination for Computer Science curricula of both Advanced Placement and the International Baccalaureate Organization. This single fact has compelling implications and ramifications for teaching high school Computer Science. Foremost for me, it means that teachers from all over North America (AP) and the world (IBO) are addressing learning of content, content that is similar or identical to content that I address with my students.

( Not Finished ... to be continued later!)


25 Oct 2009 - The Deitel Text Is A Standard, Not A Curriculum

Authors: Paul Deitel and Harvey Deitel
Paperback: 1560 pages
Publisher: Prentice Hall; 8 edition (March 27, 2009)
Language: English
ISBN-10: 0136053068
ISBN-13: 978-0136053064

There are two Alberta Education authorized resources for the new Computer Science curriculum: the Deitel text and the Blue Pelican resources.

The reading level of the Deitel text is academic and, for all sorts of historical reasons, most CTS courses have not been treated academically. The Blue Pelican resources service the needs of CTS teachers in Alberta who, within a given academic year, teach courses in a variety of different disciplines. In an age of extreme specialization, Alberta's CTS teachers may and frequently are given assignments that include disciplines as demanding and diverse as Legal Studies, Financial Management and Computer Science. The Blue Pelican resources allow students to learn independently of the expertise and available teacher time per student per discipline.

However, the Deitel text is exemplary in other ways. In my opinion, the Deitel text has a scope and way of thinking that transcends smoothly to post-secondary methodologies, whereas Blue Pelican emphasizes syntax strategies that fall lower in Bloom's taxonomies, for example. I regard the Deitel text as a backbone for a course, a roadmap of where a professional treatment of the subject can take us. A teacher and students can use each Deitel chapter as a car on an intellectual train to carry them forward, but they must fill that car with resources and experiences that best address the background and aspirations of each individual student. That requires a rich reservoir of resources and it assumes a teacher with a commensurate level of expertise. That is why I routinely encourage our teachers to move to the same page. At this point in time we just don't have a community large enough for everybody to run off in all directions. We need teachers actively supporting colleagues throughout the entire province.

Post-secondary institutions in Alberta will recognize Computer Science on par with Physics, Chemistry and Biology for entrance purposes. Jurisdictions and schools that pay attention to Alberta's post-secondary institutions recognize the need to allocate enough time in student timetables so students may learn Computer Science as well as they learn these other esteemed sciences. We need appropriate standards.

We begin with an exemplar treatment of a subject. The Deitel text does fit that bill. The Deitel text assumes that teachers know how to program at the level that they are teach. If we use the Deitel text as a standard to aspire to, then we teachers will do what we must to bring student skills and abilities to that level. That means teaching students how to read an academic textbook. That means coming up with programming examples that bridge the gap between where the student is when they arrive in the classroom and where an exemplary resource would take that student. That means using inspired metaphors to map patterns from students' earlier experiences onto what we are learning in the course. The Deitel text is a standard. It is up to we the teachers to implement that standard.

Sebastian Coe set world records in the marathon during the 1970's and 1980's. His father was his coach. In later years he attributed the lack of knowledge that his father had about what runners should be able to do, to the training objectives that his father kept setting. His father didn't know that you couldn't push an athlete to the times that he pushed his son. Someone forget to tell Coe's father and Coe himself that it couldn't be done ... so he did it.

Until earlier this year I taught in an "academic" school, so it is usually assumed that I only had top academic students. I should invite one of our counsellors to set that record straight some time. I never, not once, turned away a student for academic reasons. Many of my students were "coded", some because they were gifted, and some because they lacked life or academic skills and aptitudes. These are the kids that did my IB Higher Level Computer Science courses. Most "academic" kids did their three sciences and music and just didn't have time for something like Computer Science. I treated every student as an academic the moment they walked into my class, and I was seldom disappointed. I taught only academic students throughout my career, not because that is all that took my courses, but because all students are academic students, and that is how I treated all of my students.

Any teacher that throws the Deitel text at students and tells them to go learn Computer Science on their own will fail both themselves and the students. But a teacher who embraces the Deitel text as the standard to be met, and then brings students along to meet that standard, will give their students a gift of a lifetime. But it takes all the resources and attention that a teacher can muster.

I have been very impressed by the really high calibre of the current generation of teachers that I have met since retiring. They are professional and caring and intelligent and dedicated. But these amazing teachers need time to focus on teaching Computer Science as a distinct discipline instead of teaching it as one of umpteen different strands of one huge pot of disparate disciplines. These teachers are great, truly extraordinary, incredibly talented!! The larger battle now is to give them the opportunity to teach Computer Science as a distinct discipline. Then the Deitel text makes imminent sense. For the teacher fighting to survive with 3 levels of 2 disciplines in a class, they need the Pelican Java resources, because Pelican Java works without a teacher. That is a sad commentary on school staff organization, but it is the reality that was addressed by the Blue Pelican Java resources. Blue Pelican is good ... but it falls short compared to a master teacher delivering resources and inspiration that will draw students into the professional culture of methodology and thought and expertise so richly endowed in Computer Science.

Computer Science is a way of thinking that goes well beyond a collection of end-of-chapter exercises.

18 Oct 2009 - The Computing Cow Contest Year Begins Next Week

USACO 2009-2010 Contest Schedule

An incredibly dedicated fellow named Rob Kolstad ran the USACO (USA Computing Olympiad) for the past couple of decades and, in the process, challenged innumerable secondary students throughout the world to monthly tackle a set of tough but doable computing problems. For many of those students, USACO and other computing contests became a hobby of love that later mushroomed into careers in Computer Science and related professions.

The "USACO cow" is the theme of this contest. Every problem sneaks in some reference to "Farmer John" and one or more of his cows. The problems are quite fun and often humorous.

Students do the USACO competition, usually from home, over the Internet (usually ANY three consecutive hours) over a four-day day weekend running Friday morning to Tuesday morning. They can use any hard copy or electronic resources that they can find, but must document code that is copied from elsewhere. There are three divisions: Bronze, Silver and Gold. Teachers must warn their students that the lowest entry level, the Bronze level, is already very challenging. It is crucial that students first learn the expected file-handling and practice the demo competitions found on USACO web site's USACO Contest Gateway.

One year one of my most talented computing students attempted the CCC (Canadian Computing Competition) without having learned to properly format and submit his solutions in any formal computing contest. Later when I looked at his solutions, I could tell that he did most of them correctly, but he received zero credit because he did not format and submit his solutions as stipulated by the contest rules. The following year he again got most of the solutions correct, but this time he knew the contest expectations for submitting solutions. This time he scored equal eighth/ninth in Canada and joined two other Calgary students, all three of whom scored in the top ten in Canada, for an all expenses paid, week-long excurision to Waterloo to compete in the final stage of the CCC.

I worked with USACO organizer Rob Kolstad for a couple of years at including some really simple problems that rank beginners could tackle. That worked well, but there is only one Rob and very much work to all of this.

My students were most successful after I spent two to three hours of class time doing one or two sample problems. I ensured that they knew how the format and file-handling. I also ensured that they knew how to apply particular wrinkles of the development environment that we used with the contest. For example, do your students know the actual location (directories) of their source code? I always offered bonus marks for participating in the contest, and more for performance. The extra 5% - 10% that could be gained was sometimes enough to push a strong student with a grade in the nineties over the top to getting 100% reported for the course. When students earned these bonus marks, I knew that it took hours of study and application to get those bonus marks, but some students always felt a bit guilty because they (eventually) found the experience itself to be so intrinsically gratifying.

I also offered alternative bonus marks for extended projects and book reports, etc for those students that preferred to pass computing contests.

Please warn all students entering these contests for the first time that the contests are really challenging. I not only prepared my students in class, but reminded them (truthfully) that many of my best students in the past got totally blown away in their first few contests. Like skating and riding a bicycle and swimming, successful computing contestants inevitably fall and rise and fall again and again before figuring out just how to perform well in these contests. If your students are fairly warned, and thus psychologically prepared, then, as is almost inevitable, when they do fall, they will know that is just part of the process, and will muster on. A year later, when they are bugging you for the new schedule because the summer contest hiatus left such a huge hole in their creative lives, they will wonder how indeed they found the first contests so difficult to even get off the ground.

A solution to the toughest of the three Bronze problems usually involves arrays. The other problems can usually be solved without arrays. This will give you some idea of the beginning difficulty level. Typically, only my best one or two students each year got promoted to the Silver level. Seldom, perhaps once every three years, did I have a student that qualified to compete at the Gold level. USACO competition does pit your students against the very best computing students in the entire world.

See below for an example of the format and file-handling that is required. Two integers are found in a file called "", which are read from that file into two variables called "i1" and "i2". (The variables start with the letter "i" because the values are of primitives of type "integer" - the word "integer" starts with the letter "i".) The identification header at the beginning of the file contains a multi-line comment identifying the users "ID" (obtained when registering), the programming language that is used (could be Pascal, C/C++,Java) and the name of the program (TASK = "test"). All input, source code, and output files must contain the name "test" as the root of the file names, thus:,, test.out. The format is simple ... after you have learned it. Warn students to first study some of the sample problems before doing an actual contest.

Sample USACO Contest Format

17 Oct 2009 - How Should We Think About Computing (and other) Competitions?

This blog was originally posted on ComSciGate (my teaching web site) on March 1, 2007 as: Learning To Fall Is Good.

In the winter of 2006/07 I took X-country ski lessons at Canada Olympic Park [COP]. I had X-skiied for years but never learned the correct techniques of doing so.

Each time I went skiing at COP, I witnessed young children, about 4-8 years of age, falling down all over the hill. They would take several strides, fall down, laugh, get back up, take more strides, fall down, laugh ... and seemed to be having the time of their lives. I also noticed older children, about 8-11 years of age, zooming both up and down the hill with significantly more skill than I. They too were laughing and chatting with friends and having a great time. They would still occasionally fall, though less frequently, but when they did they would still laugh, immediately get back up, and continue laughing and chatting and skiing about the hill.

I realized then that COP's X-country skiing youth had learned a very important lesson about life. Falling is part of living. It is in fact fun to fall because if you're not falling, you're probably not living. Nobody is born with the fully realized skill to ski, drive a car or solve challenging computing problems with the aid of a computer programming language. If you're not falling, then you're not growing. It really is that simple.

A truly tragic thing has happened in our society. Somehow many (most) people have come to believe that they should get 80% or 90% or more on every test or they ought not to take the test for fear of "failure". Somehow many (most) people have come to define a low performance as "failure". Somehow many (most) people have come to turn their collective backs on the very process that leads to excellence and great skill. Somehow many (most) people have come to fear falling down.

Throughout my teaching career, I strove give students opportunities to live and grow. I told them this about computer contests. "You will get the opportunity to be challanged so well that maybe, if you are lucky, you will experience an invigorating struggle, significant frustration, and the exuberance of "falling down". If you are lucky, instead of snoozing your way to high performance at a low level of challenge, you will learn the thrill and determined satisfaction that comes from confronting perplexing problems that require ever widening experience and ever deepening resolution and persistance. You will learn to fall down, laugh, get up, and fall down again. You will learn the fun of chanllenge and, in due course, you will experience the high skill of performance."

Always seek to challenge yourself. If you're not falling, then you're not challenged. If you're flying down the hill without hiccups, then its time to find a more challenging hill.

In competition, do not be discouraged when you fall. Instead be thankful that you have experienced a challenge which, by the very nature of falling, will lead to accelerated growth. We grow most when reaching over your head.

The greatest accomplishments are achieved through persistance, the ability to keep going when others throw in the towel. This ability is cultivated by challenging yourself. Mandela sat in an apartheid prison for 27 years waiting for the opportunity to lead South Africans to freedom. Can you survive three hours of difficult problem solving?

Get the lay of the land. Our first objective is to identify the problem. Only then can we set about devising a solution. We get the lay of the land by wandering the land. We jump and fall, rise. run, and fall again, rise again, twist and turn and fall again. With each fall comes a keener and more thorough knowledge of the landscape. Sooner than we expect, we learn the knooks and crannies and hills and vales. Sooner than we would believe, we become intrepid guides identifing solutions where others see only obstacles. We perform at high levels of expertise because ... we have had the benefits and fun of frequently falling down. We have learned the lay ofthe land.

25 Sep 2009 - University Entrance Pathway with 5-credits in each Grade

Many roads lead to Rome. This case study features a middle class urban high school of 1600 students. The school launches a grade ten 5-credit course with script-language programming and a introduction to a programming language such as Visual BASIC or Alice. It then moves at a comfortable pace through Java in grade eleven and challenges students with file-handling, ADTs (Abstract Data Types) and recursion in grade 12.

Successful students in this pathway reach a most respectable level of abstraction with the use of the Java high level computer programming language.

Computer Science 10

I recommend that schools consider using the Alice or Scratch programming languages to introduce their students to programming because these are OOP (Object Oriented Programming) languages. Java programming, which will be used in the grade 11 and grade 12 courses, is also an OOP language and will be more easily understood if fundamental OOP concepts are covered in grade 10.

There are OOP versions of BASIC. Visual BASIC is “Object-Based”, and Visual is object-oriented, but it takes longer to learn OOP in Visual BASIC than it does with Alice or Scratch.

That said, this pathway finds Java beginning in grade 11. Any programming language in grade 10 will make students more ready for programming in any other programming language. Its always a plus to have any programming background. I don’t accept that students have to “unlearn bad habits” from earlier experience. It all helps.

Note that JavaScript looks and feels a lot like Java, although JavaScript is definitely a different language. (Netscape called it “JavaScript” to capitalize on the then growing popularity of Java, or so goes the urban myth.) If we wish to do “Client-Side Scripting” and would like to tie grade 10 material closer to a grade 11 Java course, JavaScript is an interesting "script language" worth considering.

Computer Science 20

This Computer Science 20 course gives students a solid background in programming in Java that exposes students to both procedural and object oriented programming and introduces students to the most ubiquitous structure in programming, the array.

This pathway has already covered an introduction to structure programming in Computer Science 10 with a “first programming language” (BASIC or Alice or Scratch), so this pathway may now legitimately use CSE 2140 (Second Language Programming 1) to introduce basic concepts in a “second programming language”, which is precisely what is happening here.

Computer Science 30

Computer Science 30 draws students into recursion and abstract data types (stacks and queues) and leaves them with excellent depth for a high school program. This is a super grade 12 course that students will well remember for the remainder of their academic career.

5 Sep 2009 - Evolution of An Apple iPhone App - A Study In "Getting It Right".

As I key these strokes, the 5th most popular app on the iPhone is Covert. It converts everything I can think of in my everyday life, and it is elegant, and it is simple to use. The author, John Casasanta, released the video "Convert Design Evolution" to illustrate the evolution of his app Covert rather than give a lengthy description. In seconds John illustrates the evolution of the design of this brilliantly designed app. As you watch it in under a minute, ask yourself how many hours upon hours this "simple" app took to create.

The iPhone revolution is well underway. For those who don't know, the iPhone is not a phone. It is a handheld computer/GPS/camera/cam recorder/jukebox/voice recorder/compass/VCR/level/unit converter/direction finder ... etc. Yes, you can use it as a phone, but honestly, 95% of the time that I use my "iPhone", I am doing something else with it ... reading my gmail, or reading the New York Times, or listening to an audiobook, or watching a movie or television show, or checking the (finally) rising values of my stock portfolio, or checking whether the picture hanging on the wall is level, or converting the value of my Canadian currency against the American dollar. The iPhone is the sort of thing that happens when teams include technicians and artists and people who understand people! But it takes time to develop such a "simple" to use renaissance machine.

Everything on the iPhone is simple and everything works ... consistently. It flows with the rest of your life. But the key to this simplicity is combination of great hardware supporting brilliantly "intuitive" software.

There are a number of magic ingredients that make things "simple" and "effective" and "relevant". It is called focus, the ability to chase the same goal relentlessly without regard to time. Time is the key ingredient ... lots of time, oodles of time, gobs more time than you ever imagine when you begin the task. You start with a plan, the best plan that you can think of, and you build, but there are problems, so you change your plan, and test implementations, and experiment, and give yourself permission to rethink everything when that means that one thing will work better.

This requires all the time you never knew you had. It requires "deferred gratification". It requires sacrifice. It requires giving that task priority over all other tasks. It takes time to excel. Time is the key.

30 Aug 2009 - Integrating Four Computer Science Pathways

A download was added to this blog on 12 September 2009. You may now download a PowerPoint slide show with audio that contains the information in this blog by clicking Implementing the New 2009 Alberta Education Computer Science Curricula.

This blog was revised on 1 September 2009 to recognize that a University Pathway may terminate with either a programming language focus in Computer Science 31 or a broader, eclectic focus in Computer Science 33.

This is a case study of an academic urban school of 2000 students. To the extent possible, the ten principles enunciated below will be implemented. This school offers four Computer Science pathways with a single Computer Science teacher.

  1. University Entrance Pathway: On 19 June 2009 at a meeting at the University of Alberta in Edmonton, the University of Alberta announced, "In the 2010 fall intake, the University of Alberta will treat 5 credits of CTS Advanced level Computer Science courses as a Group C (Math/Sciences) subject and as satisfying an admission requirement to a Bachelor of Science degree equivalent to Biology 30, Chemistry 30, Mathematics 31 and Physics 30." At that same meeting the University of Calgary announced, "The Faculty of Science has indicated support in principle for admission changes that would ensure that Alberta students are treated consistently at both the University of Calgary and the University of Alberta." The University Entrance Pathway may follow either of Computer Science 101-201-202-31 or Computer Science 101-201-202-33.
  2. IB Standard Level Computer Science Pathway: The IB Standard Computer Science syllabus covers the systems life cycle and software development, program construction in Java, computing system fundamentals, a dossier program, and case study involving computer application of a "real life-situation. The fundamentals refer to language translators, computer architecture, computer systems, networked computer systems, data representaion, errors and utility software. Java construction at this level refers to "Arrays, User-defined objects, Objects as data records, Simple selection (if–else), Complex selection (nested if, if with multiple conditions or switch), Loops, Nested loops, User-defined methods, User-defined methods with parameters (the parameters have to be useful and used within the method body), User-defined methods with appropriate return values (primitives or objects), Sorting, Searching, File i/o, Use of additional libraries (such as utilities and graphical libraries), and Use of sentinels or flags." The IB Standard Level Pathway follows Computer Science 101-201-202-33IB.
  3. IB Higher Level Computer Science Pathway: The IB Higher Computer Science syllabus covers everything in the Standard Level plus computer mathematics and logic (number systems and representations and Boolean logic), abstract data structures and algorithms, further system fundamentals (processor configuration, magnetic disk storage, operating systems and utilities, futher network fundamentals and computer/peripheral communication) and file organization. Java topics includes multidimensional arrays, sequential and random access file handling, searching a file, recursion, merging two sorted data structures, polymorphism, inheritance, encapsulation, parsing a text file, implementing a hierarchical composite data structure, linked lists, binary search trees, stacks, queues and hash tables. The IB Higher Level Pathway follows Computer Science 101-201-202-31IB-33IB.
  4. Computer Science Sampler Pathway: This is for the students that want a taste of CTS Computer Science. The Computer Science Sampler Pathway follows Computer Science 101-201-202 with credit in three 3xxx CTS Computer Science courses, or 101-201-302 with credit in one 3xxx CTS Computer Science course and three other 3xxx level CTS courses, or 101-201-202-302 with credit in three 3xxx CTS Computer Science courses and three other 3xxx CTS courses. None of these "Sampler" sequences is a University Entrance Pathway as that requires the student to present five CTS Computer Science 3xxx courses.

Computer Science 101

Computer Science 201

Computer Science 202

Computer Science 31/31-IB

Computer Science 33/33-IB

Computer Science 302

30 Aug 2009 - Principles of Computer Science Pathway Construction

This blog was revised on September 1, 2009 to recognize that a University Pathway may terminate with either a programming language focus in Computer Science 31 or a broader, eclectic focus in Computer Science 33.

The classic debate in the creation of every curriculum is whether to go broad or go deep. The new Alberta Education CTS curriculum has enough scope and depth go either route. Before the demise of Advanced Placement's (AP) higher level Computer Science course, AP went narrow and deep with programming language. The more rigorous International Baccalaureate (IB) Computer Science syllabus is deep with programming language but also broad with a potpourri of non-programming topics. I have taught both syllabi.

After 25 years of teaching secondary Computer Science, 13 years of which I taught both AP and IB Computer Science, I would rather go deep and bring student thought to levels of abstraction that may be transferred to other disciplines and aspects of their lives. High school timetables do not typically provide sufficient time to go deep into many knowledge domains of a discipline. Students see roses but don't have time to take make scents of their experiences. (Pun intended.)

Notwithstanding my personal preferences expressed in the above paragraph, there is ample research in the United States showing that students leaving high school often incorrectly equate a career in Computer Science with computer language programming. The new Alberta Education CTS curriculum offers schools ample courses to delve into a broad cross section of nonprogramming topics in Computer Science. Schools are well advised to consider the needs of their student population. The above blog, "30 Aug 2009 - Integrating Four Computer Science Pathways", illustrates how a University Pathway may be satisfied with either a computer language focus (Computer Science 101-201-202-31) or broader eclectic focus (Computer Science 101-201-202-33).

One posits that broad exposure to the possibilities of a discipline gives students an appreciation of many careers branching from that discipline, but superficial exposure leaves students with superficial impressions. Superficial experience is better than no experience, but deep experience leads to excellence, excellence to pride, pride to ambition, ambition to career fulfillment. A Jack-Of-All-Trades and Master-Of-None is a pathway to mediocrity.

I have to date floated two pathways to colleagues, one in late June and another in late August. Feedback to revealed stubborn facts that my earlier pathways didn't take into account. Reflection and the exercise of writing this blog prompted me to rethink the entire process. I learned a great deal in my career and haven't yet had time to forget it all. Some principles emerge.

  1. The grade 10 course should be a half course offering 3-credits. It is an inspired policy in many (most?) Alberta high schools that grade 10 students are encouraged to sample a variety of CTS "complementary" courses. I have observed that students entering grade 10 "typically" are far less mature than students entering grade 11. Computer Science, not unlike the sciences of Biology, Physics and Chemistry, is a demanding academic discipline.
  2. The grade 10 course should be a fun course. This is a great opportunity to hook students with some exciting, fun learning environments. Alice and Scratch and Lego MindStorms were designed to excite students while delivering conceptually meaningful experiences. The halo effect of a positive first exposure can last an entire lifetime. This is the way to properly introduce students to Computer Science.
  3. Exceptionally mature grade 10 students should be allowed to move immediately to a grade 11 academic pathway. I always had several such students each year. I worked with amazingly sensitive, intelligent, well-informed counsellors. Our school had its "rules", but we didn't hesitate to invoke the most important rule. The best interests of the student comes first.
  4. There should be a strong, academic pathway in grades 11 and 12. Post-secondary institutions throughout Alberta are moving rapidly this year to place Computer Science on par with Physics, Biology and Chemistry for university entrance. This is a fait accomplait at the University of Alberta. We anticipate that the University of Calgary will implement a similar policy very soon. AP and IB Computer Science curricula gave students powerful paradigms and life-changing experiences that compare favourably with traditional secondary science curricula. in September, 2009, Alberta Education rolls out one of the most ambitious secondary Computer Science curricula in the world. Alberta's students deserve no less in their classrooms. Years of experience with AP and IB Computer Science curricula informs us well as to what a successful academic secondary Computer Science curriculum looks like. The Alberta Education CTS Computer Science curriculum supports the best that we can ask.

  5. There should be a less time-demanding pathway in grades 11 and 12. Some students will opt to take the other three sciences, or will focus their time on music or athletics or a trade. Such students will benefit from a yearly 3-credit Computer Science course. These students will not use their Computer Science for post-secondary entrance.
  6. A pathway should follow the sequence of an excellent textbook. Electronic media will compete for this distinction in the future. I have been intimately involved with curricula development locally, provincially and internationally for three decades. I will tell you a secret. The best curriculum sequence flows from a textbook. This is because the sequence of an excellent textbook has been honed and modified and updated over years from student and educator feedback. With a sequentially dependent subject such as computer programming, it is essential that prerequisite concepts and facts and techniques be covered in a pedagogically meaningful sequence. A good textbook is the backbone of a well planned course. It allows the teacher to fly off in all directions, grabbing all manner of supplementary resources.
  7. The pace of learning should be challenging but comfortable. This is where the rubber hits the road. Only by trial and error does a teacher discover that magic pace which is challenging enough to retain a student's interest but slow enough to leave time to cope with performance frustrations when, invariably, things do not to according to plan. There is a healthy, constructive tension between challenge and frustration, between excitement and boredom. This is where experience comes in. An ideal pace depends upon some magic chemistry of interaction between the ability and enthusiasm and work ethic of the student combined with the quality and accessibility of resources combined with the expertise and experience and enthusiasm of the teacher.
  8. Multiple pathways should overlap to minimize the multiplicity of preparations being simultaneously implemented. We decry speaking on a cell phone while driving. Yet it is customary to timetable multiple, different CTS courses against a single teacher into the same time slot. This crippling of teacher performance leads to student frustration and malaise as students spin their wheels while their teacher addresses the needs of other students taking other courses. This damage can be mitigated by creating different pathways that sufficiently overlap such to minimize the number of different preparations being simultaneously implemented.
  9. A pathway should maximize hands-on implementation of abstract concepts and processes. We must remember that (almost) all science includes lab work - a lot of lab work. Programming is the laboratory of Computer Science. This is where design may be tested, where we pit the abstractions of theory against the crucible of empirical reality. Regardless of how elegant the blueprint, the algorithm must "fly" in some sort of OS to gain confidence and respectability. Programming is where we see the "science" of Computer Science in full flight.

  10. A pathway should incorporate and terminate with a comprehensive, demanding project. The IB Dossier Project is one of the most demanding secondary school assignments in the world. Time and again alumni students have told me that it was the single most worthwhile experience of their high school career. It is a large, time-consuming, resource demanding project where students generate a gestalt of their experience. It is here that they discover the challenge and reward of integrating all that they have learned. The planning, implementation, integration, testing, documentation and publication of a worthy project is something that a student will remember and cherish the rest of their lives. It is a rare opportunity in our current twittering, texting, shoot first - ask questions later 21st century culture. A "worthy project" is a project that the student has personally chosen.

28 Aug 2009 - Non-Authorized 8th Edition Textbook: Current Edition

This blog was revised on September 9, 2009 to provide details concerning services of Universal Bindery (Sask) Ltd.

This blog was revised on October 2, 2009 to indicate that Pearson Education will create customized versions of this textbook.

Authors: Paul Deitel and Harvey Deitel
Paperback: 1560 pages
Publisher: Prentice Hall; 8 edition (March 27, 2009)
Language: English
ISBN-10: 0136053068
ISBN-13: 978-0136053064
Product Dimensions: 9.1 x 6.9 x 1.9 inches

On 4 August 2009 I purchased a new copy of this text from "NW Book Sales" through for $ 116.49 after shipping and tax.

I get books like this at significantly discounted prices at and purchasing from their associated vendors under "New and Used". Invariably I find a new copy at 20% - 30% less than the price.

I recommend that schools adopt Deitel's Java How To Program 8th Edition.

The Alberta Education vetting process for textbooks is incredibly thorough. After a resource is recommended because it correlates highly with the curriculum's content, it is then further reviewed for appropriate grammar, reading level, and political correctness. I personally observed this process in 2008 and was extremely impressed with the care and professional standards.

At the time that Alberta Education reviewed textbooks submitted by publishers for the new CTS Computer Science curriculum, the Deitel JAVA HOW TO PROGRAM 7th Edition was the single best match with the curriculum of all resources submitted by publishers to Alberta Education.

However, the wheels of bureaucracy have not kept pace with the world of publishing. There is a new edition, the 8th edition, of the Deitel JAVA HOW TO PROGRAM textbook. I have personally purchased and reviewed it thoroughly and was very pleased with the reorganization and addition of material. Given the choice, I definitely recommend the 8th Edition over the 7th Edition.

At $116.49 per text, a class set of 30 texts costs $3,500. That's a lot of money. Anticipate paying $4,000. Furthermore, this text comes bound in a soft cover! What to do??

Hold on! There is enough material in this book to cover four full courses!! Why not split the books into different volumes? The books belong to the school. The school can physically do what it wants with them. The school can shred them, or freeze them, or chop them into chunks!

A good bindery can "recover" each "chunk" of such a book with a hard cover that will last forever! My administrations were invariably shocked at the high cost of a comprehensive Computer Science programming text book. Hmm. What to do?

Decide on which chapters you want to teach in each course, then rip away! This text will cover all of the content of all of Alberta Education's CTS Computer Science computer programming courses, enough for six or seven 3-credit courses. I retired as a contract high school computer science teacher earlier this year. If I were still teaching, I would rebind this text into three volumes.

  1. Volume I - Modules and Control Statements - Chapters 1-6 for a first half course in grade 11. I have taught this course by covering arrays and not covering arrays. When I tried to cover arrays, I was always rushed at the end and frustrated 2/3 of my class. I recommend leaving arrays for the next course. Modules refer to methods and objects, by the way.

  2. Volume II - Object Oriented Programming (or OOP) - Chapters 7-11 plus chapter 16 on String Handling. There is a bit more in this volume than the first volume, but these students have the experience of the first course under their belt and are "in the groove". If the class moves rapidly, there is a wealth of other topics and freely available resources that may be fruitfully covered here.

  3. Volume III - Dynamic Data Structures - Chapters 12-end of text. This grade 12 course will be (should be, in my opinion) a full course. Also, attrition generally takes it toll leaving significantly fewer students taking this advanced course. For IB Higher Level Computer Science courses, this single, large volume will be the primary Java programming language resource for both full courses running September through May.

One bindery that has provided satisfactory services in the past is:

Universal Bindery (Sask) Ltd.
516 A Duchess Street
Saskatoon, SK S7K 0R1
voice: 1-306-652-8313
fax: 1-306-244-2994.

On 9 September 2009 Donna Leier of Universal Bindery told me the following.

>> Universal Bindery has a standard layout for stamping textbooks on the spine.
>> Universal Bindery stamps a Volume Number and Name on a Volume.
>> You specify the colours ahead of time.
>> Cost: $8.44 / volume under 100 volumes; $8.22 / volume over 100 volumes.
>> Negotiate to get Universal to pay return shipping after the binding is done.
>> Actual Shipping Costs depend on Postal Code. Estimate about $20 /10 lbs.

Reasonable shipping rates for books have (in the past) been obtained at: Tiger Courier Inc.

Update October 2, 2009: See Pearson Education's offer to customize this text.

But hey, won't two of the three volumes be missing a Table of Contents? The authors themselves provide a freely available for downloading copy of the Table of Contents [pdf].

Caveat Emptor! I have no vested interest in the fortunes of, Universal Bindery (Sask) Ltd. or Tiger Courier Inc. I am personally aware of these resources. I recommend checking them out based on knowledge of past performance. But Buyer Beware! Past performance warrants consideration but not prediction of future performance.

28 Aug 2009 - Alberta Education's Authorized 7th Edition Textbook: published 2006

Authors: Paul Deitel and Harvey Deitel
Paperback: 1500 pages
Publisher: Prentice Hall; 7 edition (January 6, 2007)
Language: English
ISBN-10: 0132222205
ISBN-13: 978-0132222204
Product Dimensions: 9 x 6.8 x 2.2 inches

The Alberta Education Learning Resources Centre lists this text at $ 128.20.

The Alberta Education Learning Resources Centre lists Deitel's Java How To Program 7th Edition as an authorized textbook for CTS Computer Science courses. It is an excellent textbook. However, it is an earlier edition.

Note, incidentally, that though the publisher lists the publication date as 2007, it was in fact available in the fall of 2006. Placing an advanced publication date on a textbook is a marketing gimmick.

I recommend that schools adopt the current (8th) edition. (See above.)

24 Aug 2009 - ComSci High Facebook Group Created

I created a Facebook group today called ComSci High. This group is for anyone who wants to learn and communicate about the teaching and learning of secondary Computer Science in Alberta. The "secondary" level includes grades 7-12.

I made this a closed group because I wanted to restrict membership to those who really do have some sort of interest in secondary Computer Science education in Alberta. That includes teachers, students, administrators, post-secondary faculty and others.

Just send an email to me if you wish to join the group, and I will send you an invitation. "Gerry Donaldson" <>

22 Aug 2009 - Apple's iPhone Is A Misnomer

In July I decided that I wanted a phone that would let me surf the Internet. I own RIM stock and I am a huge fan of the Blackberry, so I assumed that I would just buy a Blackberry. Also, I read that texting with a Blackberry is faster than with the iPhone, not that I do much texting. The decision seemed a "slam dunk". But ....

I like to research important ideas. I started googling and reading and ... was astonished.

Apparently the iPhone did more than just phone and text and surf the net. It seemed ... somehow ... to do most of what my home computer does most of the time.

Ah, thought I, hardware is one thing, but you need software to make a computer work. Wow, I couldn't believe all of the applications ("apps") ... but this was Apple, and Apple everything has always been pricey, but I thought I'd check out the iPhone apps.

There are thousands of FREE apps, and most of the rest are 99¢, although some do rise to the dizzying heights or $4 or $5!! For free I can listen to the CBC news and special programs, read current articles from the New York Times, listen to the latest and greatest TED talk, record an hour long lecture, use the GPS to give me directions on how to get from "here" to my destination, compare the temperatures in multiple locations in the world, view photos, watch movies that I recorded, retrieve the local times locations of theatres showing any movie that is available, take reasonably good photos, etc, etc, et cetera!!

I bought an Apple iPhone 3GS. 3G stands for "third generation" and the S stands for "speed", and boy, were they right!

But to call the iPhone a "phone" is like calling the Starship Enterprise a domicile.

The iPhone is really a powerful toolbox of computer and GPS and camera and video recorder and voice recorder and web browser and newspaper and radio and calculator and jukebox and encyclopedia and ... oh, yes ... you can also use the iPhone ... as a phone! Apple's iPhone Is A Misnomer.

I opted for the iPhone 3GS and am thrilled that I did so. Then I had to choose a provider. In Calgary there is really only one provider of GMS phones where you can use a SIM card, but their phones are usually "locked" in an effort to prevent customers from using them with another provider when abroad, thus forcing you to pay roaming charges. Of course, you can get your phone "unlocked", so their efforts just create an inconvenience. The one provider in Calgary is Rogers at However, Rogers owns another company called Fido at Fido looks like a separate company but really uses the Rogers network, so you can buy the same services from Fido that is offered by Rogers. The main difference is that cell phone services cost less with Fido. (Go figure ... isn't capitalism wonderful!)

GSM (Global System for Mobile communications: originally from Groupe Spécial Mobile) is the most popular protocol in the world outside of North America, but most cell phones in North America, including Canada, use CDMA (Code Division Multiple Access) . In brief, India and Europe did it right and North America did it wrong when it comes to cell phones. GMS is now becoming popular in North America. You may or actually use your European or Indian cell phone in Canada!

21 Aug 2009 - WorldSkills Calgary 2009 September 1-7

WorldSkills Calgary 2009 pits top post-secondary students from around the world against each other in "skilled trades and technologies training."

This year the WorldSkills biannual competition will be held at the Calgary Stampede grounds. The competitions themselves run September 2-5, 2009, involving 900 competitors from 51 member countries/regions competing in 45 skill categories. Over 150,000 students and other spectators will attend the competitions. The Opening Ceremonies (September 1) and Closing Ceremonies (September 6) bracket the competitions.

Skill categories related to Computer Science that will be tested are grouped as "Information & Communication Technology". They include Information Network Cabling, IT/ Software Applications, Offset Printing, Web Design, and IT PC/Network Support.

The Calgary Board of Education revised their traditional school calendar to accommodate WorldSkills 2009. The first day for students on the Traditional Calendar will be Thursday, August 27th, 2009. There is no change to schools on the Modified Calendar.

A corresponding change is that the three Teacher-in days begin on Monday, August 24th, 2009. Three “payback days” over the course of the school year result in the following school holidays.

  1. Tuesday, October 13, 2009 (classes resume October 14);
  2. Monday, January 4, 2010 (classes resume on January 5); and
  3. Tuesday, April 6, 2010 (classes resume on April 7).

17 Aug 2009 - ComSciHigh Google Calendar

The ComSciHigh Google Calendar will post events that you can superimpose on your personal Google Calendar.

You need a personal Google calendar to use the ComSciHigh Google Calendar.

If you don't have a personal Google calendar, create one by going here.

If you already have a personal Google Calendar, do this:

  1. Sign into your gmail account.
  2. Click "Calendar to enter your Google Calendar.
  3. Under "Other Calendars", click the "Add" button and choose "Add a friend's calendar"
  4. For the "Contact Email" address, type ""
  5. Click the "Add" button.
  6. Click "Back to Calendar"
  7. Under "Other Calendars" you will see ""
  8. You may choose different colors for items on this "other calendar" form the drop down menu button to its right.
  9. You may toggle the superimposition of the menu anytime by clicking on its name under "Other Calendars"


After placing the ComSciHigh Google calendar in your "Other Calendars" list, check out May 2010 to see a very busy month when containing all of the AP and IB exams as well as Alberta's own Iverson Exam.

12 Aug 2009 - Cordless Phone Receives Cell Calls!

We decided to replace the cordless phones in our house. The old ones did double duty for landline and Skype, but needed to be connected via USB to a computer all the time for Skype to work, which meant that a computer had to be on all the time. There are other Skype phones these days that connect directly to a router, so we decided to get one of those if the need arises, but Skype is so good at video conferencing that we decided that we would usually prefer a computer or notebook.

So I updated my criteria for a cordless phone.

  1. I wanted to get a DECT 6.0 phone because it runs on 1.9 GHz which is "reserved exclusively for voice communication applications and therefore are less likely to experience interference from other wireless devices such as baby monitors and wireless networks." (Source: Wikipedia)
  2. I also discovered that they now have cordless phones that connect with your cell phone via Bluetooth so that the cordless phones receive calls to your land phone and/or multiple cell phones.
  3. I still wanted the standard features: voice mail, caller id, call waiting/holding, call forwarding and digital answering system.

In August 2009 I only found one such phone in Canada, the Vtech DECT 6.0 LS6245 phone system and Vtech LS6204 accessory handsets.

I bought them. I turned on the Bluetooth in both my iPhone 3GS and my wife's Motorola Razr V3 cell phone and the Vtech LS6245 recognized both! Voilà! Now when someone phones our land phone or either cell phone, our cordless phones ring. Furthermore, the ring is different, depending on which phone is being called. No more running room-to-room for that cell phone.

11 Aug 2009 - Online Java Course - Teachers Welcomed

This course introduces object-oriented software development using Java. Basic programming elements such as classes, objects, methods, flow-control, data types, and standard class libraries are covered. This course is part of the Java Development Certificate of Achievement.

Prerequisites: CMPP 205 - Intro to Programming in C or Alberta Teacher

Sep 01, 2009 - Oct 26, 2009
Location: Study at home
eCampus Paced 51471
Fees: $695.00
Duration: 8 Weeks | 42 Hours

The prerequisite will be waived for any Alberta teacher by contacting:
Adam Romano
Coordinator Continuing and Distance Education
School of Information and Communications Technologies
P: 403.284.8801 C: 403.620.7577