I've been writing about technology in education since 2006. I include entries below about Linux, Computer Science, Personal Notes, Mindfulness, and Educational Technology. My writing is generally informal and I write for an audience of my peers and friends. My writings started as a blog and now I hope they serve as resource and conversation starters on interesting topics.

Updated November 2022: Recent writing emerges!

Filter by type:

Sort by year:

The future of high school computing

Computer Science Teaching Diary Writing published on Tuesday, May 16, 2023 (3 weeks, one day, and 19 hours ago)

In the 2020 computing Curricula recommendation, The ACM writes: Within the broad scope of computing there are five disciplines:

  • Computer Engineering (CE)
  • Computer Science (CS)
  • Information Systems (IS)
  • Information Technology (IT)
  • Software Engineering (SE)

Please read these PDF's to better understand and appreciate this distinction.

Please appreciate how these disciplines are distinct and how they are related.

Like many organisations and companies, high school computing is often confused about software engineering / computer science. These domains and terms are used interchangeably and without regard to important distinctions. Universities even, who offer "computer science" instead teach something else. The problem then, becomes one of incorrect focus and a unnecessarily muddled journeyIB computer science is a bit more like software engineering, whilst the AQA computer science is more like pure computer science... into computing. Yes - there is overlap in these disciplines; but these tracks help students by clarifying trajectory.

In many schools, students learn how to program (software engineering), maybe some robotics (computer engineering) and perhaps something like abstract data structures as they learn to code (computer science). Under all of this, they are taught "computers", "technology", or maybe "computer science".

Two tracks within high school computing

Track 1: Software Engineering

The reason this nuance is important is because within the domain of software engineering (solving problems through programming) large language models have created incredible opportunity. Students need to learn the basics of coding; the basic vocabulary and syntax of flow control, variables, and control structures, and data structures. But in terms of solving problems, they should use LLM's to help and support them to create solutions to solve problems. This should be a track we design and create for high school students. High school computing should think about software engineering as basic programming / computational thinking and the wise use of LLMs.

Track 2: Computer Science

The second track should be computer science. Classic, meat-and-potatoes computer science; theoretical data structures, higher-level maths, and theories of computing. Principal areas of study within Computer Science include artificial intelligence, computer systems and networks, security, database systems, human-computer interaction, vision and graphics, numerical analysis, programming languages, software engineering, bioinformatics and theory of computing.

I believe these tracks are where the general world of computing is heading; who knows where we will be in 5 or 10 years... creating solutions using LLM's will make it easier for organisations to solve problems. There is a need for tomorrow's problem solvers to use the tools we have today to solve problems. There is also a need for the next generation of computer scientists to create the next exceptional tools.

Project management tools

Blogging Personal Teaching Diary Writing published on Monday, April 10, 2023 (about one month, 4 weeks, and 20 hours ago)

The best advice I've heard about project management tools is they should help you manage your projects, and stay out of the way for everything else. I'm sure there is some witty corollary here...That is, the extent to which a project management system is useful is directly linked to how well it does that one job it should do.

I investigated several project management tools, first opting for locally hosted, open-source projects (my preferred solutions for most problems). I got open project working, but the UI felt sludgy / kludgy. I then joined monday.com and love the UI / ease-of-use but their pricing model doesn't accommodate 1 single user. There is a minimum for three person teams - which is expensive.

I settled on Trello. Which has everything I want and a pricing model I like.

My project management plan for my sabbatical is on Trello.

Customers will only buy your product if they believe that the value they’re receiving is greater than the price they’re paying; otherwise, why would they pay?

Warren Buffett

Sabbatical planning

Blogging Teaching Diary Writing published on Monday, April 03, 2023 (2 months, 5 days, and 13 hours ago)

Next year (school year 2023 - 2024) I will taking a sabbatical (proposal here). 14 years at my current school (American School of Warsaw), 22 years in education = time for some reflection and a recharge. Many of the technical skills I use and teach every day I first learned more than 20 years ago. Technical languages, software development practices, and development tooling has changed quite a bit in the last 20 years! With the rise of large language models and their ilk, it looks like the next 20 years will be even more interesting. I don't think the practice of teaching has changed as rapidly as technology but it also has benefited from years of researchI wonder how much has changed about imparting knoweldge, skills, and lessons in the last 20 years....

Other than technical upskill / refresh I am also looking for some time for deep reflection. I am a fan of a book by Daniel Kahneman, Thinking Fast & Slow. Taking the time to consider and thoughtfully and deliberately act is wise. I still feel quite full of motivation, ambition and drive. But at 53 years old, I'd like to move deliberately and maximize meaningful impact.

By three methods we may learn wisdom: First, by reflection, which is noblest; Second, by imitation, which is easiest; and third by experience, which is the bitterest.

Confucius

A mostly terrible time

Blogging Writing published on Sunday, March 26, 2023 (2 months, one week, and 5 days ago)

Being a parent brings the greatest joys and deepest pain. Recently our teenager has been struggling with things many teenagers struggle with On a good day being a teenager is hard... and it's just painful to see someone you love struggle. At the same time I appreciate and value struggle; some things you just need to learn the hard way. I suppose at that moment, just showing up and loving you kid is the best you can do. My instinct is to protect, prevent, and cover my daughter from pain and painful experiences. But in that difficulty arises strength and courage; and it is something each of us must find ourselves.

If your goal is to avoid pain and escape suffering, I would not advise you to seek higher levels of consciousness or spiritual evolution. First, you cannot achieve them without suffering, and second, insofar as you do achieve them, you are likely to be called on to serve in ways more painful to you, or at least demanding of you, than you can now imagine. Then why desire to evolve at all, you may ask. If you ask this question, perhaps you do not know enough of joy.

M. Scott Peck

Regular Update

Update published on Sunday, March 12, 2023 (2 months, 3 weeks, and 6 days ago)

  • Laravel - I'm writing a crm-type-app for small business folksThis is really about learning Laravel and that ecosystem.
  • Wargaming for better decision making - I'm finding a group
  • I moved all web stuff to a dedicated web server, sill loving Linode pretty hard
  • Getting sabbatical plans finalized
  • Changed CSS of my site using Edward tufte-inspired CSS. That man is one of my heroes.
  • Grading and marking papers - my students hand-write most of their stuff, and it takes a long time to process this
  • Secret Projects A, B and C
  • Helping mom get organized to move to a new place
  • Desigining a "tank-identification party" with my friends

Success usually comes to those who are too busy to be looking for it.

Henry David Thoreau

on postfix…

Blogging Personal published on Friday, February 24, 2023 (3 months, one week, and 5 days ago)

I've been wrestling with postifx, MX records, DMARC and other such nonsense lately. Oh, the pull to simply pay someone to do the work for me is great! However I am determined to setup a dedicated email server for all my various domains. This learning is not easy and requires effort. I meet failure often, in fact we are becoming rather good friends over this whole thing.You know, THAT kind of friend.

However, in each unsuccessful attempt I learn something new, and my goal of owning the system remains clear. I really understand how main.cf works, I really see how messages are routed. I learn the guts of /var/log/mail.log I'm learning, and if you don't mind me saying, I love it. 

The English language . . . becomes ugly and inaccurate because our thoughts are foolish, but the slovenliness of our language makes it easier for us to have foolish thoughts.

George Orwell, “Politics and the English Language”

The faltering

Writing published on Monday, February 20, 2023 (about 3 months, 2 weeks, and 3 days ago)

Being brave and being brave. Doing the right thing. The whole nonsense of "the greater good" for the greater good - which, to be honest, is for the greater good.  A sisyphean task; should we surrender to the wants of others or live in the self-centeredness of our own ego?

The answer lay in the wise words of Ken Wilber I think he's wise. who posited the truth of things is in both the ascendent and the descendant. That is; to shun the descendent in the name of godly virtue is an error. But also, to practice gaia Sex Magik without abandon is also an error. That balance seems a prescription best filled regularly.

Dedicated servers for dedicated things

News published on Saturday, February 18, 2023 (about 3 months, 2 weeks, and 5 days ago)

I run a web server and an email server (MTA, MUA and MSA) on one virtual machine. I have learned this is probably a mistake. I'm slowly changing my setup so I have one server do one thing; an email server should just do email. A web server should just do web stuff. The problem is the more services running on a server, there seems to be a disproportionate rise in complexity when an issue emerges. I would imagine for an experienced and seasoned system administrator, this is obvious. But I am learning, and curious, and always exploring things. Today that's what I've learned. 

Entity-Component-System 〈ECS〉

Computer Science Teaching Diary published on Thursday, February 02, 2023 (4 months, 4 days, and 14 minutes ago)

I've learned about the Entity-Component-System (ECS)


Obligatory chatGPT / wikipedia definition: ECS is a pattern for game development that provides a way to organize and structure game logic. It is a way of designing games that separates the data (components) and behavior (systems) of entities.

In an ECS, entities are objects in the game, such as characters or enemies. Components are data structures that define the properties and attributes of an entity, such as its position, health, or sprite. Systems are responsible for updating and manipulating the components of entities.

The separation of data and behavior in an ECS allows for more flexible and modular game development, as it is easier to add or change components and systems without affecting the rest of the code. It also allows for better performance and scalability, as systems can be optimized for processing specific types of components.

Overall, the ECS pattern provides a clean and efficient way to structure game logic, making it a popular choice for game development, especially for large and complex games.

Entity Component System (ECS) is a software architectural pattern mostly used in video game development for the representation of game world objects. An ECS comprises entities composed from components of data, with systems which operate on entities' components.

ECS follows the principle of composition over inheritance, meaning that every entity is defined not by a type hierarchy, but by the components that are associated with it. Systems act globally over all entities which have the required components.


Entity: An entity represents a general-purpose object. In a game engine context, for example, every coarse game object is represented as an entity. Usually, it only consists of a unique id. Implementations typically use a plain integer for this.

Component: A component labels an entity as possessing a particular aspect, and holds the data needed to model that aspect. For example, every game object that can take damage might have a Health component associated with its entity. Implementations typically use structs, classes, or associative arrays.

System: A system is a process which acts on all entities with the desired components. For example, a physics system may query for entities having mass, velocity and position components, and iterate over the results doing physics calculations on the sets of components for each entity.

The behavior of an entity can be changed at runtime by systems that add, remove or modify components. This eliminates the ambiguity problems of deep and wide inheritance hierarchies often found in Object Oriented Programming techniques that are difficult to understand, maintain, and extend. Common ECS approaches are highly compatible with, and are often combined with, data-oriented design techniques. Data for all instances of a component are commonly stored together in physical memory, enabling efficient memory access for systems which operate over many entities.


Need a procedurally generated country?

Computer Science Teaching Diary published on Sunday, January 29, 2023 (4 months, one week, and one day ago)

Not much sure how much better you could do than this: 

https://github.com/bmackenty/s...

DEIJ - part one

Personal published on Wednesday, January 25, 2023 (4 months, one week, and 5 days ago)

Obligatory chatGPT reference: 

Diversity refers to the variety of differences among individuals within a group or population. This can include differences in race, ethnicity, gender, sexual orientation, socioeconomic status, age, physical abilities, religious beliefs, political beliefs, or other ideologies. Diversity can also include differences in personal experiences, values, and perspectives. The goal of diversity is to create an inclusive environment that recognizes, respects, and leverages these differences to create a more equitable and equitable society.

Within this lay extraordinary scope. I've always thought to measure & evaluate each person equally, irregardless of their gender, sexuxal orientation, race, SES, age, etc... The truth is I've met truly beautiful human beings from every corner of life, and the obverse is also true. 

I believe to know someone, that is, who someone is takes time. That careful measure and often conversation and time are required to know someone. That the enemy of truth is haste. That a glimpse does give us perspective. That when I rush to judgement, when I hurry to act I often err. This is why the slow work movement appeals to me so; as a seeker of truth, it takes time.

There can be parts of someone I love and parts I don't care for. That nuance, discernment and careful thinking can find a person.

What could be more diverse than all of us?

Current thinking about chatGPT

Computer Science Teaching Diary published on Sunday, January 22, 2023 (4 months, 2 weeks, and one day ago)

  1. Ensure students understand the technical boundaries
  2. Teach students to ask precise questions (with follow-up questions if necessary)
  3. Teach students to evaluate answers

  4. As teachers we should encourage students to ask all questions via a text interface (so we can capture questions) and fine-tune the model to reply. The goal is to have a "reasonably good" assistant that can support students as they work through content required by the syllabus. The input for questions should be textual / copy-paste / and spoken word. 

Writing a report card comment generator

Computer Science Teaching Diary published on Friday, January 20, 2023 (4 months, 2 weeks, and 3 days ago)

I wrote a report card generator. The GitHub repo is here. It's version 0.1 but I used it and it saved me some time. There are many things to add and edit, but perfection is the enemy of good (I'm not sure I got that quote right). 

I'm hoping to eventually offer it as a web service for students and parents to use so we can co-create a story about student learning. 

Multiple versions of PHP on the same web server

Linux Personal published on Wednesday, January 18, 2023 (4 months, 2 weeks, and 5 days ago)

For better or worse I administer my own web server / web-services. I actually quite enjoy this, but I'm not a professional, which means sometimes I learn things the hard way, and sometimes I make mistakes. I recently installed an invoicing system, which needed PHP 8.1+. Most of my web applications run on 7.4, specifically mediawiki. I would prefer it if everything was on 8.1 and I'm slowly getting there. 

I learned about a nifty new tech PHP-FPM, which enables (among other things) multiple versions of PHP on a per-site basis. Which is cool. The end goal is to (of course) use only one version of PHP but for now I am enjoying the tinkering. 

#dungeon23

Personal Twitter published on Sunday, January 08, 2023 (4 months, 4 weeks, and one day ago)

As I am a fan of procedurally generated content (and making procedurally generated content), I've decided to build different systems and eventually combine them so people can have rich, varied and different dungeons and settings. The link to the github repository is here. I'm following a basic schedule here:

• Sunday — Settlement description, a village or a town. Could also be a bandit camp if that strikes your fancy

• Monday — Environment description. Think the local weather, geology, flora and fauna

• Tuesday — More in-depth settlement description

• Wednesday — Culture description of something fun or interesting about the local people. Something to make them stand out

• Thursday — NPC description, someone important or interesting on the island

• Friday — Faction description of either a new or existing faction. Be sure to make ties between factions and peoples

• Saturday — A rumour about something from the past week

Mastering uncertainty: A predictive processing

Games in education Practical Advice published on Friday, January 06, 2023 (5 months, 21 hours, and 33 minutes ago)

Yet, current models struggle to explain why such balanced challenges best afford these experiences and do not straightforwardly account for the appeal of high- and low-challenge game genres like Idle and Soulslike games. In this article, we show that Predictive Processing (PP) provides a coherent formal cognitive framework which can explain the fun in tackling game challenges with uncertain success as the dynamic process of reducing uncertainty surprisingly efficiently. In gameplay as elsewhere, people enjoy doing better than expected, which can track learning progress. In different forms, balanced, Idle, and Soulslike games alike afford regular accelerations of uncertainty reduction. We argue that this model also aligns with a popular practitioner model, Raph Koster’s Theory of Fun for Game Design, and can unify currently differentially modelled gameplay motives around competence and curiosity.

Full article (locally hosted) here.

Linked article here.

Our Wisla

Bushcraft published on Sunday, January 01, 2023 (about 5 months, 6 days, and 4 hours ago)

Walking along the embankment of the Wisla; unseasonably warm weather and yet the unmistakable signs of winter. In the distance you can see the Wistula river. 

The bear

Writing published on Friday, December 30, 2022 (5 months, one week, and one day ago)

The bear had verifiable reports of Great Deeds. The bear had big muscles, and was physically huge. At one point, the bear's territory was massive; entire nations lived under his rule. He had untold and unimaginable riches. His music, song, and dance were elevated to the highest places. His science and industry were potent. 

All of this led to great pride for the bear. He would rightly walk with his head high and his chest out. He could exercise influence. He could will something and make it happen. Smart, strong, and competent minions worked hard to actualize the bear's goals. People feared the bear, and this was his source of power and control over many people. Some people respected the bear, some people (comfortable and warm) ignored the bear. 

But somewhere, along the way, perhaps as he became old, the bear became sick. So enamored with his power and past, he didn't support and make ready young leaders to replace him. He didn't adapt or change. He fought wars that had no business being fought. He fell into his cave; afraid of losing his power? 


He could be great, of course, but he isn't, anymore. 


setting up a podcast

Personal published on Tuesday, December 27, 2022 (about 5 months, one week, and 4 days ago)

In the myriad choices and sea of information we are forced to clarify greatly our goals, objectives and ideas. This process of clarification is truly wonderful. 

Merry Christmas!

Personal published on Sunday, December 25, 2022 (5 months, one week, and 6 days ago)

Celebrating Christmas, giving and getting gifts, connecting with family, listening to music, eating food, and appreciating the holiday season. The best I can do is to describe the area around Christmas; the outline of a shape that has none. The coming together. 

Building an LMS (or virtual learning experience) - part 3 of 3

Teaching Diary published on Wednesday, December 21, 2022 (5 months, 2 weeks, and 3 days ago)

My first moodle course is almost complete, introduction to programming languages. This has been a long process, but in the daily editing and revision I am pleased with the overall outcome. I'm sure more activities and resources will be added as students provide feedback, but now this course is "ready enough" for learning. I set up a badge for students to earn when they are done, and I have three assessments students must complete to demonstrate they understand this material at the right level.

I continually read how important building community is for online courses. I want this course to be as self-directed as possible, but I get how automated assessment misses subtle and nuanced points about the topic. Building this course has helped me focus on what I want the learning experience to be like; I suspect I will use this course in conjunction with my day-to-day teaching - but I want it structured so virtual students can derive maximum value from it. 

The good news is the first course is the most difficult (time intensive). But once created, I can re-use elements in other courses. And of course, once I create a digital asset, I can reuse (embed) it in other courses and other digital spaces.

Building an LMS (or virtual learning experience) - part 2 of 3

Teaching Diary published on Tuesday, December 20, 2022 (5 months, 2 weeks, and 4 days ago)

H5P is a plugin for existing publishing systems that enables the system to create interactive content like Interactive Videos, Presentations, Games, Quizzes and more. The problem with formal and structured learning on the internet is that it remains mostly read-only (or watch-only, or listen-only). H5P helps to solve this by enabling interactive assessment for almost any content. Please click here for many interactive examples.

This is a huge deal, but it wasn't until moodle and other LMS's incorporated H5P that teachers could track assessment for digital learning. This means the kind of learning students can experience and the kind of assessment data a teacher can have are exceptional. No longer do we just "watch a youtube and discuss" but we can add assessment and track that assessment for different topics. 

H5P helps us help students evaluate their understanding of a topic. 

Building an LMS (or virtual learning experience) - part 1 of 3

Teaching Diary published on Monday, December 19, 2022 (5 months, 2 weeks, and 5 days ago)

This is an entreatment I have oft repeated; focus on the verbs around learning rather than the nouns of technology. As I rebuild a virtual learning experience I am asking myself "How can I make this best for my students"

I'm building out some moodle courses - my hope is my students will be use this resource to independently learn about different topics within high school computing. I curate material for them and ask them to learn it. But the key differentiator here is assessment.  Anyone can watch a video, but to what extent do they understand it? By using forums, H5P assessment, and built-in moodle quizzes I can evaluate student understanding (and students can evaluate their understandings).  I'm still looking for a way to embed jupyter notebooks and auto-graders for code. 

...but whatever plugins and features I include all need to direct learning toward encouraging student interaction and collaboration, providing support and resources, and organizing content and activities.

The key points here are:

  1. Have clear learning goals: It's important to have a clear understanding of the learning goals and objectives for the virtual learning experience, and to design the experience around those goals. This might involve creating a lesson plan or course outline that outlines the topics and activities for each unit or module.
  2. Use a variety of teaching methods: Virtual learning requires a different approach than in-person teaching, so it's important to use a variety of teaching methods to keep students engaged. This might involve using video lectures, interactive activities, and small group discussions.

I have to think "to what extent will this course be an independent learning experience"? 

Giving students as much of a choice as possible is important, freeing me to focus on helping my students to solve problems - where there is the biggest bang for the buck for my students. 

Displaying courses in grid format on moodle homepage

Computer Science HOWTO Teaching Diary published on Friday, December 16, 2022 (about 5 months, 3 weeks, and 20 hours ago)

On the front page of moodle when using the boost theme, there is a linear list of courses. If you want a grid of courses, you can use the suggestion from here, a plugin named filter codes. I tested this on moodle version 4.1 and it works perfectly. 

just trying to make it to vacation…

Blogging Personal published on Thursday, December 15, 2022 (5 months, 3 weeks, and 2 days ago)

Sadly, I have little of all of it. Many of my students are sick, and my energy levels are quite low. Ugh. 

Procedural fantasy weapon generator

Games in education Practical Advice Teaching Diary published on Tuesday, December 13, 2022 (5 months, 3 weeks, and 3 days ago)

Here is the file on github, enjoy. I had quite bit of fun making this. Here's some sample output: 

Long ago, during the age of Destruction, Gnomish smiths forged Yosyur Wargebas's exquisite crossbow. The wood on this weapon is constructed in a spiral-shaped combination of dark wood and exotic wood, it is clear careful and extraordinary craftmanship went into the creation. This weapon is a masterpiece of craftsmanship, and is a veritable work of art. You have +2 on any rolls to pick up romantic partners while holding this weapon. This weapon is sentient. Moving your hand near it, you can feel a vague sense of neutral uncertainty. For 30 years, this weapon was used as a table ornament in the modest home of Prince Fumbledick, who was unaware of its importance.

Long ago, during the age of Light, Dwarven smiths forged Vosgrolin Bloodshield's flaming scimitar. Elegantly crafted in a spiral-shaped combination of semi-precious gems and rare metals, it is clear careful and extraordinary craftmanship went into the creation. This weapon is aflame, and does 4d6 fire damage. This weapon is sentient. Moving your hand near it, you can feel a vague sense of neutral pessimisticness. This weapon was once stolen by a goblin. When the litch who owned the weapon found the goblin, he punished the goblin severely, which is why goblin soup is now a popular dish amongst evil wizards and litches.

Long ago, during the age of Doom, Dwarven smiths forged Erirnoick Orehead's exquisite whip. Elegantly crafted in a helix-shaped combination of rare stone and semi-precious gems, it is clear careful and extraordinary craftmanship went into the creation. This weapon is a masterpiece of craftsmanship, and is a veritable work of art. You have +2 on any rolls to pick up romantic partners while holding this weapon. This weapon is sentient. Moving your hand near it, you can feel a vague sense of unaligned uncertainty. This weapon was once wielded by a young Kawian apprentice, who later became a fearsome warrior.

As far as dinners go,

Writing published on Monday, December 12, 2022 (5 months, 3 weeks, and 5 days ago)

We enjoyed a wonderful social connection with friends last evening; a warm home - good food and soup on a cold night. There was much to discuss, and we covered many topics. Ostensibly we were there for the 5th birthday party of one of the boys but really, just to see friends. 

After the soup and food, after the fire outside in the snow, after the conversation - with our daughter asleep in the back seat of our car, I just felt...so filled...

Good company does a body good, indeed. 

chatGPT part 3: how do I know you know?

Computer Science Teaching Diary published on Saturday, December 10, 2022 (5 months, 4 weeks, and 2 hours ago)

As a computing teacher I use standard written assessments with my students. Questions include different assessment objectives such as "state", "describe" and "explain". I also use small code problems where students must solve a problem and write an answer in pseudocode. There is an internal assessment that students write; worth 25% of their final grade students must solve a problem for a real client. This is mostly independent, and a place where students could use outside tutors to solve a problem. 

For any work outside of class, I will add oral component to the assessment.

According to chatGPT, 

Some key steps for structuring an oral exam for computer science include:

  1. Determine the goals and objectives of the exam: The first step in structuring an oral exam for computer science is to clearly define the goals and objectives of the exam. This will help to ensure that the exam is focused and that it effectively evaluates the student's knowledge and understanding of the material.
  2. Identify the key topics and concepts to be covered: Once you have determined the goals of the exam, you can identify the key topics and concepts that will be covered. This could include specific programming languages, algorithms, data structures, or key theories or ideas in computer science.
  3. Create a structured format for the exam: To ensure that the exam is well-organized and focused, it's important to create a structured format for the exam. This could involve dividing the exam into different sections, each focused on a specific topic or concept, or using a specific format (e.g. Q&A, presentation, problem-solving) to evaluate the student's knowledge.
  4. Develop a list of questions: The next step is to develop a list of questions that will be used during the exam. These should be focused on the key topics and concepts covered in the exam, and should be designed to evaluate the student's knowledge and understanding of the material.
  5. Plan for student evaluation and feedback: Finally, it's important to plan for student evaluation and feedback. This could involve using a grading rubric to evaluate the student's performance, providing written or verbal feedback to the student, or allowing the student to ask questions or provide feedback on their own performance.

Overall, the best way to structure an oral exam for computer science is to carefully plan and organize the exam, focusing on the goals and objectives of the exam and the key topics and concepts that will be covered. By following these steps, you can create an effective oral exam that effectively evaluates the student's knowledge and understanding of the material.

chatGPT part 2: how we change our teaching and student learning

Teaching Diary Writing published on Wednesday, December 07, 2022 (6 months, 19 hours, and 42 minutes ago)

My seniors students have discovered chatGPT. They (like me) were stunned when they saw it. One student asked me why they should study software engineering when there is a tool like this. 

I agree, this tool changes things, but while it can provide snippets of code, I don't think it can write whole systems with various input, processing and output. Much like visual studio code copiliot, I see systems like chatGPT offering support for experienced programmers.

The key thing is evaluation. How will we know the answers we get from chatGPT (and copilot) are correct? I spoke with our school director, always intellectually curious, who suggested teachers ask students to evaluate a reply given by chatGPT. I think this is where we need to be in relation to chatGPT: a smart assistant who needs to be watched carefully. 

That being said, it looks like intelligent agents are going to become better (much better) at being assistants. This seems to be a plausible near-term future

Our job is to teach our students well enough so they can evaluate / analyze the output to determine if the solution is correct / best fit for the problem they are trying to solve. 

chatGPT: teaching computing

Computer Science Teaching Diary published on Sunday, December 04, 2022 (6 months, 3 days, and 17 hours ago)

ChatGPT answers: 

There is no one-size-fits-all answer to this question, as the most effective teaching methods will depend on the specific goals and objectives of your course, the abilities and needs of your students, and the resources and materials available to you. However, there are some general principles and best practices that can help you create an effective and engaging learning environment for your students.

First, it's important to create a clear and organized syllabus that outlines the goals and objectives of your course, as well as the specific topics and concepts that your students will be learning. This will help your students understand what they can expect from the course and how they can prepare for success.

Next, it's important to use a variety of teaching methods to engage and motivate your students. This can include interactive lectures, discussions, hands-on activities, and group work. Using a variety of teaching methods can help keep your students engaged and interested in the material, and can also help students with different learning styles to succeed.

It's also important to incorporate real-world examples and applications into your teaching, to help students understand how the concepts and skills they are learning can be applied in the real world. This can help make the material more relevant and meaningful to your students, and can also help to motivate and inspire them.

Finally, it's important to provide regular feedback and support to your students, to help them understand where they are succeeding and where they may need to improve. This can include providing individualized feedback on assignments and exams, as well as offering extra help and support outside of class. Providing this kind of support can help your students feel confident and supported in their learning, which can in turn help them to succeed in your course.

Overall, the most effective techniques and methods for teaching high school computer science will depend on your specific goals and objectives, as well as the abilities and needs of your students. By using a variety of teaching methods, incorporating real-world examples and applications, and providing regular feedback and support, you can create an effective and engaging learning environment for your students.

Bill comments: 

Yea, about that.

Sabbatical learning - part 2

Blogging Personal Writing published on Saturday, December 03, 2022 (6 months, 4 days, and 20 hours ago)

Part 1 here. With a sabbatical scheduled for next year, I am excited and anticipating some good work to be completed. Being able to coalesce many years of experience to renew learning engagements and refresh my understanding strikes me as a golden time. 

I am not only going to work on "professional Bill" but I will also attend to "personal Bill", where I intend to:

  1. focus on exercise, diet and mindfulness
  2. focus on my garden and backyard - long neglected
  3. focus on hobbies 
  4. focus on friends

I will be reaching out to friends who have taken sabbaticals to learn from them; what they did well, what they didn't do well. I don't intend my learning to stop, but this might be the last time I have for long-term break until I retire.

I can't wait!

As I prepare for my sabbatical I am building mountains of curiosities and interests. "I wonder how XYZ" works. Why is XYZ like that". These types of wonderings prime the pump for engagement and interest in the work ahead. 

Coming together and eating

Personal published on Sunday, November 27, 2022 (6 months, one week, and 3 days ago)

When I was earning my superintendents license in NYC my supervising administrator instilled a simple truth:  feed your people. This resonated and resonates with me as a highly effective means of creating bonds, trust and connection. We just had Thanksgiving yesterday and I was struck how simple it is; good food, relaxed atmosphere, and people ...just connect... There is quite a bit more to leadership, but feeding people carries with it a physical and metaphorical benefit I really love. 

I think there is a certain vulnerability and assurance when we eat - something so basic - I don't know why food doesn't figure more prominently in our day-to-day meetings.  

Enjoying the moment

published on Saturday, November 26, 2022 (6 months, one week, and 4 days ago)

Nothing especially tricky here. We've 14 people coming over for a slightly delayed thanksgiving, and today is the big day!

  1. We spent time to carefully plan what, when and how of the meal prep
  2. We pre-cooked the creamed spinach yesterday
  3. We got some things ordered via caterer (pies and a green salad)
  4.  We've already started setting the table a day prior

Other than that, honestly engaging with "what's the worst thing that could happen" is a fun way to manage anxiety around large meals, and I find myself relaxing through meal preparation and enjoying the process of cooking (and preparing food for people I love). 

A quote from the Joy of Cooking:

We can offer reasoned counsels and repeat the lessons of experience and tradition, but the truth is that if the table is attractive and clean, the food and drink honest and good, the company amiable and interesting, and the host generous and calm, an affair can be a resounding success no matter where the glasses go or who is sitting where. And that is our last word on entertaining. 

Sabbatical learning - part 1

Blogging published on Wednesday, November 23, 2022 (6 months, 2 weeks, and 6 hours ago)

If a good replacement can be found, I'm approved for sabbatical leave next year. My plan for learning includes: 

  1. Design and construct curriculum to substantially improve student usage of git (a version control system) and the IDE visual studio code
  2. Design and construct curriculum for OOP Python
  3. Design and construct curriculum for advanced Python
  4. Design and construct curriculum using Jupyter notebook
  5. Design and construct curriculum for artificial intelligence / machine learning / advanced topics
  6. Rebuild every learning engagement and assessment in the two year IB computer science course (this is hundreds of learning engagements and 30+ assessments)
  7. Design and construct curriculum for Rust
  8. Design and construct curriculum in node.js, javascript, mongo DB, Linux

I'm already doing some of this stuff, but this sabbatical will help me by granting me the time to invest deeply in learning and reflection. Exciting stuff. 

Robotics

Teaching Diary published on Saturday, November 19, 2022 (6 months, 2 weeks, and 4 days ago)

This weekend, we are immersed in a Lego robotics competition. Students and coaches have come from other international schools to compete in a robotics challenge. The nature of the challenge is to program a robot to perform different manipulative tasks of various difficulties (within 2 minutes and 30 seconds). For example student robots need to push the red section of the windmill.

This will then trigger a different piece to fall, which must be collected for different points. The cool thing about this project is how many different times student-groups can attempt these challenges. It's ultimate design in my opinion, where a student will try / fail / try / fail many different times. This constant cycle of iteration is really at the heart of learning, construction and design - and is just such good stuff. 

Procedural generation as a teaching approach

Computer Science Teaching Diary published on Thursday, November 17, 2022 (6 months, 2 weeks, and 6 days ago)

The amazing thing about procedural generation is that infinite unique possibilities can be created with little work from humans (ref). I've been interested in procedural for a few years, and would encourage you to take a peek at the following resources to learn about procedural generation: 

  1. This is an excellent introductory article
  2.  Dwarf Fortress (an incredibly complex game that is largely procedurally generated)
  3.  No Man's Sky (this a wiki article describing how procedural generation works)

What is cool about procedural generation is how easy it is to start with procedural generation.  In the example code below, we can get the following output: 

  1. Discovered in the small village of Tr'lor
  2. Hatched in the ocean of Greenest
  3. Born in the small village of Mirkwood

# procedural generator to write a brief history
import random

origin_1 = ["Born", "Hatched", "Invoked", "Discovered"]
origin_2 = ["in the land of", "in the wilds of", "in the forest of", "in the ocean of", "in the small village of", "in the modest hamlet of"]
origin_3 = ["Tr'lor", "Kor'mer", "Kobiyashi", "Greenest", "Mordora", "Gondor'e", "Rivendell", "Mirkwood"]

story_part_1 = random.choice (origin_1) + " " + random.choice(origin_2) + " " + random.choice(origin_3)
print(story_part_1)

I have some students working at high levels of complexity and other students working with more basic levels, as seen above. But for all of them, this is a fun approach to deconstructing a complex system, identifying the patterns within the system, and introducing the correct randomness to the system to make it unique. 

Procedural generation gets us close to modeling and simulation where a student must understand a system in order to create a model of it. In my opinion, modeling and simulation is close to the the very best learning we can get

Procedural generation goes into the stratosphere when students apply machine learning to highly complex systems. 

update from Poland

Blogging Writing published on Wednesday, November 16, 2022 (6 months, 3 weeks, and 20 hours ago)

Welcome to the occasional update for the academic year 2022 - 2023.  I’ve lived and worked in Warsaw for almost thirteen years and these are my perspectives about current events in Poland. 

We learned yesterday (Tuesday) there was a Russian missile strike in Poland. The village is located less than 10 km from the Polish-Ukrainian border. It is inhabited by about 500 people, 2 people have died.

There is much we don't know but we know the missile was russian-made, and it exploded in Poland. 

According to Polish press, General Waldemar Skrzypczak stated:

It was probably hit by Ukrainian anti-aircraft weapons and misaligned, or it was misprogrammed and, as a result of various errors, went where it saw a different target. Or she got lost and flew until she ran out of fuel, the general estimates.

(almost all words in Polish have a gender associated with them, hence the word she)

To say the least, things are a bit tense in this area of the world. IF this is an attack, this would trigger article 5, which states:
 


“The Parties agree that an armed attack against one or more of them in Europe or North America shall be considered an attack against them all and consequently they agree that, if such an armed attack occurs, each of them, in exercise of the right of individual or collective self-defence recognized by Article 51 of the Charter of the United Nations, will assist the Party or Parties so attacked by taking forthwith, individually and in concert with the other Parties, such action as it deems necessary, including the use of armed force, to restore and maintain the security of the North Atlantic area.
 

This is essentially Poland asking for formal help from the alliance, and falls under a key NATO idea “an attack on one of us is an attack on all of us”. Many things to unpack here:

  1.  Russia is losing the war Ukraine. badly
    1.  Russia's military has been pushed back to pre-February 24 borders, and the Ukrainian military has made stunning gains. If you are interested in non-political reading of the war, I cannot recommend understandingwar.com highly enough.
    2. Napoleon famously quipped:  Never interrupt your enemy whilst he is in the midst of making a mistake. Putin is making a doozy
       
  2. …but there's still a war…
    1.  missile attacks continue, and just yesterday there were more attacks on Kiev, and Russia fired over 100 missiles.
    2. Following a pattern in recent weeks of lashing out far from the front after battlefield losses, Russia fired long range strikes at the capital Kiev, where air raid sirens rang out, two explosions were heard and columns of smoke rose into the sky. The mayor of Kiev said Russian missiles hit two residential buildings (ref).
       
  3. Russia made an uncharacteristically rational decisions by retreating from Kherson
    1. Russian military action has been irrational, disorganized and remarkably inept.
    2. The manner in which the Russian military retreated from Kherson was more careful and competent than what they have done in the past
       
  4. Since this conflict began weapons, supplies and help have been pouring into Ukraine from Poland
    1. but the missile hit a grain storage in a tiny village, nowhere near anything of strategic importance
    2. There are also tens of thousands of American (and NATO) troops / equipment / missile defense in Poland
       
  5. Seems to me the last thing Russia wants if to trigger a war with NATO
    1. Considering their stunning failure in Ukraine, a war with NATO would be unimaginably stupid and result in a catastrophic defeat of the Russian military
       
  6. Please understand: nothing unites the Polish people like an attack 
    1. In Poland, as a rule, there is bickering, complaining and division but when the need arises, the Poles unite at remarkable speed and in remarkable solidarity.
       

We simply pay attention, listen carefully, and get on with our lives as best we can. 

Different categories of games in education

Games in education Practical Advice published on Monday, November 14, 2022 (about 6 months, 3 weeks, and 3 days ago)

I've used three different kinds of games in my classroom. 

The purpose of this blog post is to help teachers understand the differences, similarities, and characteristics of the three types of games. 

COTS - Commercial, Off the Shelf game. I've covered COTS games for a while. COTS games are designed for the mass market - they are designed for enjoyment, challenge, and fun. COTS games can often cost many millions of dollars to make, and a hit game (AAA title) can generate hundreds of millions of dollars. COTS games are increasingly being released for the personal computer and consoles. COTS games offer: 

  1. High production value (very high quality graphics and sound)
  2. Low technical problems and very strong technical support 
  3. Strong user communities (fan sites, active forums, etc...)
  4. Often these games have very active modding communities
  5. Work on a fairly new machines; older computers (more than 3 years) might have problems.
  6. Run locally (from the internal hard disk) 
  7. Have exceptionally good gameplay
  8. Very good tutorials, which check for understanding
  9. Adjust difficulty based on the players skills
  10. A game kids want to play at home 

Edutaintenment Many teachers are familiar with these titles - Millies Math House, Reader Rabbit, Sammy's Science House The hallmark of these games are kid-friendly graphics with gameplay that follows a "solve these problems and get to the next fun thing to do". Sometimes players are asked to do something like bowl for math problems. 

The general feel of the games is really fun math or reading worksheets. These games are fun, and build basic skills. They are valuable and good learning tools. In my context of games in education, these games generally don't fit well. They are a little to oriented to the drilling model (but who says drilling has to be no fun?). Characteristics of edutainment titles: 

  1. Marketed exclusively for schools / education
  2. Content-specific (titles focusing on math, reading, spelling, foreign language, etc)
  3. Marketed for specific age or grade levels
  4. ESRB ratings are often intended for general
  5. The back-story of the game is minimal
  6. Gameplay is generally segmented and measured around learning objectives 

 

Serious games Serious games are a relatively new phenomena (although people have been seriously playing games for a long time). Here's wikipedia's view on the matter; I like what they say. I think of serious games a single-topic, highly specific semi-simulations. Serious games have similar profiles: 

  1. They are usually web-based
  2. They usually have a very specific theme (peace in the mideast, health sim)
  3. They are not meant to be in-depth simulations, they are meant to model the most important dynamics of a system
  4. They are short-term games 
  5. They are deliberately designed to teach, explain an issue, or clarify the dynamics of an issue

Of course, playing  a game invites a healthy dissociation and leans heavily towards recreation. As much as I have tried over the years to integrate incredible student passion playing games and learning, I have failed.

If you really want cream-of-the-crop, high-level learning with games, ask kids to develop models and simulations. It takes a long time to do this well, but learning is magnificent. 

saying goodbye to an idea

Blogging Writing published on Thursday, November 10, 2022 (6 months, 3 weeks, and 6 days ago)

After more than 20 years of development, I have shut down moderncommand.com, a text-based game built on pennmush. I haven't touched code on moderncommand.com in more than 10 years. Github repo here.

 

Modern Command simulates running a contemporary nation-state. You assume the role of a Prime Minister (or President), and make decisions that effect the lives of millions of people in your country.

 

Technology, social, political, military, and economic issues all reflect events in today's news. You will control and manipulate this world just like real life leaders do; you will issue orders, sway opinions, budget resources, provide a vision and structure for your apt minions to do their work. You will negotiate, order, ask, sign, give, take, listen and talk.

 

Here's the final announcement. My avatar's name was Boris: 

Announcement: Boris shouts, "Thank you, Modern Command."
Announcement: Boris shouts, "you have provided me with many hours and days of escape, enjoyment, and fun"
Announcement: Boris shouts, "it is time for me to move on, but you will always have a special place in my life"
Announcement: Boris shouts, "I am saying goodbye"
Announcement: Boris shouts, "the enjoyment of creating and crafting and making"
Announcement: Boris shouts, "was made possible by you"
Announcement: Boris shouts, "so long, and thanks for all the fish."
 

@shutdown
GAME: Shutdown by Boris
Going down - Bye

 

The purpose of this blog post is to reflect on the grief of saying goodbye to an idea. Moderncommand was a dream for me, made real. I suffered a little bit from perfection; waiting until the game was “just right”. But I was proud of the systems I wrote and the time and effort I put in to make a good game. 

The game was a dream and it's time to say goodbye - this frees me to embrace other ideas and other stories. But the feelings of grief are real. I think when you have an idea you also have dreams about the idea; what it could be, what life would be like with the idea. 

I don't think you can fully move on until you say a proper goodbye. 

No peace without balance of power

Blogging Writing published on Wednesday, November 09, 2022 (6 months, 4 weeks, and 20 hours ago)

Power is possession of control, authority, or influence over others (source). There are different kinds / types of power, and different contexts with which it exists. 

Peace is not the absence of conflict; peace is about a real balance of power between and amongst groups. We cannot negotiate through a position of weakness, but rather strength. 

I live in Warsaw, Poland. As the war rages on in the Ukraine I see how power (coalitions of power and alliances of power) can create peace, but only when there is a balance of power - that one group is not dominate over another. For Ukraine, the only path to true peace is to fight. I think this may be true for all of us.

The design cycle works

Computer Science Teaching Diary published on Tuesday, November 08, 2022 (6 months, 4 weeks, and one day ago)

My 9th and 10 grade (ages 15 and 16) students are working the design cycle as they solve a problem through programming. The problems are all unique, and fit the student's skill / capacity window.  An example of some the projects are below:

How to find the perfect guitar?A web-based application to help people find a guitar based on certain criteria
Which sport should you play?A web-based application help people decide what sport they might enjoy
Dungeons & Dragons character builder helperA web-based application to help people build a D&D character

The students have begun to really think and understand their problem. As they dig into the problems, I note they are changing their success criteria and more carefully adding features based on research into solutions. This process - of inquiry into a problem and understanding the problem deeply - reinforces the power of design. 

In education, we talk about transfer learning, where students can transfer learning to novel scenario or situation. A key question I like to ask is:

What do I want my students to know / be able to do in 5 years, 10 years

This kind of approach to solving problems is extraordinarily powerful, and a good thing™ to have in schools. Students who do not attend to this process generally do not have high quality solutions.

Tramping in Kabaty

Bushcraft published on Monday, November 07, 2022 (7 months, 10 hours, and 4 minutes ago)

Went for an early-morning tramp in the woods in the Kabaty woods. Stunning area in the heart of Warsaw with plentiful wildlife and beautiful flora to enjoy. I brought my normal kit with me; my pathfinder canteen with a small folding titanium stove. I had planned for a nice walk and perhaps a stop to make some tea. Instead though, I walked almost all the way to Kabaty; almost 45 minutes one way. It was cold, and I regretted not bringing a small backpack with me; my hands were cold as I carried the canteen. 

 

I saw a beautiful woodpecker, red nose and jet-black body. He didn't want to let me look at him for a long time, so I only caught a brief look. The sound of the other birds singing was serene and beautiful. I saw one, maybe 2 other people during my walk (it was early). 

I was wearing my normal hiking boots with normal socks. I wasn't even half-way through my tramp when I recognized the classic sensation of a blister on my right foot. Chastising myself, I thought my shoes were broken in enough to prevent blisters. I suspect the shoes are fine, but a winter of light walking has made my feet a bit thin. 

Big learnings: backpacks are best for tramping in the woods, a bit of foot powder and shorter walks are in order to break in my feet for the upcoming camping / bushcraft season. And of course, nothing beats a tramp in the woods. 

The original hum

Blogging Writing published on Monday, November 07, 2022 (7 months, 10 hours, and 13 minutes ago)

Lithe and moving, lost and ecstatic. There was nothing but the dance. The music flowed through him and he through the music. a perfect connection of sound and movement. He flowed as he flowed, as the music took him, each person did; each with their own call to the sound. 

But everyone on the dance floor was lost (and found) in the sound. The descendent; the earth, the ground, the body were triumphant. It was just perfect movement. 

It started adequately episcopal. 

A Proper Wedding (with People In Formal Attire). A lovely couple, a nice setting. A chuckle and tear as vows were exchanged. Toasts were made. Dinner was enjoyed and some wine was drunk. 

(Some wine was drunk, indeed).

And the traditional party favorite songs, and the traditional party dancing, mostly constrained and happy. 

It wasn't until a few minutes before the last song. Ties had been discarded, shoes had been cast aside, when it just. simply. started. The beat began and people just became lost in the movement, the moment and the move. Made of red light,  a thread emerged on the dace floor and oscillating and the guests just had to follow it; they had the surrender; then came the joy. And then the ecstasy.  The bodies began moving and couldn't stop if they wanted. The light from the thread spread out and everyone who was dancing coalesced. 

The music and dancing consumed them. And as it consumed it sought ground; with feet, with the earth. In a moment they all knew the first sound. Each person knew the hum. The body. The sound of life. 

..and he became, for a moment, fully alive

A wonderful way to learn software engineering

Computer Science published on Sunday, November 06, 2022 (about 7 months, one day, and 11 hours ago)

I teach two different courses primarily concerned with software engineering; 

  1. Designing Solutions Through Programming
  2. Solving Complex Problems Through Programming

In both courses I offer students a choice about what problem they want to solve. As long as the problem isn't too easy or too difficult I approve the project. This creates agency which well-serves my students. I find I get increased engagement, excitement, a sense that students are working a “real” solution which matters. From AMLE:

Student agency relates to ways that students can intentionally influence their own circumstances (Bandura, 2006). Agency can also be defined as a “student’s desire, ability, and power to determine their own course of action” (Vaughn, 2018, p. 63). Agency depends on “intentionality and forethought to derive a course of action and adjust course as needed to reflect one’s identity, competencies, knowledge and skills, mindsets, and values” (Nagaoka et al., 2015, p. 6). These elements suggest areas within which teachers can support student agency: through curriculum, instruction, assessment, and the ways in which they structure learning opportunities (source).

This is though, more difficult to manage. I like to use templates that students can alter and modify to build solutions. We deliberately and carefully learn about each part of a template so students can understand the code, and not just copy-and-paste chunks without understanding how it works. 

I plan on writing more about this, but this overall structure, where we teach students how to code, walk them through a template, and then build an authentic application allows them to transfer their learning to build applications and then “think software engineering”. 

The two types of forests

Bushcraft published on Saturday, November 05, 2022 (7 months, 2 days, and 5 hours ago)

As we tramped through kabaty forest  I was reminded there are two types of forests; one where man decides how it should look and one where nature decides. This one is the former; the forest is beautiful, but is unmistakably touched by humans in every way. We would ideally like a more diverse forest floor; with evidence of decomposing tree's and a more wild, unkept look. I was taught the average lifecycle for old-growth forests was about 400 years. When man steps in to interrupt that natural cycle it can take a few hundred more years to get back into the natural rhythm. 

There is debate about how to best manage forests. There is often discussion about harvesting forests, utilizing them responsibly, or just letting them be. As dead trees decompose, a very specific ecosystem develops; one in which very specific bacteria and insects thrive. These bacteria and insects give rise to a connected ecosystem that continues the growth cycle of the forest, creating topsoil that then in turn nourishes more growth, etc… Old growth forests are increasingly rare in our world, and deserving of every bit of protection we can offer them. 

This is one aspect of bushcraft I find appealing; leave no trace, never cut live wood unless absolutely necessary, and to work with nature as opposed to against it. The wild isn't something to be tamed; man's insatiable desire to destroy it is. 

Early morning

Blogging Writing published on Thursday, November 03, 2022 (7 months, 4 days, and 9 hours ago)

I've always been an early bird. Lately I've been getting up around 4 or 4:30. I get so much work done. 

I should clarify: I don't mean work for work. I mean making progress on things I care about. Giving myself time to focus on personal goals and make progress on growing in a way I like.

There is a cost to this of course. Going to bed early I miss time with my wife, who is a bit of an evening starling. We still connect - but I suppose I get my quiet time in the morning and she gets hers in the evening. There's a balance in that. 

To the morning, to the start of things, to the time of focus and clear thought, free of interruptions, I salute you.

Letting go / picking up

Blogging News Personal published on Wednesday, November 02, 2022 (7 months, 5 days, and 10 hours ago)

I have made a list of projects I am letting go. I'm doing this so I have have space / room for new projects and ideas I want to work on. I have feelings of nostalgia and genuine loss as I let go of these older projects, but I am also feeling excited about working on projects I feel have value and interest for me. 

So, without any further ado, I'm letting of of the following projects: 

  1. balanced gaming (a site where I wanted to engender a conversation about balanced gaming for schools, parents and students).
  2. modern command (a text-based game simulating the command of a modern nation-state, powered by the pennMUSH server).
  3. interactive fiction

I'm picking up: 

  1. writing
  2. bushcraft
  3. drawing

How do we measure students computational thinking?

Computer Science Teaching Diary published on Friday, May 13, 2016 (7 years, 3 weeks, and 6 days ago)

Building a computer science wiki

Computer Science Teaching Diary published on Wednesday, May 11, 2016 (7 years, 4 weeks, and one day ago)

I've been very busy online lately, just not here 😊 Please do take a look at my computer science wiki. I'm building it for my high school, middle school, and IB students. Once it is filled-out enough, I will probably ask the internet for some help to add to it. Please enjoy, and check out the list of recent changes.

Linux server with lots of students - assigning individual read / write for students in /var/www

HOWTO Linux Teaching Diary published on Monday, April 25, 2016 (7 years, one month, and 2 weeks ago)

I use (and love) linode for my web hosting, email, database, and other linux needs. I'll be using linode for my web applications class next year (about 15 students). I had a problem thinking how would I enable students to write to a web directory (var/www) without giving them all SUDO access (and allowing them to write into another students directory). 

This took me some time to find a solution, and it is beautifully simple (of course). Click here to see the thread

If you make /var/www writeable by its group and add the user to the group, that user will not have to use sudo. 

Try this: 

sudo adduser www-data 

sudo chown -R www-data:www-data /var/www 

sudo chmod -R g+rwX /var/www 

 

The user should then be able to edit /var/www/ files without hassle. The first line adds the user to the www-data group, the second line clears up any files with messed up ownership, and the third makes it so that all users who are members of the www-data group can read and write all files in /var/www. If you are logged in as you need to log out and log back in for the group membership to take effect. I confirm this works.

Six rules for asking questions in computer science

Computer Science Teaching Diary published on Tuesday, April 12, 2016 (about 7 years, one month, and 4 weeks ago)

The more complex code is, the longer it takes to understand and debug. If it is poorly written code, a multiplier is added to the time required to read it. I have worked with my students to build a "must do before asking questions" list in computer science. 

1. Google your question 
2. Re-read your code (or function). It can be helpful to read this backwards 
3. Use debugging tools 
4. Ask the person next to you 
5. Read error messages! 
6. If you have to ask a teacher for help, make sure you ask a very specific question about a very specific topic

 Great questions get great answers. Bad questions get, well, not-great answers.

Increasing complexity == increasing time to read

Computer Science Teaching Diary published on Friday, April 08, 2016 (7 years, 2 months, and one day ago)

I need some advice about a common question: "can you look at my code really quickly"?

I am starting to work on increasingly sophisticated programs with my students. My students ask me to help them diagnose a problem, suggest alternatives, or figure out what is broken in their code.

My problem is reading their code takes time, thinking about what they are doing takes time, and suggesting a good alternative takes time. This isn't something I can do in 30 seconds.

How do you manage student requests for support and assistance when their code is very complex and requires more than 5 or 10 minutes to read? 

Object construction

Computer Science published on Thursday, April 02, 2015 (8 years, 2 months, and one week ago)

I'm continuing my learning in JavaScript. 

Today, I reviewed and refreshed my understanding about objects, and object instantiation. 

I have always clearly understood creating, modifying, and deleting objects and their attributes. Today, though, I learned a new term: object literal notation and object constructor

In my PHP work, I've seen "constructor" term, and truthfully, never fully understood it. After review and practice today, I see how it works. 

It's funny, I always "hook" my new learning onto something I learned in the past. In this case, my work building text-based games was instrumental in my understanding of objects. @create foo; @set foo=thing/value, etc... 

I have forgotten how much I enjoy /just coding/ and hacking. It is a real pleasure.

Computational thinking, Minecraft and a 5 year old?

Computer Science published on Monday, March 30, 2015 (8 years, 2 months, and one week ago)

According to wikipedia, the primary characteristics of computational thinking are decomposition, data representation, generalization/abstraction, and algorithms. 

Specifically, computational thinking is a problem solving framework where: Analyzing and logically organizing data Data modeling, data abstractions, and simulations Formulating problems such that computers may assist Identifying, testing, and implementing possible solutions Automating solutions via algorithmic thinking Generalizing and applying this process to other problems ...are used to approach problems. How then, can we use minecraft to help a 5 year old (my daughter) start to understand these concepts? 

I think the best way is to build a trap for monsters. Firstly, she would have to use cause-and-effect thinking. She would also need to break the trap into it's different parts. She would need to design a trap, and test it. In broad strokes, we will approach like this: 

  1. Define the problem (zombies, skeltons, and creepers)
  2. Understand the component parts of a trap
  3. With the component parts, she will design a trap
  4. She will test the trap
  5. She will generalize ways the trap can be used in other situations 

Ok, I'll be honest, this isn't a good example of computational thinking. The classic decomposition, data representation, generalization/abstraction, and algorithms are not really present. But this would get us on a good road, wouldn't it? What do you think?

Yea! I learned something that I actually used!

Computer Science Teaching Diary published on Tuesday, March 24, 2015 (8 years, 2 months, and 2 weeks ago)

I'm refershing my javascript skillset by going through a code academy course. Laborious, but helpful. Today, while supporting a co-worker on a powerschool customization, we were looking at a problem. I realized a variable was declared within a function but wasn't scoped to be used outside of the function (globally). Once fixed, we were running strong.

I just studied variable scope in my refresher course, and I'm grateful I did! As always, the wonderful stack exchange has a well-written piece about variable scope within javascript.

I suppose it is mildly depressing that I am excited about learning something that I can actually use. That must mean I normally learn things that are useless.

What is computational thinking in K-12 space?

Computer Science published on Friday, March 20, 2015 (8 years, 2 months, and 3 weeks ago)

Any look at computer science in the K-12 space leads inexorably towards the notion of computational thinking. My elevator speech on computational thinking is "thinking to computer". But there are many other, far better sources we can find below:

From Google comes this excellent answer

Computational thinking (CT) involves a set of problem-solving skills and techniques that software engineers use to write programs that underlie the computer applications you use such as search, email, and maps. Here are specific techniques.

Decomposition: Breaking a task or problem into steps or parts.
Pattern Recognition: Make predictions and models to test.
Pattern Generalization and Abstraction: Discover the laws, or principles that cause these patterns.
Algorithm Design: Develop the instructions to solve similar problems and repeat the process.


From the CSTA:

“CT is an approach to solving problems in a way that can be implemented with a computer. Students become not merely tool users but tool builders. They use a set of concepts, such as abstraction, recursion, and iteration, to process and analyze data, and to create real and virtual artifacts. CT is a problem-solving methodology that can be automated and transferred and applied across subjects. The power of computational thinking is that it applies to every other type of reasoning. It enables all kinds of things to get done: quantum physics, advanced biology, human–computer systems, development of useful computational tools.”

Computational thinking is thus a problem-solving methodology that can interweave computer science with all disciplines, providing a distinctive means of analyzing and developing solutions to problems that can be solved computationally. With its focus on abstraction, automation, and analysis, computational thinking is a core element of the broader discipline of computer science and for that reason it is interwoven through these computer science standards at all levels of K–12 learning Page 9 of the CSTA K-12 computer science standards.

From Jeannette Wing, regarding as the originator of computational thinking:

Computational thinking is a fundamental skill for everyone, not just for computer scientists. To reading, writing, and arithmetic, we should add computational thinking to every child’s analytical ability. Just as the printing press facilitated the spread of the three Rs, what is appropriately incestuous about this vision is that computing and computers facilitate the spread of computational thinking. Computational thinking involves solving problems, designing systems, and understanding human behavior, by drawing on the concepts fundamental to computer science.

Computational thinking includes a range of mental tools that reflect the breadth of the field of computer science.

What is computer science in a K-12 school?

Computer Science published on Thursday, March 19, 2015 (8 years, 2 months, and 3 weeks ago)

Computer science isn’t learning to use excel. Computer science isn’t about understanding system administration and packet shaping. It’s not about using simulations to better understand biology. 

I think K-12 schools can get confused about the difference between computer science, information technology, and educational technology. They are distinct. 

Computer science is the scientific and practical approach to computation and its applications. It is the systematic study of the feasibility, structure, expression, and mechanization of the methodical procedures (or algorithms) that underlie the acquisition, representation, processing, storage, communication of, and access to information, whether such information is encoded as bits in a computer memory or transcribed in genes and protein structures in a biological cell An alternate, more succinct definition of computer science is the study of automating algorithmic processes that scale.

 A computer scientist specializes in the theory of computation and the design of computational systems source here. There are many reasons K-12 schools don’t “do” computer science well. I suspect one of the larger reasons is the confusion about simple definition. I've seen "computer class" as a catch-all. 

From Running on Empty comes an excellent description of why computer science is difficult to define and implement in K-12 schools: Consistent with efforts to improve “technology literacy,” states are focused almost exclusively on skill-based aspects of computing (such as using a computer in other learning activities) and have few standards on the conceptual aspects of computer science that lay the foundation for innovation and deeper study in the field (for example, develop an understanding of an algorithm). 

As I learn and explore computer science in K-12 space, I would be curious to hear your thoughts about computer science in K-12.

How do we understand transformation & SAMR?

Educational Tech published on Wednesday, March 11, 2015 (8 years, 2 months, and 4 weeks ago)

I love SAMR because it articulates a clear model of technology integration. From a respected colleague and friend comes a question about researching successes with transforming learning with technology. His specific question is "what could I research to understand transformative teaching and learning as it relates to SAMR". The best way to do this is to interview teachers who have changed the way students learn with technology. This is important, so please pay attention. We aren't looking at teachers who are "using more technology", we are looking at teachers who have changed their model of instruction, utilizing digital tools. 

A few examples: 

1. A middle school social studies teachers used to teach geography using paper maps, now he uses digital maps. Transformative? No. 
2. An elementary school science teacher used to teach the water cycle, but now students are engaged in project-based learning about "me and my world". Transformative? Yep. 
3. A high school math teacher used to teach basic geometry on a dry-erase board, but now has kids exploring area and shape using a simulation. Transformative? Probably, but if they are just playing, then probably not. The key point here is that transformative is about the verbs and not the nouns. 

Here are some questions you could ask that would guide your thinking about transformational practice (used gratefully from this source) : 

1. Did the assignment build capacity for critical thinking on the web? 
2. Did the assignment develop new lines of inquiry? 
3. Are there opportunities for students to make their thinking visible? 
4. Are there opportunities to broaden the perspective of the conversation with authentic audiences from around the world? 
5. Is there an opportunity for students to create a contribution (purposeful work)? 
6. Does the assignment demo “best in the world” examples of content and skill? I posit that even the course "educational technology" is dangerous. As if there is a split between the two (there isn't). Hope this helps.

Spock?

Personal published on Friday, February 27, 2015 (8 years, 3 months, and one week ago)

Oh man. Leonard Nimoy is gone. What a loss, what a great loss.

Sublime - is just so…good…

Blogging Personal Teaching Diary published on Friday, February 06, 2015 (8 years, 4 months, and 2 days ago)

Well. I haven't been this enamored with a piece of software in a long time. Sublime - a text editor - has won my heart. The last time I got this happy about text editing was back in the day with UltraEdit. Someone put some love into this software.

Cultivating admiration in brands: Warmth, competence, and landing in the “golden quadrant”

Jennifer Doe, Emily N. Garbinsky, Kathleen D. Vohs
Conference Papers Journal of Consumer Psychology, Volume 22, Issue 2, April 2012, Pages 191-194

Abstract

Although a substantial amount of research has examined the constructs of warmth and competence, far less has examined how these constructs develop and what benefits may accrue when warmth and competence are cultivated. Yet there are positive consequences, both emotional and behavioral, that are likely to occur when brands hold perceptions of both. In this paper, we shed light on when and how warmth and competence are jointly promoted in brands, and why these reputations matter.