<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4701668830837946147</id><updated>2011-10-14T17:41:03.865-07:00</updated><category term='Policy'/><category term='CSinK12'/><category term='Diversity'/><category term='STEM'/><category term='DNS'/><category term='Internet'/><category term='Octal'/><category term='AP'/><category term='Logic'/><category term='NYT'/><category term='Bitmap'/><category term='Cse4k12Resources'/><category term='Boolean'/><category term='Google'/><category term='Curriculum'/><category term='Binary'/><category term='Hexadecimal'/><category term='VisualProgramming'/><category term='TeachingCS'/><category term='Montessori'/><category term='Admin'/><category term='Spritely'/><category term='CPU'/><category term='Arduino'/><category term='CodeIn'/><category term='AMS'/><category term='Materials'/><category term='base-sixteen.org'/><category term='ALU'/><category term='ComputationalThinking'/><category term='SIGCSE'/><category term='Memory'/><category term='Transistors'/><category term='ClassSummary'/><category term='Magic'/><category term='Crossbin'/><category term='CMOS'/><title type='text'>Computer Science &amp; Engineering for K-12</title><subtitle type='html'>(or Computer Science Education for K-12, whichever you prefer)</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://cse4k12.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://cse4k12.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Gary Kacmarcik</name><uri>http://www.blogger.com/profile/06251485476040169610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>46</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4701668830837946147.post-802042264415606176</id><published>2011-10-14T17:41:00.000-07:00</published><updated>2011-10-14T17:41:04.365-07:00</updated><title type='text'></title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-r-9PCaFd-W8/Tpdkis9cQCI/AAAAAAAAAR8/Umgq1ojFRiI/s400/GCI_2011_logo_URL_blueborder-nowww.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="213" src="http://4.bp.blogspot.com/-r-9PCaFd-W8/Tpdkis9cQCI/AAAAAAAAAR8/Umgq1ojFRiI/s320/GCI_2011_logo_URL_blueborder-nowww.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="http://code.google.com/opensource/gci/2011-12/index.html"&gt;Google Code-In&lt;/a&gt;&amp;nbsp;is an open source development contest for 13-17 year old students. Similar to Google's&amp;nbsp;&lt;a href="http://code.google.com/soc/"&gt;Summer of Code&lt;/a&gt;, but targeted at younger programmers.&lt;br /&gt;&lt;br /&gt;If you know any High School students who are interested in programming or curious to get involved in open-source projects, you might want to point them to the &lt;a href="http://google-opensource.blogspot.com/2011/10/google-code-in-are-you-in.html"&gt;announcement on Google's Open Source blog&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The participating projects haven't been announced yet, but some of the tasks will include: coding, documenting, researching, training, translating and user interface design.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.google-melange.com/gci/events/google/gci2011"&gt;Timeline&lt;/a&gt;:&lt;br /&gt;November 9: Announce participating open-source projects&lt;br /&gt;November 21: Google Code-In begins&lt;br /&gt;January 16: All tasks must be complete&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;[Repost from: &lt;a href="https://plus.google.com/u/0/100423542577776884627/posts/gu8H6QmU7Eb"&gt;Google+&lt;/a&gt;]&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4701668830837946147-802042264415606176?l=cse4k12.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cse4k12.blogspot.com/feeds/802042264415606176/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4701668830837946147&amp;postID=802042264415606176' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/802042264415606176'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/802042264415606176'/><link rel='alternate' type='text/html' href='http://cse4k12.blogspot.com/2011/10/google-code-in-open-source-development.html' title=''/><author><name>Gary Kacmarcik</name><uri>http://www.blogger.com/profile/06251485476040169610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-r-9PCaFd-W8/Tpdkis9cQCI/AAAAAAAAAR8/Umgq1ojFRiI/s72-c/GCI_2011_logo_URL_blueborder-nowww.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4701668830837946147.post-8602889585892494883</id><published>2011-09-13T17:43:00.000-07:00</published><updated>2011-09-13T17:43:41.814-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TeachingCS'/><category scheme='http://www.blogger.com/atom/ns#' term='ComputationalThinking'/><title type='text'>How to explain programming to young children</title><content type='html'>A recent &lt;a href="http://ask.slashdot.org/story/11/09/02/0133252/How-Do-You-Explain-Software-Development-To-2nd-Graders"&gt;article on Slashdot&lt;/a&gt; had an interesting comment titled&amp;nbsp;&lt;b&gt;&lt;a href="http://ask.slashdot.org/comments.pl?sid=2409156&amp;amp;cid=37282988"&gt;Here's my way of explaining "programming"&lt;/a&gt;&lt;/b&gt;&amp;nbsp;authored by "Sun" (or Shachar) &lt;i&gt;[minor typos corrected]&lt;/i&gt;:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Caveat - I have never actually tried it, and I developed it for adults. I still think it might work with 2nd graders (probably too complex).&lt;/blockquote&gt;&lt;blockquote&gt;Ask for a volunteer. Write a bunch of numbers on the board, and tell the volunteer to sort them.&lt;/blockquote&gt;&lt;blockquote&gt;Explain that this is not programming.&lt;/blockquote&gt;&lt;blockquote&gt;Now, cover the volunteer's eyes, write some more numbers on the board, and tell him to tell you to sort them. Allow asking "what is the first number" and such.&lt;/blockquote&gt;&lt;blockquote&gt;Explain that this is, also, not programming.&lt;/blockquote&gt;&lt;blockquote&gt;Now, tell the volunteer to tell you how to sort the numbers before they are written on the board. Explain that once the numbers are written on the board, you will not hear any comment from him. Write the instructions down on the board. When they are done, write down numbers and carry the instructions out. Try to pick numbers that won't work with their instructions. Allow the class to fix the instructions, but any time they do, restart the whole thing.&lt;/blockquote&gt;&lt;blockquote&gt;This is programming.&lt;/blockquote&gt;&lt;blockquote&gt;Shachar&lt;/blockquote&gt;&lt;br /&gt;While I agree that it seems a bit involved for a 2nd grade classroom (where making a PB&amp;amp;J sandwich might be more appropriate), this seems like a good approach for middle school and up.&lt;br /&gt;&lt;br /&gt;Technically, this is demonstrating how to create an algorithm, but creating an algorithm to solve a task is a big part of programming. Once the algorithm is done, the programmer must then implement it efficiently in a programming language.&lt;br /&gt;&lt;br /&gt;A variant of this would be to pair up the students and give each group a set of cards to sort - cards should be a bit easier for the blindfolded student to work with. After each group has created their sorting algorithm, the algorithms can be shared with the class and you can run through examples to improve them collaboratively.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4701668830837946147-8602889585892494883?l=cse4k12.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cse4k12.blogspot.com/feeds/8602889585892494883/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4701668830837946147&amp;postID=8602889585892494883' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/8602889585892494883'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/8602889585892494883'/><link rel='alternate' type='text/html' href='http://cse4k12.blogspot.com/2011/09/how-to-explain-programming-to-young.html' title='How to explain programming to young children'/><author><name>Gary Kacmarcik</name><uri>http://www.blogger.com/profile/06251485476040169610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4701668830837946147.post-4830784108660229734</id><published>2011-09-11T11:47:00.000-07:00</published><updated>2011-09-11T11:47:18.692-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Curriculum'/><category scheme='http://www.blogger.com/atom/ns#' term='STEM'/><category scheme='http://www.blogger.com/atom/ns#' term='CSinK12'/><title type='text'>K-8 curriculum overview for computer skills</title><content type='html'>&lt;span class="Apple-style-span" style="font-style: italic;"&gt;From the If-I-Ran-The-World Dept...&lt;/span&gt;&lt;br /&gt;&lt;div style="font-style: italic;"&gt;&lt;br /&gt;&lt;/div&gt;So here is a rough outline of my ideal computer skills curriculum for K-8, with a focus on preparing students for programming in middle school.&amp;nbsp;I'm assuming roughly 1.5-2 hours per week and ~32 weeks in a school year. For K-5, the items are more "computer literacy" than&amp;nbsp;"computer science", but that changes in middle school (grades 6-8) where the focus switches to teaching how computers work and how to program.&lt;br /&gt;&lt;br /&gt;Note that, when assigning a lesson to a grade/age, I tried to select a grade where the vast&amp;nbsp;majority of students would be ready and able to&amp;nbsp;understand the concepts. Thus, the grade-level specified is meant to be appropriate for a classroom&amp;nbsp;setting.&lt;br /&gt;&lt;br /&gt;When homeschooling or teaching an individual, you may find that the student&amp;nbsp;is ready for this material at an earlier age (often 2-3 years earlier).&amp;nbsp;The best learning environments are those that can adapt&amp;nbsp;to the students' interests, so feel free to move things earlier&amp;nbsp;as needed. But note that this request to move the lesson earlier needs to come&amp;nbsp;from the student.&lt;br /&gt;&lt;br /&gt;For classrooms, if you prefer to think in terms of Introduce/Reinforce/Master,&amp;nbsp;then the grades listed here are a cross between Introduce and Reinforce.&lt;br /&gt;&lt;br /&gt;I'm using US school grades so add 6 to get an approximate age (1st grade&amp;nbsp;is roughly 7 yrs old).&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Elementary School&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The key lessons here are to learn how to use computers effectively and to be exposed to the&amp;nbsp;underlying math/logic principles that will be used in middle school.&lt;br /&gt;&lt;br /&gt;At the end of 5th grade, the students should have the following skills:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Know how to interact with a computer using mouse and keyboard&lt;/li&gt;&lt;li&gt;Be able to save/load files from an app, and to organize their files in directories&lt;/li&gt;&lt;li&gt;Understand non-decimal number systems, specifically binary numbers.&lt;/li&gt;&lt;li&gt;Understand basic boolean logic, specifically AND, OR, XOR and NOT&lt;/li&gt;&lt;li&gt;Have a general understanding of how things are stored on a computer&lt;/li&gt;&lt;li&gt;Be able to use a web browser and perform effective internet research&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;K - 2nd grade&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;During these years, the student should develop basic computer interaction skills.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Mouse: moving, pointing, clicking, selecting, double-clicking, dragging, ...&lt;/li&gt;&lt;li&gt;Keyboard: basic typing skills,&amp;nbsp;&lt;/li&gt;&lt;li&gt;Parts: name the various parts of a computer&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;3rd grade&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Focus on using computers as tools.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Productivity apps: word processor, spreadsheet&lt;/li&gt;&lt;li&gt;Keyboard shortcuts for common operations: (cut/copy/paste/undo, find/search)&lt;/li&gt;&lt;li&gt;Understand file types: txt, doc, gif, png, mp3, avi, ...&lt;/li&gt;&lt;li&gt;Understand where files are stored: locally, on file server, in cloud&lt;/li&gt;&lt;li&gt;Maintaining an account: passwords, logging in/out, simple security&lt;/li&gt;&lt;li&gt;Web browser - using and navigating&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;4th grade&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;More work with using computers as tools, but start building the foundation for&lt;br /&gt;computer lessons in later years.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Email - etiquette, subject lines, spam &amp;amp; chain-mail, attachments, privacy, To/Cc/Bcc&lt;/li&gt;&lt;li&gt;How to perform internet research. How to evaluate a website's reputable.&lt;/li&gt;&lt;li&gt;Ethics: copyright, fair use and giving appropriate credit&lt;/li&gt;&lt;li&gt;Web browser - uploading/downloading/sharing files&lt;/li&gt;&lt;li&gt;Security: viruses, worms, trojan horses&lt;/li&gt;&lt;li&gt;Security: passwords, privacy&lt;/li&gt;&lt;li&gt;Number systems: roman numerals, tally marks, zero&lt;/li&gt;&lt;li&gt;Number systems: positional number systems (decimal, octal, binary, hexadecimal)&lt;/li&gt;&lt;li&gt;Curriculum-Link (Math): number systems&lt;/li&gt;&lt;li&gt;Curriculum-Link (Math): plotting x-y values&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;5th grade&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Less focus on how to use computers, and more focus on what's going on behind the&lt;br /&gt;scenes.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;How data is encoded on computers (text/char-sets/unicode, colors/rgb/hsl, digitizing analog/digital, audio, video, ...)&lt;/li&gt;&lt;li&gt;Compression/decompression of computer files (zip)&lt;/li&gt;&lt;li&gt;Security: encryption&lt;/li&gt;&lt;li&gt;Difference between text editors and word processors.&lt;/li&gt;&lt;li&gt;Privacy: browser history, cookies, caches&lt;/li&gt;&lt;li&gt;Privacy: what happens when personal info (or password) is comprimised&lt;/li&gt;&lt;li&gt;HTML/CSS: create a set of linked webpages (on local machine) using a text editor.&lt;/li&gt;&lt;li&gt;Learn how to structure a project with many (HTML/CSS) files.&lt;/li&gt;&lt;li&gt;Boolean logic: AND, OR, XOR, NOT&lt;/li&gt;&lt;li&gt;Curriculum-Link (Science): colors and light, additive/subtractive color models&lt;/li&gt;&lt;li&gt;Curriculum-Link (Math): prime numbers (encryption)&lt;/li&gt;&lt;/ul&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Middle School&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;During middle school, the students should be introduced to programming&amp;nbsp;and learn how computers work. Optionally, they should learn about electronics&amp;nbsp;and robotics (although these lessons tend to require extra equipment, so&amp;nbsp;it's not always possible to include them).&lt;br /&gt;&lt;br /&gt;At the end of 8th grade, students should:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Understand why computers use binary&lt;/li&gt;&lt;li&gt;Have been exposed to the "big ideas" that de-mystify how computers work:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;How computers perform computation&lt;/li&gt;&lt;li&gt;How computers remember things&lt;/li&gt;&lt;li&gt;How computers perform actions in sequence&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Know how to write simple programs in at least 2 different programming languages&lt;/li&gt;&lt;li&gt;Be able to construct a small electronic project on a breadboard&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;6th grade&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;In 6th grade, the students should be introduced to all the basic programming&amp;nbsp;concepts: variables, flow control, functions, arrays, and so on.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Visual programming: Scratch or variant - variables, flow control&lt;/li&gt;&lt;li&gt;Choose two languages from: [Python, Javascript, Processing] - functions, arrays&lt;/li&gt;&lt;li&gt;Interact with the computer using the shell/cmd-prompt&lt;/li&gt;&lt;li&gt;Wildcards and simple regular expressions&lt;/li&gt;&lt;li&gt;Internet: How the internet works (to route traffic, overview of DNS)&lt;/li&gt;&lt;li&gt;Privacy: where your internet 'footsteps' are logged (routers, ISPs)&lt;/li&gt;&lt;li&gt;Security: botnets and why you should apply security patches&lt;/li&gt;&lt;li&gt;Algorithms: searching, sorting&lt;/li&gt;&lt;li&gt;Curriculum-Link (Science): Write spreadsheet functions for data analysis&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;7th grade&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Continue building programming skills by expanding into more languages. Introduce basic electronics and explain how computers work.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Choose remaining language from: [Python, Javascript, Processing]&lt;/li&gt;&lt;li&gt;Electricity: very simplified - focus on Voltage - just enough to understand transistors&lt;/li&gt;&lt;li&gt;Transistors: what they are and how they work (CMOS)&lt;/li&gt;&lt;li&gt;Logic gates: built from transistors (NOT, NAND, NOR)&lt;/li&gt;&lt;li&gt;How computers calculate (addition using logic gates)&lt;/li&gt;&lt;li&gt;How computers remember (memory latches using logic gates)&lt;/li&gt;&lt;li&gt;Negative numbers in binary (2's complement)&lt;/li&gt;&lt;li&gt;Basic digital electronics with Arduino (breadboards, LEDs, servos, ...)&lt;/li&gt;&lt;li&gt;Optional: Robotics (if you have the resources)&lt;/li&gt;&lt;li&gt;Curriculum-Link (Science): Electricity (done properly with V=IR, ...)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;8th grade&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;More advanced programming and managing larger projects.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Java (using Greenfoot or BlueJ)&lt;/li&gt;&lt;li&gt;Do at least one "large" programming project&lt;/li&gt;&lt;li&gt;Project management: divide large task in to smaller subtasks&lt;/li&gt;&lt;li&gt;How memory is allocated (stacks, heaps, fragmentation)&lt;/li&gt;&lt;li&gt;How functions are called (call stack, recursion)&lt;/li&gt;&lt;li&gt;Data encapsulation, classes and inheritance&lt;/li&gt;&lt;li&gt;Regular expressions: grouping and matching, greedy vs. non-greedy&lt;/li&gt;&lt;li&gt;Floating-point numbers: representation and implication for scientific calculations&lt;/li&gt;&lt;li&gt;More data structures and algorithms: stacks, linked lists, hash-tables, trees, graphs, ...&lt;/li&gt;&lt;li&gt;Curriculum-Link (Math): Trigonometry&lt;/li&gt;&lt;li&gt;Curriculum-Link (Science): Using regexps to process data files&lt;/li&gt;&lt;li&gt;Curriculum-Link (Science): Gravity, acceleration (for jumping in a game)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;div style="font-style: italic;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4701668830837946147-4830784108660229734?l=cse4k12.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cse4k12.blogspot.com/feeds/4830784108660229734/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4701668830837946147&amp;postID=4830784108660229734' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/4830784108660229734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/4830784108660229734'/><link rel='alternate' type='text/html' href='http://cse4k12.blogspot.com/2011/09/k-8-curriculum-overview-for-computer.html' title='K-8 curriculum overview for computer skills'/><author><name>Gary Kacmarcik</name><uri>http://www.blogger.com/profile/06251485476040169610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4701668830837946147.post-3513824576761184011</id><published>2011-06-05T09:56:00.000-07:00</published><updated>2011-06-05T09:56:53.872-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AP'/><title type='text'>A Computer Scientist's Lament</title><content type='html'>Here are a couple of recent articles on learning CS that I found interesting because, rather than focusing on the classroom setting or enrollment numbers, they talked about the challenges facing a motivated self-study student.&lt;br /&gt;&lt;br /&gt;In Andrew Binstock's "&lt;a href="http://drdobbs.com/tools/229700183"&gt;Lax Language Tutorials&lt;/a&gt;", he discusses the current state of programming language tutorials. In summary, most books being published appear to be confused between an introductory tutorial and a treatise on every feature of the language. This leads to absurdly large volumes that may be a bargain in terms of dollars-per-page, but are overwhelming for anyone who just wants to get started and learn the basics.&lt;br /&gt;&lt;br /&gt;To paraphrase Messrs. Twain and Pascal:&lt;br /&gt;&lt;blockquote&gt;"I didn't have time to write a concise programming language tutorial, so I wrote this bloated monstrosity instead."&lt;/blockquote&gt;James Somers' article in &lt;a href="http://www.theatlantic.com/"&gt;The Atlantic&lt;/a&gt;, "&lt;a href="http://www.theatlantic.com/technology/print/2011/06/how-i-failed-failed-and-finally-succeeded-at-learning-how-to-code/239855/"&gt;How I Failed, Failed, and Finally Succeeded at Learning How to Code&lt;/a&gt;", describes the issues he had with these language tutorials:&lt;br /&gt;&lt;blockquote&gt;For a while I thought I didn't have the right kind of brain for programming. Maybe I needed to be better at math. Maybe I needed to be smarter.&lt;br /&gt;&lt;br /&gt;But it turns out that the people trying to teach me were just doing a bad job. Those books that dragged me through a series of structured principles were just bad books. I should have ignored them. I should have just played.&lt;/blockquote&gt;And then continues with an indictment of the AP's CS curriculum:&lt;br /&gt;&lt;blockquote&gt;Nobody misses that fact more egregiously than the American College Board, the folks responsible for setting the AP Computer Science high school curriculum. The AP curriculum ought to be a model for how to teach people to program. Instead it's an example of how something intrinsically amusing can be made into a lifeless slog.&lt;/blockquote&gt;He also makes reference to Paul Lockhart's &lt;a href="http://www.maa.org/devlin/LockhartsLament.pdf"&gt;A Mathematician's Lament&lt;/a&gt; (which comments on how uninspiring most math instruction has become) and draws comparisons between math and CS instruction.&lt;br /&gt;&lt;br /&gt;Somers persevered with his attempts at programming and found inspiration in the programming website &lt;a href="http://projecteuler.net/"&gt;Project Euler&lt;/a&gt;, but it's easy to imagine that many of these motivated students simply give up, thinking that programming is too hard for them.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4701668830837946147-3513824576761184011?l=cse4k12.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cse4k12.blogspot.com/feeds/3513824576761184011/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4701668830837946147&amp;postID=3513824576761184011' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/3513824576761184011'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/3513824576761184011'/><link rel='alternate' type='text/html' href='http://cse4k12.blogspot.com/2011/06/computer-scientists-lament.html' title='A Computer Scientist&apos;s Lament'/><author><name>Gary Kacmarcik</name><uri>http://www.blogger.com/profile/06251485476040169610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4701668830837946147.post-6807884780670748865</id><published>2011-05-22T07:40:00.000-07:00</published><updated>2011-05-22T07:40:22.856-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VisualProgramming'/><category scheme='http://www.blogger.com/atom/ns#' term='Arduino'/><title type='text'>Minibloq ≈ Visual Programming + Arduino</title><content type='html'>&lt;a href="http://minibloq.org/"&gt;Minibloq&lt;/a&gt; is a &lt;a href="http://www.kickstarter.com/projects/791396812/minibloq-graphical-programming-environment-for-ard"&gt;Kickstarter project&lt;/a&gt; to create a freely-available visual programming environment for the Arduino - something like Scratch for Arduino programming.&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder="0" height="410px" src="http://www.kickstarter.com/projects/791396812/minibloq-graphical-programming-environment-for-ard/widget/video.html" width="480px"&gt;&lt;/iframe&gt;&lt;br /&gt;The good news is that they've already reached their funding goal so they can go ahead with this project.  I'm looking forward to playing with this later this year.&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder="0" height="380px" src="http://www.kickstarter.com/projects/791396812/minibloq-graphical-programming-environment-for-ard/widget/card.html" width="220px"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4701668830837946147-6807884780670748865?l=cse4k12.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cse4k12.blogspot.com/feeds/6807884780670748865/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4701668830837946147&amp;postID=6807884780670748865' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/6807884780670748865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/6807884780670748865'/><link rel='alternate' type='text/html' href='http://cse4k12.blogspot.com/2011/05/minibloq-visual-programming-arduino.html' title='Minibloq ≈ Visual Programming + Arduino'/><author><name>Gary Kacmarcik</name><uri>http://www.blogger.com/profile/06251485476040169610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4701668830837946147.post-1014261121901161895</id><published>2011-04-13T13:30:00.000-07:00</published><updated>2011-04-13T13:30:52.255-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='NYT'/><title type='text'>Arduinos in Museums</title><content type='html'>&lt;div&gt;New York Times: &lt;a href="http://www.nytimes.com/2011/03/17/arts/design/arduinos-provide-interactive-exhibits-for-about-30.html"&gt;An Interactive Exhibit for About $30&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;Over the past few years, museums have switched from expensive general-purpose computers to cheap (~$30) &lt;a href="http://arduino.cc/"&gt;Arduino &lt;/a&gt;microcontrollers to run the exhibits:&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: georgia, 'times new roman', times, serif; font-size: 15px; line-height: 22px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: georgia, 'times new roman', times, serif; font-size: 15px; line-height: 22px;"&gt;“Hackers and geeks have been doing this for years, building all sorts of cool robots and interactive experiences, but now it’s become so simple and inexpensive that artists and designers have adopted it, too.”&lt;/span&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: georgia, 'times new roman', times, serif; font-size: 15px; line-height: 22px;"&gt;...and students.&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: georgia, 'times new roman', times, serif; font-size: 15px; line-height: 22px;"&gt;“The two most important introductions for art in the past 20 years have been the Arduino and Processing,”&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: georgia, 'times new roman', times, serif; font-size: 15px; line-height: 22px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: georgia, 'times new roman', times, serif; font-size: 15px; line-height: 22px;"&gt;explained Paola Antonelli, senior curator in the Department of Architecture and Design at the Museum of Modern Art.&lt;/span&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: georgia, 'times new roman', times, serif;"&gt;&lt;span class="Apple-style-span" style="font-size: 15px; line-height: 22px;"&gt;Sounds like an endorsement of &lt;a href="http://processing.org/"&gt;Processing &lt;/a&gt;for Intro to CS classes.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4701668830837946147-1014261121901161895?l=cse4k12.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cse4k12.blogspot.com/feeds/1014261121901161895/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4701668830837946147&amp;postID=1014261121901161895' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/1014261121901161895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/1014261121901161895'/><link rel='alternate' type='text/html' href='http://cse4k12.blogspot.com/2011/04/arduinos-in-museums.html' title='Arduinos in Museums'/><author><name>Gary Kacmarcik</name><uri>http://www.blogger.com/profile/06251485476040169610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4701668830837946147.post-5639037920628795218</id><published>2011-04-03T16:19:00.000-07:00</published><updated>2011-04-03T16:19:10.787-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cse4k12Resources'/><category scheme='http://www.blogger.com/atom/ns#' term='Materials'/><title type='text'>How to publish your teaching materials</title><content type='html'>During this past SIGCSE, I was involved in a couple of discussions about how one finds CS teaching materials on the web. At one point, the conversation turned to how one goes about &lt;b&gt;&lt;i&gt;publishing&lt;/i&gt;&lt;/b&gt;&amp;nbsp;these materials.&lt;br /&gt;&lt;br /&gt;The background for this discussion was &lt;a href="http://base-sixteen.org/"&gt;base-sixteen.org&lt;/a&gt; - a website that I'm working on to catalog (and organize, somewhat) the CS teaching resources that are available on the internet. The question was whether or not this should be a "catalog" (with links to resources that were hosted elsewhere) or a "repository" (which hosts the material on the same site).&lt;br /&gt;&lt;br /&gt;There are pros and cons to each approach:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Because a repository keeps a local copy, the resource will still be available even if the original site goes away. However, this local copy will be out-of-date if the original site is updated (unless the repository is updated as well).&lt;/li&gt;&lt;li&gt;A catalog has the opposite problem. It will always point to the most recent version, but if the site goes away then the resource will no longer be available (unless it was cached elsewhere).&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;There are other issues as well, such as whether or not a repository has the legal right to host some material, but the main concern in this discussion was for dealing with materials that are here-today, gone-tomorrow.&lt;br /&gt;&lt;br /&gt;This is a particular problem for things like syllabuses and lesson plans because these materials are often hosted on a university (or college, or high school) website which is managed by someone other than the instructor creating the materials. &amp;nbsp;When the new school year rolls along, the webmaster might decide to clean out all the old "outdated" files. Even if the teacher is in control of their part of the website, when they move on or switch schools the materials will go away with the person (hopefully to reappear somewhere else, but the link is still dead).&lt;br /&gt;&lt;br /&gt;There are a number of different approaches for dealing with this, but I was interested primarily in the "webmaster deleted my files" problem because this is something that can usually be avoided by simply publishing the documents on the web yourself.&lt;br /&gt;&lt;br /&gt;Of course, creating a website to host a few documents is way too much money and work, but there are far easier (and free!) ways to be in control of your published documents. Companies like &lt;a href="https://www.dropbox.com/"&gt;DropBox&lt;/a&gt; and &lt;a href="https://spideroak.com/"&gt;SpiderOak&lt;/a&gt;&amp;nbsp;allow you to host and share documents in the cloud, or you could publish directly from web-document editors like &lt;a href="https://docs.google.com/"&gt;Google Docs&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I created a small document that summarizes some of the ways you can publish your documents on the web:&lt;br /&gt;&lt;br /&gt;&lt;a href="https://docs.google.com/document/pub?id=1QRBBrU9ac8A0SSkhx0HKTtvj21Ja-ynMetY2rj_0hcQ"&gt;https://docs.google.com/document/pub?id=1QRBBrU9ac8A0SSkhx0HKTtvj21Ja-ynMetY2rj_0hcQ&lt;/a&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;(Isn't that a great URL? Well, that's one of the downsides of having someone else host your material ^_^)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It's published as a Google Doc (rather than in this blog post) so that I can edit and update it as I discover new services. If you have a preferred way of publishing that I don't mention, please let me know so that I can update the document.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4701668830837946147-5639037920628795218?l=cse4k12.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cse4k12.blogspot.com/feeds/5639037920628795218/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4701668830837946147&amp;postID=5639037920628795218' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/5639037920628795218'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/5639037920628795218'/><link rel='alternate' type='text/html' href='http://cse4k12.blogspot.com/2011/04/how-to-publish-your-teaching-materials.html' title='How to publish your teaching materials'/><author><name>Gary Kacmarcik</name><uri>http://www.blogger.com/profile/06251485476040169610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4701668830837946147.post-3130953967270029516</id><published>2011-04-01T22:11:00.000-07:00</published><updated>2011-04-01T22:11:18.195-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CSinK12'/><title type='text'>"Thankfully, for most people, that's a pretty low bar."</title><content type='html'>In my opinion, one of the best April Fool's Day pranks this year was Think Geek's &lt;a href="http://www.thinkgeek.com/interests/looflirpa/e8bb/"&gt;PLAYMOBIL™ Apple Store Playset&lt;/a&gt;. I don't what it says about me that I would probably buy one if it was actually an item for sale.&lt;br /&gt;&lt;br /&gt;But the reason why I'm posting this here is because they also made a &lt;a href="http://www.youtube.com/watch?v=oSU3ijxkp8Y"&gt;fake Apple announcement video&lt;/a&gt; for this product. &amp;nbsp;It's 2min 22sec long, but the money quote in this video comes around 1:29:&lt;br /&gt;&lt;blockquote&gt;"Frankly, if something exceeds your ability to understand&amp;nbsp;how it works, it sort of becomes magical.&amp;nbsp;Thankfully, for most people, that's a pretty low bar."&lt;/blockquote&gt;&lt;blockquote&gt;Matthew Chwat — Graphic Design Specialist&lt;/blockquote&gt;Now, this is funny in the video because they're being over-the-top elitist, but the quote also has a "It's funny because it's true" quality to it.&lt;br /&gt;&lt;br /&gt;In particular, it reminded me of &lt;a href="http://en.wikipedia.org/wiki/Clarke's_three_laws"&gt;Arthur C. Clarke's 3rd law&lt;/a&gt;, something that I often quote when discussing how&amp;nbsp;woefully inadequate our education system is at teaching students about the basics of how technology works:&lt;br /&gt;&lt;blockquote&gt;"Any sufficiently advanced technology is indistinguishable from magic."&lt;/blockquote&gt;Beyond simply teaching students how to program, we also need to be showing them how computers work at a basic level. I do this in my class by showing them how transistors work, how logic gates can be combined to add numbers, and I also have the students program and build simple electronics projects, often with a microcontroller like an&amp;nbsp;&lt;a href="http://arduino.cc/"&gt;Arduino&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I don't expect these students to become computer engineers, but I do want them to have a general understanding of what's going on inside the "magical" boxes that surround them. This is no different that what we do for other disciplines like Chemistry — we teach the Bohr model of the atom and the periodic table of the elements even though only a very small percentage of students will actually become chemists and need to know this information. We do this because we feel it's good for students to have a basic understanding of the world around us, even if they don't go on and pursue the subject in more depth.&lt;br /&gt;&lt;br /&gt;Well, the same reasoning applies to computer technology as well. Especially as we're seeing more and more of it in our lives.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4701668830837946147-3130953967270029516?l=cse4k12.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cse4k12.blogspot.com/feeds/3130953967270029516/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4701668830837946147&amp;postID=3130953967270029516' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/3130953967270029516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/3130953967270029516'/><link rel='alternate' type='text/html' href='http://cse4k12.blogspot.com/2011/04/thankfully-for-most-people-thats-pretty.html' title='&quot;Thankfully, for most people, that&apos;s a pretty low bar.&quot;'/><author><name>Gary Kacmarcik</name><uri>http://www.blogger.com/profile/06251485476040169610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4701668830837946147.post-8788139318164239328</id><published>2011-03-18T20:09:00.000-07:00</published><updated>2011-03-18T20:09:22.212-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CSinK12'/><category scheme='http://www.blogger.com/atom/ns#' term='ComputationalThinking'/><title type='text'>Using CCG cards to teach computer science</title><content type='html'>I published a new activity for teaching computer science searching/sorting concepts. It's designed for middle school students, although there's no reason why it wouldn't work for upper elementary or high school students.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://docs.google.com/document/pub?id=1N_yXU45Qvyk6dOPG-a-DuqsmIyjPLnx64lyE3YCjvBc&amp;amp;pli=1"&gt;Using CCG cards to teach searching/sorting&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It introduces algorithms for searching and sorting by using Collectible Card Game (CCG) cards – like Magic the Gathering or Pokemon cards – as objects for the students to search/sort.&lt;br /&gt;&lt;br /&gt;An advantage of using these cards is that they are easy to hold and don't take a lot of room, so each student can easily manage 10 cards on a standard school desk. And the activity scales to more or less cards, or students can work in groups if needed. The cards are also cheap (or free) if you're willing to look around, but you can always just go to the store and buy some (convenient if you're&amp;nbsp;traveling&amp;nbsp;and left your teaching props at home).&lt;br /&gt;&lt;br /&gt;I've run this activity in a number of classes in different schools and it's a great way to demonstrate how these algorithms work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4701668830837946147-8788139318164239328?l=cse4k12.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cse4k12.blogspot.com/feeds/8788139318164239328/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4701668830837946147&amp;postID=8788139318164239328' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/8788139318164239328'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/8788139318164239328'/><link rel='alternate' type='text/html' href='http://cse4k12.blogspot.com/2011/03/using-ccg-cards-to-teach-computer.html' title='Using CCG cards to teach computer science'/><author><name>Gary Kacmarcik</name><uri>http://www.blogger.com/profile/06251485476040169610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4701668830837946147.post-5644297179737503426</id><published>2011-03-18T12:28:00.000-07:00</published><updated>2011-03-18T12:28:05.133-07:00</updated><title type='text'>Google engineers visit local schools to promote CS</title><content type='html'>&lt;a href="http://googleblog.blogspot.com/2011/03/national-engineers-week-2011-classroom.html"&gt;Official Google Blog: National Engineers Week 2011: Classroom visits inspire students to pursue CS&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4701668830837946147-5644297179737503426?l=cse4k12.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://googleblog.blogspot.com/2011/03/national-engineers-week-2011-classroom.html' title='Google engineers visit local schools to promote CS'/><link rel='replies' type='application/atom+xml' href='http://cse4k12.blogspot.com/feeds/5644297179737503426/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4701668830837946147&amp;postID=5644297179737503426' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/5644297179737503426'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/5644297179737503426'/><link rel='alternate' type='text/html' href='http://cse4k12.blogspot.com/2011/03/google-engineers-visit-local-schools-to.html' title='Google engineers visit local schools to promote CS'/><author><name>Gary Kacmarcik</name><uri>http://www.blogger.com/profile/06251485476040169610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4701668830837946147.post-8068466308409661752</id><published>2011-03-18T12:26:00.000-07:00</published><updated>2011-03-18T12:26:08.204-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CSinK12'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>National Engineers Week outreach - Having engineers visit local schools</title><content type='html'>Recent K-12 outreach where Google engineers go out and visit local schools and talk about computer science:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://googleblog.blogspot.com/2011/03/national-engineers-week-2011-classroom.html"&gt;http://googleblog.blogspot.com/2011/03/national-engineers-week-2011-classroom.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Yes, that's my byline on the blog post. It was a lot of fun doing these visits (although it required a lot of prep-work in advance to get things set up).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4701668830837946147-8068466308409661752?l=cse4k12.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cse4k12.blogspot.com/feeds/8068466308409661752/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4701668830837946147&amp;postID=8068466308409661752' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/8068466308409661752'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/8068466308409661752'/><link rel='alternate' type='text/html' href='http://cse4k12.blogspot.com/2011/03/national-engineers-week-outreach-having.html' title='National Engineers Week outreach - Having engineers visit local schools'/><author><name>Gary Kacmarcik</name><uri>http://www.blogger.com/profile/06251485476040169610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4701668830837946147.post-9169260113662237085</id><published>2011-02-17T11:51:00.000-08:00</published><updated>2011-02-17T11:51:45.481-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='STEM'/><category scheme='http://www.blogger.com/atom/ns#' term='CSinK12'/><title type='text'>CS education is important for scientists</title><content type='html'>Philip Wadler's recent blog post "&lt;a href="http://wadler.blogspot.com/2011/02/scientific-programming-does-not-compute.html"&gt;Scientific programming does not compute&lt;/a&gt;" draws attention to a Nature article from last October : "&lt;a href="http://www.nature.com/news/2010/101013/full/467775a.html"&gt;...Error ...why scientific programming does not compute&lt;/a&gt;" (Nature 467, pp.775-777 - 14 October 2010)&lt;br /&gt;&lt;br /&gt;This article has some wonderful examples of why CS education is important to students interested in pursuing a career in the sciences.&lt;br /&gt;&lt;blockquote&gt;Researchers are spending more and more time writing computer software to model biological structures, simulate the early evolution of the Universe and analyze past climate data, among other topics.&lt;/blockquote&gt;and&lt;br /&gt;&lt;blockquote&gt;As a general rule, researchers do not test or document their programs rigorously, and they rarely release their codes, making it almost impossible to reproduce and verify published results generated by scientific software, say computer scientists.&lt;/blockquote&gt;Although I imagine that computer scientists probably said that they rarely release their "code". Why is it so difficult for writers (and Hollywood) to understand that computer programming "code" is a &lt;i&gt;mass noun&lt;/i&gt; (like "water"), and not a &lt;i&gt;count noun&lt;/i&gt; (like "pumpkin"). I can only guess that people are confused by things like "secret codes" and think computer code is the same. Anyway, I digress...&lt;br /&gt;&lt;br /&gt;So continuing with choice quotes from the article, a Toronto-based computer scientists named Greg Wilson conducted an online survey about the programming habits of scientists back in 2008.&amp;nbsp;He received nearly 2000 responses and reported the following results:&lt;br /&gt;&lt;blockquote&gt;45% said scientists spend more time today developing software than five years ago.&lt;/blockquote&gt;&lt;blockquote&gt;38% of scientists spend at least one fifth of their time developing software.&lt;/blockquote&gt;&lt;blockquote&gt;Only 47% of scientists have a good understanding of software testing.&amp;nbsp;&lt;/blockquote&gt;&lt;blockquote&gt;Only 34% of scientists think that formal training in developing software is important..&lt;/blockquote&gt;Wilson also added:&lt;br /&gt;&lt;blockquote&gt;"There are terrifying statistics showing that almost all of what scientists know about coding is self-taught," says Wilson. "They just don't know how bad they are."&lt;/blockquote&gt;Why does this matter? Well,. this lack of proper programming skills can lead to data being misinterpreted and incorrect results being published:&lt;br /&gt;&lt;blockquote&gt;As a result, codes &lt;i&gt;[grrr...]&lt;/i&gt; may be riddled with tiny errors that do not cause the program to break down, but may drastically change the scientific results that it spits out.&lt;/blockquote&gt;The article then provides a number of interesting real-world examples:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A structural biology group at a research center needed to retract 5 previously published papers when they found a bug in the program that analyzed their data.&lt;/li&gt;&lt;li&gt;A computational biologist wrote some code based on assumptions that were valid for his work, but another group re-used his code in a different scenario where these assumptions did not hold true.&lt;/li&gt;&lt;li&gt;The code used to analyze data from the Large Hadron Collider is so complex and convoluted that it is difficult for new researchers to come in and test or modify the code&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;What does the article suggest we do about this problem?&lt;br /&gt;&lt;blockquote&gt;In the long tern, though, [software developer Nick] Barnes says that there needs to be a change in the way that science students are trained.&lt;/blockquote&gt;and&lt;br /&gt;&lt;blockquote&gt;Science administrators also need to value programming skills more highly, says David Gavaghan, a computational biologist at the University of Oxford, UK.&lt;/blockquote&gt;In some sense, the article is calling for better &lt;i&gt;software engineering&lt;/i&gt; skills (including documenting and testing) rather than raw programming skills. But the programming fundamentals need to come first for everyone.&lt;br /&gt;&lt;br /&gt;The crisis in K-12 computer science education is really a crisis for all the sciences.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4701668830837946147-9169260113662237085?l=cse4k12.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cse4k12.blogspot.com/feeds/9169260113662237085/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4701668830837946147&amp;postID=9169260113662237085' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/9169260113662237085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/9169260113662237085'/><link rel='alternate' type='text/html' href='http://cse4k12.blogspot.com/2011/02/cs-education-is-important-for.html' title='CS education is important for scientists'/><author><name>Gary Kacmarcik</name><uri>http://www.blogger.com/profile/06251485476040169610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4701668830837946147.post-3854334070193732180</id><published>2011-01-31T13:25:00.000-08:00</published><updated>2011-01-31T13:25:37.536-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='STEM'/><category scheme='http://www.blogger.com/atom/ns#' term='CSinK12'/><title type='text'>Comments for K-12 STEM education</title><content type='html'>&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Today is the deadline for submitting comments to the &lt;a href="http://www.nitrd.gov/pcast-2010/report/nitrd-program/comments/"&gt;NITRD request for information&lt;/a&gt;&amp;nbsp;on strategies for meeting the goals set out in &lt;/span&gt;the recent PCAST report: "&lt;a class="cremed" href="http://www.whitehouse.gov/sites/default/files/microsites/ostp/pcast-nitrd-report-2010.pdf" style="color: #0000cc;" target="_blank"&gt;Designing a Digital Future: Federally Funded Research and Development in Networking and Information Technology&lt;/a&gt;" (Dec 2010).&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The first 2 comment sections relate to particular industries (health case, energy, transportation, ...) or R&amp;amp;D, but the third section asks specifically about strategies for incorporating computer science into K-12 STEM education.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;The rest of this post contains the comments that I submitted:&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;3.     The PCAST report calls for fundamental changes in K-12 STEM education in the United States, including the incorporation of computer science (CS) as an essential component.&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;a.    What CS concepts are important to effective elementary, secondary, and post-secondary curricula? Among these concepts, which are commonly found in curricula today? Which are missing?&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;Elementary: (3rd-5th)&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Currently, elementary schools are likely to cover "logic grid" puzzles and syllogisms, but not much more. Ideally, they should include at least the following:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Number systems (specifically binary, octal and hexadecimal since these are the ones that matter for computer science)&lt;/li&gt;&lt;li&gt;Boolean logic (and, or, xor, not): boolean variables and expressions&lt;/li&gt;&lt;li&gt;Introduce the concept of simple variables (integer) here and relate to boolean values (x = 3 is either true or false)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Including a variety of different logic puzzles (Sudoku and similar) would also be beneficial.&lt;br /&gt;&lt;br /&gt;In addition, elementary school should also cover the skills necessary to use a computer effectively and perform common tasks (word processing, web search, ...). This is necessary so that they are comfortable using computers when we introduce programming in later grades.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;Middle School: (6th-8th)&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;In these grades, students should focus on understanding how computers work and learning how to write a basic program.&lt;br /&gt;&lt;br /&gt;As part of "understanding how computers work", we need to demystify the operation of the computer. This is important because learning how to program doesn't give a complete picture of how computers operate. This section should include the following:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Basic file formats (show how text, graphics, music and video are stored on a computer; explain difference between bitmap and vector graphics, and text vs. rich-text formats)&lt;/li&gt;&lt;li&gt;How color is encoded (RGB encoding, compare with primary colors they were taught in elementary school)&lt;/li&gt;&lt;li&gt;How computers work (basic description of how computers perform logic and math operations)&amp;nbsp;&lt;/li&gt;&lt;li&gt;Basic boolean algebra (DeMorgan's&amp;nbsp;law, re-writing expressions)&lt;/li&gt;&lt;li&gt;Simple electronics (hardwire or programmatically control an LED)&lt;/li&gt;&lt;li&gt;Internet: What happens when a website is visited? How does the internet route traffic?&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;For "how to write a basic program":&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Programming constructs: variables, control flow, functions, objects, ... (exact set varies depending on languages chosen)&lt;/li&gt;&lt;li&gt;Write simple programs (see below)&lt;/li&gt;&lt;li&gt;Explore and contrast various general-purpose vs. special-purpose languages&lt;/li&gt;&lt;li&gt;Using wildcards and regular expressions (in a programming language and in a shell/cmd prompt)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;When having the student write simple programs, it is important that the core assignments are interesting and engaging. The best way to accomplish this is by having the project require significant creative input from the student. For example, creative writing for a text adventure or drawings for a 2D game. This approach gets the student to invest in the success of the project (since it's their story or artwork), so they are more motivated to learn how to make &lt;i&gt;their&lt;/i&gt;&amp;nbsp;characters work they way &lt;i&gt;they&lt;/i&gt;&amp;nbsp;want.&lt;br /&gt;&lt;br /&gt;Note that rather than arguing about &lt;i&gt;which&lt;/i&gt;&amp;nbsp;programming language to teach, we should focus on introducing students to a &lt;i&gt;number of different languages&lt;/i&gt;&amp;nbsp;(at least 2 or 3). This is useful because each language has different strengths and weaknesses, and we don't want students to graduate thinking there is only one way to program. Frankly, I would expect the languages chosen to vary somewhat between school systems and the change over time.&lt;br /&gt;&lt;br /&gt;In addition, in these grades it is also important to start teaching students about electronic privacy, security and information sharing. It makes sense to teach these subjects in the context of computer science and to give the students programming assignments that (directly or indirectly) explore these topics.&lt;br /&gt;&lt;br /&gt;The goal should be for all 8th graders to graduate knowing that they (1) are capable of writing (simple) computer programs, and (2) have a basic understanding of how computers work.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;High School: (9th-12th)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;High school should introduce advanced programming topics (algorithms and data structures) just like high schools offer advanced chemistry and physics classes. Beyond 9th or 10th grade, these classes don't have to be required for all students, but they should be required for students interested in a science and technology track.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Overall&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Overall, we should try to link CS projects to other subjects whenever it makes sense: We can motivate learning about trigonometry by showing how it is used in games to calculate distance and to detect (bounding sphere) collisions. We can talk about the math/physics behind gravity and acceleration when we want to have a character jump realistically on the screen. We can demonstrate the additive color properties of light and discuss prisms and rainbows when we introduce RGB color.&lt;br /&gt;&lt;br /&gt;Once we have CS as a core subject, these links will be easier to make and will lead to a much richer learning environment for the students.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;b.    What do teachers need (including preparation and training, tools, and resources) to be able to deliver CS education effectively?&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Training and ready-to-use classroom materials are key for all grade levels. Any materials that are created need to be supplemented with instructions showing how to use it properly in the classroom. Two types of instructors should be targetted here: teachers who know how to manage a class but are not very familiar with programming, and teachers who know how to program but are not familiar with teaching strategies and classroom management. These two groups are likely to make up the bulk of teachers during the first years when we introduce CS to the classroom.&lt;br /&gt;&lt;br /&gt;There will also need to be programs offered for teachers to learn how to teach this material. Fortunately, most (if not all) school systems require regular teacher training for "clock hours". This is the perfect venue for reaching the teachers and bringing them up to speed with the material.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;c.    What factors are important in promoting student interest in CS?&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;I discussed some factors in the earlier sections, but the most important factor is simply that computer science needs to be included as part of the core K-12 curriculum.&lt;br /&gt;&lt;br /&gt;An example which underscores the importance of this happened recently to a friend of mine. His daughter (age 12) had already taken a programming class or two and she was interested in participating in an after-school robotics class. However, even though she was interested, she decided not to sign up because none of her friends were planning to take the class and she didn't want to be "alone". Whenever I think about this, I wonder how many other students are missing out because of (even minimal) social pressures, and how many of her friends would have discovered that this was a subject that was interesting to them, if only they had been forced to try.&lt;br /&gt;&lt;br /&gt;And remember, this was for someone lucky enough to have encouraging parents and teachers willing to organize this after-school class. Most students don't have those advantages.&lt;br /&gt;&lt;br /&gt;I'm tempted to say that adding CS to the core is the &lt;i&gt;only&lt;/i&gt;&amp;nbsp;important factor and that it (almost) doesn't matter what we teach or how we teach it. Once we make CS a core requirement, everything else will (by necessity) follow. Of course, it's clearly better to teach it properly, but as long as we're willing to iterate and improve, even a less-than-perfect rollout will be of great benefit to the students.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4701668830837946147-3854334070193732180?l=cse4k12.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cse4k12.blogspot.com/feeds/3854334070193732180/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4701668830837946147&amp;postID=3854334070193732180' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/3854334070193732180'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/3854334070193732180'/><link rel='alternate' type='text/html' href='http://cse4k12.blogspot.com/2011/01/comments-for-k-12-stem-education.html' title='Comments for K-12 STEM education'/><author><name>Gary Kacmarcik</name><uri>http://www.blogger.com/profile/06251485476040169610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4701668830837946147.post-1349567438864138927</id><published>2010-12-05T14:35:00.000-08:00</published><updated>2010-12-05T14:35:43.080-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TeachingCS'/><category scheme='http://www.blogger.com/atom/ns#' term='CMOS'/><category scheme='http://www.blogger.com/atom/ns#' term='Transistors'/><title type='text'>Materials for teaching transistors and logic gates</title><content type='html'>As part of my computer class that I teach to upper-elementary/middle-school students, I have a section on transistors and logic gates. The goal is to introduce the "atoms" (transistors) and "molecules" (logic gates) that are used in digital computation, and the topic ends with the students learning how computers perform addition.&lt;br /&gt;&lt;br /&gt;Since I want to focus on digital computation, I try to keep the electricity part as simple as possible while still teaching the basics needed to understand how digital logic gates are implemented. For this reason, I discuss CMOS transistors. What's nice about CMOS is that there is no need to introduce any other electrical component (like resistors or capacitors) to understand how to build logic gates in CMOS.&lt;br /&gt;&lt;br /&gt;In this simplified presentation, voltage is all that matters and we can basically ignore the details of electric current. All you need to know is that electrons at Ground potential (0V) represent '0's and electrons at Power potential (usually +5V) represent '1's.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Cards &amp;amp; Yarn&lt;/b&gt;&lt;br /&gt;When I was first teaching this topic (a few years ago), I started by using laminated paper images of transistors that I connected with yarn (for the wires) using paper clips. The cards &amp;amp; yarn are used to layout a simple CMOS circuit and then the students have '0' and '1' markers flow through the circuit. &lt;br /&gt;&lt;br /&gt;These were very low cost and worked acceptably well for the lesson.&lt;br /&gt;&lt;br /&gt;&lt;table align="center"&gt;&lt;tr&gt;&lt;td align="center"&gt;&lt;a href="http://picasaweb.google.com/lh/photo/HIPeCH1ibGyDJ5GMxYvAwHyRPMEZxFCmm_MukglIoDM?feat=embedwebsite"&gt;&lt;img src="http://lh6.ggpht.com/_Qhf82R7sD-g/TPvUC60PNPI/AAAAAAAAAXU/6Y9vihggMsg/s800/trans_cards.jpg" height="308" width="231" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family:arial,sans-serif; font-size:11px; text-align:center"&gt;Transistor cards connected with yarn&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;But there were a few problems:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;More difficult/time-consuming to build.&lt;/b&gt; In most cases, I ended up building the circuit and showing the students how it worked because it was a bit messy to get everything connected properly.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Difficult to 'reset'.&lt;/b&gt; Once you were finished with one set of inputs, you need to remove all the markers to reset things for the next set of inputs. And you can't just sweep the markers away because that will mess up the connections. This made the activity less suitable for students to work on independently.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Gets confusing when the yarn overlaps.&lt;/b&gt; With the NAND and NOR circuits, the yarn 'wires' overlap which can make it confusing to follow. This can be mitigated by using different colored yarn, but it's still a problem that needs to be dealt with.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Weak against wind attacks.&lt;/b&gt; The materials are light, so a slight breeze from an open window can be enough to mess up your carefully constructed circuit. They can also be messed up easily by a student accidentally brushing their sleeve across the work area.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Laser-cut tiles&lt;/b&gt;&lt;br /&gt;To address these problems with the paper &amp;amp; yarn approach, I started experimenting with using laser-cut wooden tiles. I drew a set of prototype tiles using &lt;a href="http://inkscape.org/"&gt;Inkscape&lt;/a&gt; and had them fabricated either locally at &lt;a href="http://metrixcreatespace.com/"&gt;Metrix Create:Space&lt;/a&gt; or online using &lt;a href="http://www.ponoko.com/"&gt;Ponoko&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Each tile is roughly 1.5" on a side, and there are tabs on all sides so they can interlock like puzzle pieces. They need to be cut from opaque material, so I chose 1/8" inch wood stock.&lt;br /&gt;&lt;br /&gt;Here are the basic tiles I created:&lt;br /&gt;&lt;br /&gt;&lt;table align="center"&gt;&lt;tr&gt;&lt;td align="right"&gt;Power&lt;/td&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/MYICU7Pj-0vCqtohRNWPSg?feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_Qhf82R7sD-g/TPu6YiBd8sI/AAAAAAAAAWs/m2FQdXxgVrw/s144/power.png" height="144" width="144" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/M2qa19ufmUOUjB4YxJwwew?feat=embedwebsite"&gt;&lt;img src="http://lh6.ggpht.com/_Qhf82R7sD-g/TPu6Y70DYdI/AAAAAAAAAWw/4so4a7h8Oic/s144/ground.png" height="144" width="144" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td align="left"&gt;Ground&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="right"&gt;Input/Output&lt;/td&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/wBiH3KBLZB0uInTn8wGavQ?feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_Qhf82R7sD-g/TPu6YyvILOI/AAAAAAAAAW0/Sf4L10X4qbE/s144/io.png" height="144" width="144" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="right"&gt;nMOS Transistor&lt;/td&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/7E7ouAS_w0U4w8hx7vao4w?feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_Qhf82R7sD-g/TPu6ZNqrU3I/AAAAAAAAAW4/-5H7hgXk7sQ/s144/trans_n.png" height="144" width="144" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/fr4684pP7YMenPRI2G8VBg?feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_Qhf82R7sD-g/TPu6ZN_3TzI/AAAAAAAAAW8/eNcR6XjbbIk/s144/trans_p.png" height="144" width="144" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td align="left"&gt;pMOS Transistor&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="right"&gt;Straight wire&lt;/td&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/UxXHVEu0ibETSgnwn8Tt-Q?feat=embedwebsite"&gt;&lt;img src="http://lh5.ggpht.com/_Qhf82R7sD-g/TPu6iBd1-HI/AAAAAAAAAXA/jMtUZJJ8s8k/s144/wire.png" height="144" width="144" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/YTdD5uC2HQlCcS1ed9Ho1Q?feat=embedwebsite"&gt;&lt;img src="http://lh5.ggpht.com/_Qhf82R7sD-g/TPu6iSdQi_I/AAAAAAAAAXE/FMJ4Bml50PQ/s144/elbow.png" height="144" width="144" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Bent wire&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="right"&gt;"T" connection&lt;/td&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/as1WaNIqo7BoRGQAwUJq0A?feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_Qhf82R7sD-g/TPu6iw80MTI/AAAAAAAAAXI/UG9xYASxhPw/s144/tee.png" height="144" width="144" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/d6r3GShL2cPEizoYSZNQog?feat=embedwebsite"&gt;&lt;img src="http://lh5.ggpht.com/_Qhf82R7sD-g/TPu6jDt5bsI/AAAAAAAAAXM/To7nTPxQPkI/s144/cross_jump.png" height="144" width="144" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Wire crossover&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;The tiles ended up looking very nice and the students find them much more satisfying to work with. I can now give each student (or pair of students) a set of tiles and a circuit to create and they will work independently.&lt;br /&gt;&lt;br /&gt;Here are some pictures from the most recent batch of tiles (these ones arrived from Ponoko):&lt;br /&gt;&lt;br /&gt;&lt;table align="center" style="width:auto;"&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/PkSDyH34mDxYeLc0AT4FF3yRPMEZxFCmm_MukglIoDM?feat=embedwebsite"&gt;&lt;img src="http://lh4.ggpht.com/_Qhf82R7sD-g/TPsxNkvisfI/AAAAAAAAAUY/zpDVPfgHkEM/s288/unpack-01.jpg" height="216" width="288" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family:arial,sans-serif; font-size:11px; text-align:center"&gt;9x9 tiles in package&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;table align="center" style="width:auto;"&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/wNJ5P6snHEOQnK1rX9H3InyRPMEZxFCmm_MukglIoDM?feat=embedwebsite"&gt;&lt;img src="http://lh4.ggpht.com/_Qhf82R7sD-g/TPsxNid6WPI/AAAAAAAAAUc/N1smqgP09_U/s288/unpack-02.jpg" height="216" width="288" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family:arial,sans-serif; font-size:11px; text-align:center"&gt;Removing the upper wax protective sheet&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;table align="center" style="width:auto;"&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/qOvPVnx3y0cjU8M-D4-VRHyRPMEZxFCmm_MukglIoDM?feat=embedwebsite"&gt;&lt;img src="http://lh5.ggpht.com/_Qhf82R7sD-g/TPsxN9kinhI/AAAAAAAAAUg/esQrBdk9bNM/s288/unpack-03.jpg" height="216" width="288" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family:arial,sans-serif; font-size:11px; text-align:center"&gt;Close-up of nMOS &amp;amp; pMOS transistor tiles&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;table align="center" style="width:auto;"&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/shTERDu2OnmfxNGKEiptVnyRPMEZxFCmm_MukglIoDM?feat=embedwebsite"&gt;&lt;img src="http://lh4.ggpht.com/_Qhf82R7sD-g/TPsxN3LZiJI/AAAAAAAAAUk/KQeL_d3lAJA/s288/unpack-04.jpg" height="216" width="288" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family:arial,sans-serif; font-size:11px; text-align:center"&gt;Removing tiles from the sticky wax backing paper&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;After removing the tiles, I group them into student packets that contain the tiles needed to construct the logic gates I cover in class.&lt;br /&gt;&lt;br /&gt;&lt;table align="center" style="width:auto;"&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/NbpQdzxXBFK3uL0QqQqy3HyRPMEZxFCmm_MukglIoDM?feat=embedwebsite"&gt;&lt;img src="http://lh5.ggpht.com/_Qhf82R7sD-g/TPsybX_USnI/AAAAAAAAAU4/eYAEwiEWQug/s288/inverter-build-01.jpg" height="216" width="288" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family:arial,sans-serif; font-size:11px; text-align:center"&gt;Starting to build...&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;Here are a few pictures of the students working with the tiles in class.&lt;br /&gt;&lt;br /&gt;&lt;table align="center"&gt;&lt;tr&gt;&lt;td align="center"&gt;&lt;a href="http://picasaweb.google.com/lh/photo/D0Vp6DMDtcrFFjQdnjefz3yRPMEZxFCmm_MukglIoDM?feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_Qhf82R7sD-g/TPs0yNpX88I/AAAAAAAAAWI/kBd7ZVtQKww/s288/inclass-01.jpg" height="216" width="288" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family:arial,sans-serif; font-size:11px; text-align:center"&gt;Building an inverter&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;table align="center"&gt;&lt;tr&gt;&lt;td align="center"&gt;&lt;a href="http://picasaweb.google.com/lh/photo/sb2v_3rMguXWQ6LLfA8d6XyRPMEZxFCmm_MukglIoDM?feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_Qhf82R7sD-g/TPs0ycQG8dI/AAAAAAAAAWM/tGWrcy8jK9Y/s288/inclass-02.jpg" height="216" width="288" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family:arial,sans-serif; font-size:11px; text-align:center"&gt;Constructing a NAND gate&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;table align="center"&gt;&lt;tr&gt;&lt;td align="center"&gt;&lt;a href="http://picasaweb.google.com/lh/photo/DryM5OQsJu8we3GUrstj2XyRPMEZxFCmm_MukglIoDM?feat=embedwebsite"&gt;&lt;img src="http://lh5.ggpht.com/_Qhf82R7sD-g/TPs0yYREIfI/AAAAAAAAAWQ/34sQHAq5YiY/s288/inclass-03.jpg" height="216" width="288" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family:arial,sans-serif; font-size:11px; text-align:center"&gt;Another student's NAND gate&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;Sadly, the one downside to these materials is their cost. The paper &amp;amp; yarn version costs practically nothing, while having the tiles custom laser-cut can be rather expensive. This is especially true if you want to have enough materials for an entire class.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;What about using real transistors?&lt;/b&gt;&lt;br /&gt;Another option that I considered was to use actual transistors in class. However, I opted against it because:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Students can't see what's going on.&lt;/b&gt; The transistor itself is a black lump of plastic with 3 wires coming out and the electrons are not visible in the wires. While this might not be a serious problem for older students, I wanted the materials to be appropriate for younger students as well.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Adding LEDs requires more knowledge of electronics.&lt;/b&gt; If we want to add LEDs to make the input/output values visible, then we need to pay more attention to electrical current and also add resistors. This would not only complicate the lesson, but it would also introduce material that would be a distraction from the primary goal of understanding digital logic.&lt;/li&gt;&lt;li&gt;&lt;b&gt;I'll be covering electronics later anyway.&lt;/b&gt; Later in the school year, we'll be working with Arduinos and lighting up LEDs. No need to rush this material now.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Making available&lt;/b&gt;&lt;br /&gt;I'll be releasing these materials in the near future: image files for laser-cutting (so you can cut your own tiles if you want) and worksheets for using the tiles in class. I'll also have the original transistor cards released as well since that's the low-cost way to try out these lessons.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4701668830837946147-1349567438864138927?l=cse4k12.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cse4k12.blogspot.com/feeds/1349567438864138927/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4701668830837946147&amp;postID=1349567438864138927' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/1349567438864138927'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/1349567438864138927'/><link rel='alternate' type='text/html' href='http://cse4k12.blogspot.com/2010/12/materials-for-teaching-transistors-and.html' title='Materials for teaching transistors and logic gates'/><author><name>Gary Kacmarcik</name><uri>http://www.blogger.com/profile/06251485476040169610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_Qhf82R7sD-g/TPvUC60PNPI/AAAAAAAAAXU/6Y9vihggMsg/s72-c/trans_cards.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4701668830837946147.post-946125721036862833</id><published>2010-11-27T11:33:00.000-08:00</published><updated>2010-11-27T11:33:21.196-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CSinK12'/><category scheme='http://www.blogger.com/atom/ns#' term='ClassSummary'/><category scheme='http://www.blogger.com/atom/ns#' term='Boolean'/><category scheme='http://www.blogger.com/atom/ns#' term='Logic'/><title type='text'>Computer Class - Week #4</title><content type='html'>&lt;i&gt;This post summarizes the material from week 4 of my computer class and includes a rough approximation of how I presented the material. These notes are not completely polished, so some of the transitions may seem abrupt.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Perfect shuffles&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Materials needed: 2 decks of cards for every 8 students in the class. The two decks should each have a different colored back. I picked up a &lt;a href="http://www.costco.com/Browse/Product.aspx?Prodid=11481709&amp;whse=BD_827"&gt;set of decks from CostCo&lt;/a&gt; that had an assortment of red and blue decks, but it doesn't matter as long as the card backs are obviously different.&lt;br /&gt;&lt;br /&gt;I start class by handing out a small set of cards to each student:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;1 Ace (e.g., Ace of Spades with red card back)&lt;/li&gt;&lt;li&gt;9 cards 2-10 in a different colored suit and different colored back from the Ace (e.g., 2-10 of Hearts with blue card back)&lt;/li&gt;&lt;/ul&gt;The reason for having the Ace be a different colored suit and card back color is to make it very easy to see where the card is. You can skip using different colored decks, but then you'll need to scan the cards for the Ace each time.&lt;br /&gt;&lt;br /&gt;Activity: &lt;a href="http://cse4k12.org/binary/perfect_shuffle.html"&gt;Perfect card shuffling&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This is an interesting follow-up activity after you've introduced binary numbers to the students. The general idea is to have the them perform the shuffles, record the position of the Ace and then "discover" the pattern of binary numbers in the results.&lt;br /&gt;&lt;br /&gt;Note that the worksheets are set up so that the cards are optional for the students. They can see where the Ace goes just by following the arrows on the worksheets.&lt;br /&gt;&lt;br /&gt;If you intend to perform this, I recommend you practice shuffling a bit before teaching this the first time. Performing perfect shuffles is actually rather easy if you go slowly and carefully (it becomes hard when you want to make it look like a real shuffle but that's not necessary for this class). The hardest part of shuffling the cards for class is getting used to shuffling only 10 cards.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Boolean Logic&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;A boolean value is a way of describing objects by specifying whether a particular attribute is True or False. For example, a light could have the attribute 'isOn' which is True when the light is turned on and False when the light is off.&lt;br /&gt;&lt;br /&gt;These attributes can be anything that you can give a True/False answer to:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;isRaining – True if it's raining outside, False otherwise&lt;/li&gt;&lt;li&gt;hasRaincoat – True if you have a raincoat, False if you don't&lt;/li&gt;&lt;/ul&gt;Note that there can be a lot of ambiguity in these terms: What if it's only raining a little bit? What if it's raining here, but not over there? Do we say isRed=True if an object is mostly yellow, but has a little bit of red?&lt;br /&gt;&lt;br /&gt;Boolean logic is an attempt to formalize the thought process and these expressions are used in computer programs (including games) to control what happens.&lt;br /&gt;&lt;br /&gt;Also note that there are only 2 values: True and False. This sounds a lot like binary, with 0=False and 1=True. This is not a coincidence and we'll be discussing that in more detail later.&lt;br /&gt;&lt;br /&gt;Activity: Describe objects in the room&lt;br /&gt;&lt;blockquote&gt;Have students choose objects in the room and then come up with boolean attributes to describe the objects. When the students suggest an attribute (like 'it's bigger than my head') convert it into a True/False boolean attribute ('isBiggerThanMyHead'). As new objects are brought up, discuss whether the attributes from the previous objects would be True or False for the new object.&lt;br /&gt;&lt;/blockquote&gt;&lt;b&gt;Boolean Operations&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;In addition to the basic attributes, there is also a set of boolean operators that can be used to combine these properties to create new ones. For example:&lt;br /&gt;&lt;blockquote&gt; getsWet = isRaining AND NOT hasRaincoat&lt;br /&gt;&lt;/blockquote&gt;These boolean operations are NOT, AND, OR and XOR.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;NOT&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;The NOT operation changes True to False and vice versa. So if 'isCat' is True, then 'NOT isCat' is False.&lt;br /&gt;&lt;br /&gt;Note that in English, we would probably say “is not a cat”. In logic, we say “not is-a-cat” or 'NOT isCat'.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;AND&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;a&lt;/i&gt; AND &lt;i&gt;b&lt;/i&gt; is True only if &lt;i&gt;a&lt;/i&gt; and &lt;i&gt;b&lt;/i&gt; are both True.&lt;br /&gt;&lt;br /&gt;So if you have 2 boolean statements 'isCat' and 'hasStripes', then 'isCat AND hasStripes':&lt;br /&gt;&lt;ul&gt;&lt;li&gt;is True for striped cats&lt;/li&gt;&lt;li&gt;is False for spotted cats or striped dogs&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;i&gt;OR&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;a&lt;/i&gt; OR &lt;i&gt;b&lt;/i&gt; is True if either &lt;i&gt;a&lt;/i&gt; or &lt;i&gt;b&lt;/i&gt; (or both) are True.&lt;br /&gt;&lt;br /&gt;So 'isCat OR hasStripes':&lt;br /&gt;&lt;ul&gt;&lt;li&gt;is True for striped cats, spotted cats, striped dogs&lt;/li&gt;&lt;li&gt;is False for spotted dogs&lt;/li&gt;&lt;/ul&gt;Note that is somewhat different from the way we think about 'or' when we talk. At a restaurant, when you are offered a choice of soup or salad, you can only choose one. In logic, both sides can be True and the result is True.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;XOR&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;a&lt;/i&gt; XOR &lt;i&gt;b&lt;/i&gt; is True if either &lt;i&gt;a&lt;/i&gt; or &lt;i&gt;b&lt;/i&gt; (but not both) are True .&lt;br /&gt;&lt;br /&gt;So, 'isCat XOR hasStripes': &lt;br /&gt;&lt;ul&gt;&lt;li&gt;is True for spotted cats, striped dogs&lt;/li&gt;&lt;li&gt;is False for striped cats, spotted dogs&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;i&gt;NAND, NOR, XNOR&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;For convenience, we also have NAND, NOR and XNOR, which are simply shorthand for NOT-AND, NOT-OR and NOT-XOR.&lt;br /&gt;&lt;br /&gt;Note that XNOR is not a great name - it would be more accurate to call it NXOR. However, XNOR is the commonly accepted name (and in any case, 'ex-nor' is slightly easier to say than 'en-ex-or').&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Object Properties&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;These worksheets introduce the students to describing objects with boolean variables like "isBlack" or "isCircle". For each object, they identify whether each boolean value is True or False.&lt;br /&gt;&lt;br /&gt;Worksheet: &lt;a href="http://cse4k12.org/logic/object_properties.html"&gt;Object properties&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;After determining the attribute values for each object, the students will then group related objects. Finally (on the 3rd worksheet), they will construct boolean expressions that are True for a selected set of objects (without including any extras).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Nethack&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Nethack is a dungeon exploration computer game that was originally released in 1987. In this activity, we discuss the boolean properties and expressions used in Nethack to determine when the player is petrified (turned to stone) by a cockatrice (one of the monsters in the game).&lt;br /&gt;&lt;br /&gt;Activity: &lt;a href="http://cse4k12.org/logic/logic_nethack.html"&gt;Boolean logic - Nethack&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Describing Objects&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;In this activity, I go around the room and ask each student to think of an object and then think of a property that can be used to describe it. For example, you could think of an Apple and describe it as being "red" or "green" or "tasty".&lt;br /&gt;&lt;br /&gt;I take the most interesting of these descriptive terms, convert it into a boolean True/False attribute and write it on the board. Once you go around the entire class, you should have a fairly useful set of attributes on the board.&lt;br /&gt;&lt;br /&gt;For this particular class, the students came up with:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;isBouncy&lt;/li&gt;&lt;li&gt;isYummy&lt;/li&gt;&lt;li&gt;isFrozen&lt;/li&gt;&lt;li&gt;canTalk&lt;/li&gt;&lt;li&gt;isFuzzy&lt;/li&gt;&lt;li&gt;isAddictive&lt;/li&gt;&lt;li&gt;isWet&lt;/li&gt;&lt;li&gt;isSquishy&lt;/li&gt;&lt;/ul&gt;Now, given these attributes, pick two at random, connect them with an AND operator and ask a student to think of an object for which that expression is True. For example, choosing "isWet AND isSquishy" might results in the student suggesting a sponge.&lt;br /&gt;&lt;br /&gt;I was actually quite surprised how creative the students were with their responses. Here are a number of examples from class:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;isYummy AND isSquishy = jello&lt;/li&gt;&lt;li&gt;isFuzzy AND isFrozen - ice kitty (kitty frozen in snow)&lt;/li&gt;&lt;li&gt;isFurry AND isYummy - kiwi&lt;/li&gt;&lt;li&gt;isWet AND isSquishy - squid&lt;/li&gt;&lt;li&gt;isAddictive AND isYummy - brownies&lt;/li&gt;&lt;li&gt;isYummy AND isBouncy - grapes&lt;/li&gt;&lt;li&gt;isFurry AND isSquishy - gerbil (although you really shouldn't squish it!)&lt;/li&gt;&lt;/ul&gt;As you can see, isYummy was a student favorite.&lt;br /&gt;&lt;br /&gt;Once the students have given a couple of objects from the AND operator, these can now be used to test their understanding of NOT, OR and XOR. For this part, I take a couple of attributes, combine them with OR and XOR (and optionally use a NOT) and then ask if the expression is True or False for each object:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;isFurry OR isWet&lt;br /&gt;&lt;ul&gt;&lt;li&gt;squid (T), brownies (F), ice kitty (T), ...&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;isYummy XOR isAddictive&lt;br /&gt;&lt;ul&gt;&lt;li&gt;brownie (F), jello (T), gerbil (F), kiwi (T), ...&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Describing Objects II&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;For the last activity, I bring in a set of related objects and have the students create attributes to describe them.&lt;br /&gt;&lt;br /&gt;For this class, I brought in some Lego bricks (of different colors and sizes) and a few playing cards. The students came up with the following descriptive attributes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;isSquare&lt;/li&gt;&lt;li&gt;isRectangle&lt;/li&gt;&lt;li&gt;isGrayDark&lt;/li&gt;&lt;li&gt;isGrayLight&lt;/li&gt;&lt;li&gt;isPlastic&lt;/li&gt;&lt;li&gt;is2x4&lt;/li&gt;&lt;li&gt;is2x2&lt;/li&gt;&lt;li&gt;isRed&lt;/li&gt;&lt;li&gt;isPaper&lt;/li&gt;&lt;li&gt;isBlack&lt;/li&gt;&lt;li&gt;isLimeGreen&lt;/li&gt;&lt;li&gt;isAce&lt;/li&gt;&lt;li&gt;isLetter&lt;/li&gt;&lt;li&gt;isHearts&lt;/li&gt;&lt;/ul&gt;And then I selected a few of the objects and asked the class to come up with a boolean expression to select just those objects. This is similar to the 3rd page of the &lt;a href="http://cse4k12.org/logic/object_properties.html"&gt;Object Properties&lt;/a&gt; activity done earlier in the class. &lt;br /&gt;&lt;br /&gt;In retrospect, the Lego bricks were probably a bit too small and perhaps a bit too distracting, but they worked well enough. Next time, I may experiment with different (larger) objects.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4701668830837946147-946125721036862833?l=cse4k12.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cse4k12.blogspot.com/feeds/946125721036862833/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4701668830837946147&amp;postID=946125721036862833' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/946125721036862833'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/946125721036862833'/><link rel='alternate' type='text/html' href='http://cse4k12.blogspot.com/2010/11/computer-class-week-4.html' title='Computer Class - Week #4'/><author><name>Gary Kacmarcik</name><uri>http://www.blogger.com/profile/06251485476040169610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4701668830837946147.post-7234527596512960712</id><published>2010-11-26T23:06:00.000-08:00</published><updated>2010-11-26T23:06:08.356-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hexadecimal'/><category scheme='http://www.blogger.com/atom/ns#' term='CSinK12'/><category scheme='http://www.blogger.com/atom/ns#' term='ClassSummary'/><category scheme='http://www.blogger.com/atom/ns#' term='Binary'/><title type='text'>Computer Class - Week #3</title><content type='html'>&lt;i&gt;This post summarizes the material from week 3 of my computer class and includes a rough approximation how I presented the material.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Counting in Binary&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;We start each class with a small exercise. This week the students need to count in binary from 0 to 15, padded out to 4 digits. As they say the number, I write it on the board.&lt;br /&gt;&lt;br /&gt;I start with '0000' and then we go around the room with each student giving the next number: '0001', '0010', '0011', '0100', '0101', ...&lt;br /&gt;&lt;br /&gt;The reason why we start with this counting (padded to 4 digits) is that they are actually practicing the binary-hex conversion table. They haven't learned hexadecimal yet, but we'll be covering that today.&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;[Note: After a week or two of this, all the students know it pretty well, so they all just say the numbers in unison.&lt;br /&gt; &lt;br /&gt;Once another teacher overheard this exercise and was somewhat surprised to hear the students intoning "zero-zero-one-zero-one-one-...". They were all saying the numbers in a monotone and it sounded like they were chanting. I'll have to remember to dim the lights and light a few candles and incense for next time.]&lt;/i&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;b&gt;Binary-Decimal Conversion&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;"As we discussed last week, binary is for computers, and decimal is for humans. People can have a difficult time dealing with binary numbers directly, so it's good to know how to convert back and forth between the two number systems."&lt;br /&gt;&lt;br /&gt;"Thus, we continue with some worksheets showing how to convert between decimal and binary:"&lt;br /&gt;&lt;br /&gt;Worksheet: &lt;a href="http://cse4k12.org/binary/convert_bin2dec.html"&gt;Converting from Binary to Decimal&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Worksheet: &lt;a href="http://cse4k12.org/binary/convert_dec2bin.html"&gt;Converting from Decimal to Binary&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;"The process isn't difficult, but it does take time and is hard to do in your head for anything but the most trivial conversions."&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Rembering Binary Numbers&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;"In addition, binary numbers can be rather long and hard to remember. For example, I'm going to write a number on the board and ask you to remember it."&lt;br /&gt;&lt;br /&gt;"For comparison, let's start with decmial. I'm going to write a number on the board:"&lt;br /&gt;&lt;br /&gt;I write the following decimal number on the board:&lt;br /&gt;&lt;blockquote&gt; 571,842&lt;br /&gt;&lt;/blockquote&gt;After about 5 seconds, I cover it up and then ask if anyone remembers the number. Pretty much anyone in the class is able to remember the number.&lt;br /&gt;&lt;br /&gt;"Now let's try the same this with a binary number of roughly the same magnitude."&lt;br /&gt;&lt;br /&gt;I write the following binary number on the board:&lt;br /&gt;&lt;blockquote&gt; 10100000010011110101&lt;br /&gt;&lt;/blockquote&gt;As before, I cover it up and then ask if anyone can remember the number. I like to be a bit mean here and ask things like "Hmmmm... does anyone remember... was it 001001000 or 101101110?", using random sequences of '0's and '1's.&lt;br /&gt;&lt;br /&gt;Now, with the binary number still covered up, I write the number again on the board. When I uncover the original number, everyone can see that they're the same number.&lt;br /&gt;&lt;br /&gt;"So, how did I remember that long binary number? Well, I cheated. And I'll be showing you in this class what I did."&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;[Note: Of course, the trick is that I didn't really remember the binary number. I just thought of a 5-digit hex number and remembered that instead. When I needed to write the number, I just converted from hex to binary as I was writing. In the above example, I remembered the "A04F5" instead of the long string of binary digits.]&lt;/i&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;b&gt;Hexadecimal&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;"OK, so binary numbers are tedious to use directly, and there's no trivial way to convert them into decimal. What are we going to do?"&lt;br /&gt;&lt;br /&gt;"The answer is hexadecimal, which is base 16."&lt;br /&gt;&lt;br /&gt;"Hexadecimal is just like all the other number systems we've discussed except that we need 16 symbols. We re-use 0-9 from decimal, but we need 6 more symbols. We can choose anything, but by convention we use the first 6 letters of the alphabet:"&lt;br /&gt;&lt;br /&gt;&lt;table border="1" cellpadding="2"&gt;&lt;tr&gt;&lt;td align="right"&gt;Hex number:&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td align="center"&gt;A&lt;/td&gt;&lt;td align="center"&gt;B&lt;/td&gt;&lt;td align="center"&gt;C&lt;/td&gt;&lt;td align="center"&gt;D&lt;/td&gt;&lt;td align="center"&gt;E&lt;/td&gt;&lt;td align="center"&gt;F&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="right"&gt;Decimal equivalent:&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td align="center"&gt;10&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;14&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;blockquote&gt;&lt;i&gt;[Sidenote: Sexadecimal?&lt;br /&gt;Positional number systems are typically named using the Latin prefixes, hence octal (oct- = 8), decimal (deci- = 10) and duodecimal (duodeci- = 12). Given this convention, base-16 is more correctly referred to as sexadecimal since sexa- is the Latin prefix for 6 (as in sexagesimal for base-60).&lt;br /&gt;&lt;br /&gt;The term hexadecimal is an unnatural combination of Greek (hexa- = 6) and Latin (deci- = 10) prefixes, but has gained acceptance as the preferred name for base-16.&lt;br /&gt;&lt;br /&gt;This is probably a good thing, considering how often I tend to abbreviate the number system as "hex".]&lt;/i&gt;&lt;br /&gt;&lt;/blockquote&gt;Worksheet: &lt;a href="http://cse4k12.org/hexadecimal/counting_in_hex.html"&gt;Counting in Hexadecimal&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;"So, how does hexadecimal help us with binary? Let's compare the different number systems."&lt;br /&gt;&lt;br /&gt;Activity: &lt;a href="http://cse4k12.org/cards/number_cards.html"&gt;Number cards&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;First lay out the binary cards from right to left:&lt;br /&gt;&lt;br /&gt;&lt;table cellpadding="2"&gt;&lt;tr&gt;&lt;td align="right"&gt;Binary:&lt;/td&gt;&lt;td&gt;256&lt;/td&gt;&lt;td&gt;128&lt;/td&gt;&lt;td&gt;64&lt;/td&gt;&lt;td&gt;32&lt;/td&gt;&lt;td&gt;16&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;Now line up the octal cards with the binary cards:&lt;br /&gt;&lt;br /&gt;&lt;table cellpadding="2"&gt;&lt;tr&gt;&lt;td align="right"&gt;Binary:&lt;/td&gt;&lt;td&gt;256&lt;/td&gt;&lt;td&gt;128&lt;/td&gt;&lt;td&gt;64&lt;/td&gt;&lt;td&gt;32&lt;/td&gt;&lt;td&gt;16&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="right"&gt;Octal:&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;64&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;Then add the hexadecimal cards:&lt;br /&gt;&lt;br /&gt;&lt;table cellpadding="2"&gt;&lt;tr&gt;&lt;td align="right"&gt;Hex:&lt;/td&gt;&lt;td&gt;256&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;16&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="right"&gt;Binary:&lt;/td&gt;&lt;td&gt;256&lt;/td&gt;&lt;td&gt;128&lt;/td&gt;&lt;td&gt;64&lt;/td&gt;&lt;td&gt;32&lt;/td&gt;&lt;td&gt;16&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="right"&gt;Octal:&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;64&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;Now try to line up the decimal cards:&lt;br /&gt;&lt;br /&gt;&lt;table cellpadding="2"&gt;&lt;tr&gt;&lt;td align="right"&gt;Decimal:&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td colspan="2" align="center"&gt;100&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td colspan="2" align="center"&gt;10&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="right"&gt;Hex:&lt;/td&gt;&lt;td&gt;256&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;16&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="right"&gt;Binary:&lt;/td&gt;&lt;td&gt;256&lt;/td&gt;&lt;td&gt;128&lt;/td&gt;&lt;td&gt;64&lt;/td&gt;&lt;td&gt;32&lt;/td&gt;&lt;td&gt;16&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="right"&gt;Octal:&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;64&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;Notice the following things:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Octal lines up with every 3rd binary card&lt;/li&gt;&lt;li&gt;Hexadecimal lines up with every 4th binary card&lt;/li&gt;&lt;li&gt;Decimal doesn't line up with any binary card (except 1)&lt;/li&gt;&lt;/ul&gt;"This property makes is very easy to convert from binary to either octal or hexadecimal. Hexadecimal is effectively a shorthand notation for binary. This, by the way, is the trick that I used earlier in the class - I didn't remember the binary number. I remembered a hex number and just converted to binary as I was writing it."&lt;br /&gt;&lt;br /&gt;Worksheet: &lt;a href="http://cse4k12.org/binary/convert_bin2oct.html"&gt;Converting from binary to octal&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Worksheet: &lt;a href="http://cse4k12.org/binary/convert_bin2hex.html"&gt;Converting from binary to hexadecimal&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;"So this solves one of the problems with binary - that there were too many digits to remember. It's still a bit of work to convert to/from decimal, but we can avoid this by sticking with hexadecimal as much as possible."&lt;br /&gt;&lt;br /&gt;"Note that we just as easily could have used octal instead of hexadecimal to solve this problem. In fact, many early computer systems made extensive use of octal and grouped bits in sets of 3 (and had byte sizes of 6 or 9 bits). While there are a few places where octal is still used in computer science, hexadecimal is by far the preferred base to convert binary. Besides, grouping 4 bits at a time seems more "power of two"-ish than grouping them by 3's."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4701668830837946147-7234527596512960712?l=cse4k12.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cse4k12.blogspot.com/feeds/7234527596512960712/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4701668830837946147&amp;postID=7234527596512960712' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/7234527596512960712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/7234527596512960712'/><link rel='alternate' type='text/html' href='http://cse4k12.blogspot.com/2010/11/computer-class-week-3.html' title='Computer Class - Week #3'/><author><name>Gary Kacmarcik</name><uri>http://www.blogger.com/profile/06251485476040169610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4701668830837946147.post-1319241353893646550</id><published>2010-11-13T23:27:00.000-08:00</published><updated>2010-11-14T08:24:57.315-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='base-sixteen.org'/><title type='text'>New base-sixteen.org listings: 7-13 Nov</title><content type='html'>Recently added resource listings at &lt;a href="http://www.base-sixteen.org/"&gt;base-sixteen.org&lt;/a&gt;.  Some of the CS Unplugged resources were already listed, but I finally went through and made sure they were all present and accounted for.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Racket/Scheme/Lisp&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.base-sixteen.org/resource.jsp?id=agdjc2U0azEychALEghSZXNvdXJjZRjZmwkM"&gt;How To Design Programs - An Introduction to Programming and Computing&lt;/a&gt; - A free book that provides an introduction to programming using Racket (a dialect of Scheme). This was created as part of the &lt;a href="http://www.teach-scheme.org/"&gt;"Teach Scheme - Reach Java"&lt;/a&gt; project.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.base-sixteen.org/resource.jsp?id=agdjc2U0azEychALEghSZXNvdXJjZRiJjAkM"&gt;Bookstrap&lt;/a&gt; - A middle-school curriculum for introducing students to programming based on "How to Design Programs".&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.base-sixteen.org/resource.jsp?id=agdjc2U0azEychALEghSZXNvdXJjZRiqqAoM"&gt;How to Design Worlds : Imaginative Programming in DrScheme&lt;/a&gt; - A collection of project assignments for "How to Design Programs" and "Bootstrap".&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.base-sixteen.org/resource.jsp?id=agdjc2U0azEychALEghSZXNvdXJjZRihhAkM"&gt;DrRacket&lt;/a&gt; - A freely-available, cross-platform IDE for Racket. Formerly called DrScheme.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.base-sixteen.org/resource.jsp?id=agdjc2U0azEychALEghSZXNvdXJjZRi5_AgM"&gt;WebScheme&lt;/a&gt; - A cloud-based IDE for creating programs in Racket.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;National Center for Women &amp; Information Technology&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.base-sixteen.org/resource.jsp?id=agdjc2U0azEychALEghSZXNvdXJjZRj5ugkM"&gt;Computer Science-in-a-Box: Unplug Your Curriculum&lt;/a&gt; - Collection of CS Unplugged activities in single, easy-to-download PDF.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Computer Science Unplugged&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;1: &lt;a href="http://www.base-sixteen.org/resource.jsp?id=agdjc2U0azEycg8LEghSZXNvdXJjZRjwBww"&gt;Count the Dots - Binary Numbers&lt;/a&gt;&lt;br /&gt;2: &lt;a href="http://www.base-sixteen.org/resource.jsp?id=agdjc2U0azEycg4LEghSZXNvdXJjZRgODA"&gt;Colour by Numbers - Image Representation&lt;/a&gt;&lt;br /&gt;3: &lt;a href="http://www.base-sixteen.org/resource.jsp?id=agdjc2U0azEychALEghSZXNvdXJjZRiJiQoM"&gt;You Can Say That Again! - Text Compression&lt;/a&gt;&lt;br /&gt;4: &lt;a href="http://www.base-sixteen.org/resource.jsp?id=agdjc2U0azEychALEghSZXNvdXJjZRiZ2gkM"&gt;Card Flip Magic - Error Detection &amp; Correction&lt;/a&gt;&lt;br /&gt;5: &lt;a href="http://www.base-sixteen.org/resource.jsp?id=agdjc2U0azEychALEghSZXNvdXJjZRjxkAoM"&gt;Twenty Guesses - Information Theory&lt;/a&gt;&lt;br /&gt;6: &lt;a href="http://www.base-sixteen.org/resource.jsp?id=agdjc2U0azEychALEghSZXNvdXJjZRjR7goM"&gt;Battleships - Searching Algorithms&lt;/a&gt;&lt;br /&gt;7: &lt;a href="http://www.base-sixteen.org/resource.jsp?id=agdjc2U0azEychALEghSZXNvdXJjZRiB4gkM"&gt;Lightest and Heaviest - Sorting Algorithms&lt;/a&gt;&lt;br /&gt;8: &lt;a href="http://www.base-sixteen.org/resource.jsp?id=agdjc2U0azEychALEghSZXNvdXJjZRjp6QkM"&gt;Beat the Clock - Sorting Networks&lt;/a&gt;&lt;br /&gt;9: &lt;a href="http://www.base-sixteen.org/resource.jsp?id=agdjc2U0azEychALEghSZXNvdXJjZRi59goM"&gt;The Muddy City - Minimal Spanning Trees&lt;/a&gt;&lt;br /&gt;10: &lt;a href="http://www.base-sixteen.org/resource.jsp?id=agdjc2U0azEychALEghSZXNvdXJjZRjR8QkM"&gt;The Orange Game - Routing and Deadlock in Networks&lt;/a&gt;&lt;br /&gt;11: &lt;a href="http://www.base-sixteen.org/resource.jsp?id=agdjc2U0azEychALEghSZXNvdXJjZRi5-QkM"&gt;Treasure Hunt - Finite-State Automata&lt;/a&gt;&lt;br /&gt;12: &lt;a href="http://www.base-sixteen.org/resource.jsp?id=agdjc2U0azEychALEghSZXNvdXJjZRiy0gkM"&gt;Marching Orders - Programming Languages&lt;/a&gt;&lt;br /&gt;13: &lt;a href="http://www.base-sixteen.org/resource.jsp?id=agdjc2U0azEychALEghSZXNvdXJjZRipqAoM"&gt;The Poor Cartographer - Graph Coloring&lt;/a&gt;&lt;br /&gt;14: &lt;a href="http://www.base-sixteen.org/resource.jsp?id=agdjc2U0azEychALEghSZXNvdXJjZRjhvwoM"&gt;Tourist Town - Dominating Sets&lt;/a&gt;&lt;br /&gt;15: &lt;a href="http://www.base-sixteen.org/resource.jsp?id=agdjc2U0azEychALEghSZXNvdXJjZRiZ1woM"&gt;Ice roads - Steiner Trees&lt;/a&gt;&lt;br /&gt;16: &lt;a href="http://www.base-sixteen.org/resource.jsp?id=agdjc2U0azEychALEghSZXNvdXJjZRiJhgsM"&gt;Sharing Secrets - Information Hiding Protocols&lt;/a&gt;&lt;br /&gt;17: &lt;a href="http://www.base-sixteen.org/resource.jsp?id=agdjc2U0azEychALEghSZXNvdXJjZRiKhgsM"&gt;The Peruvian Coin Fip - Cryptographic Protocols&lt;/a&gt;&lt;br /&gt;18: &lt;a href="http://www.base-sixteen.org/resource.jsp?id=agdjc2U0azEychALEghSZXNvdXJjZRjZlQsM"&gt;Kid Krypto - Public-key Encryption&lt;/a&gt;&lt;br /&gt;19: &lt;a href="http://www.base-sixteen.org/resource.jsp?id=agdjc2U0azEychALEghSZXNvdXJjZRjKygkM"&gt;The Chocolate Factory - Human Interface Design&lt;/a&gt;&lt;br /&gt;20: &lt;a href="http://www.base-sixteen.org/resource.jsp?id=agdjc2U0azEychALEghSZXNvdXJjZRiptwUM"&gt;Conversations with Computers - The Turing Test&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.base-sixteen.org/resource.jsp?id=agdjc2U0azEychALEghSZXNvdXJjZRjBnQsM"&gt;Santa's Dirty Socks - Divide and Conquer&lt;/a&gt; - An animated video showing how Santa used a divide-and-conquer approach to save Christmas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4701668830837946147-1319241353893646550?l=cse4k12.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cse4k12.blogspot.com/feeds/1319241353893646550/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4701668830837946147&amp;postID=1319241353893646550' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/1319241353893646550'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/1319241353893646550'/><link rel='alternate' type='text/html' href='http://cse4k12.blogspot.com/2010/11/new-base-sixteenorg-resources-7-13-nov.html' title='New base-sixteen.org listings: 7-13 Nov'/><author><name>Gary Kacmarcik</name><uri>http://www.blogger.com/profile/06251485476040169610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4701668830837946147.post-5029116132806796568</id><published>2010-11-10T15:00:00.000-08:00</published><updated>2010-11-10T15:00:04.940-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CSinK12'/><title type='text'>Kevin Carey: "Decoding the Value of Computer Science"</title><content type='html'>The &lt;a href="http://chronicle.com"&gt;Chronicle of Higher Education&lt;/a&gt; has an interesting piece by entitled &lt;a href="http://chronicle.com/article/Decoding-the-Value-of-Computer/125266"&gt;"Decoding the Value of Computer Science"&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The author, Kevin Carey, intended to major in Computer Science back when he entered college, but switched to a humanities major to avoid early-AM classes. While he had spent a fair amount of time programming in BASIC and Pascal up to that point, he basically stopped all programming at that time.&lt;br /&gt;&lt;br /&gt;However, he was able to make use of his programming and logical reasoning skills in his non-CS careers: at the Indiana state-budget office and later as a writer.  This article is a great read that underscores why we should have CS in the core K-12 curriculum.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;(via &lt;a href="http://www.dansanderson.com/blog/2010/11/-decoding-the-value-of.html"&gt;BrainLog&lt;/a&gt;)&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4701668830837946147-5029116132806796568?l=cse4k12.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cse4k12.blogspot.com/feeds/5029116132806796568/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4701668830837946147&amp;postID=5029116132806796568' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/5029116132806796568'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/5029116132806796568'/><link rel='alternate' type='text/html' href='http://cse4k12.blogspot.com/2010/11/kevin-carey-decoding-value-of-computer.html' title='Kevin Carey: &quot;Decoding the Value of Computer Science&quot;'/><author><name>Gary Kacmarcik</name><uri>http://www.blogger.com/profile/06251485476040169610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4701668830837946147.post-1458299858030135768</id><published>2010-11-07T00:17:00.000-07:00</published><updated>2010-11-07T00:17:39.432-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cse4k12Resources'/><category scheme='http://www.blogger.com/atom/ns#' term='base-sixteen.org'/><title type='text'>New base-sixteen.org resources: 31 Oct - 6 Nov</title><content type='html'>The following resources have been added to the &lt;a href="http://base-sixteen.org"&gt;base-sixteen.org&lt;/a&gt; catalog during the past week.  The base-sixteen.org website is attempting to collect links to all useful Computer Science education materials on the web (and it allows user comments and ratings).&lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;img src="http://cse4k12.org/octal/counting1.png"/&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="http://www.base-sixteen.org/resource.jsp?id=agdjc2U0azEycg8LEghSZXNvdXJjZRiyHww"&gt;Octal Counting Worksheets&lt;/a&gt;&lt;br/&gt;Worksheets where the student is given a set of circles to count in octal and then convert the result into decimal. The circles are arranged in groups of eight to make the octal calculation straightforward.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;img src="http://cse4k12.org/octal/octal_dots.png"/&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="http://www.base-sixteen.org/resource.jsp?id=agdjc2U0azEychALEghSZXNvdXJjZRjBpggM"&gt;Octal Dots Worksheet&lt;/a&gt;&lt;br/&gt;Similar to the first worksheet, but in this case the students are given an octal number and they must draw the correct number of dots before converting into decimal.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;img src="http://cse4k12.org/octal/counting_in_octal.png"/&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="http://www.base-sixteen.org/resource.jsp?id=agdjc2U0azEychALEghSZXNvdXJjZRjxlggM"&gt;Counting in Octal Worksheet&lt;/a&gt;&lt;br&gt;Students must count from 0 to 63 (but in octal, so they need to count from 0 to 77).&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;img src="http://cse4k12.org/binary/counting_in_binary.png"/&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="http://www.base-sixteen.org/resource.jsp?id=agdjc2U0azEychALEghSZXNvdXJjZRiprggM"&gt;Counting in Binary Worksheet&lt;/a&gt;&lt;br/&gt;Students must count from 0 to 63 (but in binary, so they need to count from 0 to 111111).&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;img src="http://cse4k12.org/hexadecimal/counting_in_hex.png"/&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="http://www.base-sixteen.org/resource.jsp?id=agdjc2U0azEychALEghSZXNvdXJjZRiRtggM"&gt;Counting in Hexadecimal Worksheet&lt;/a&gt;&lt;br/&gt;Students must count from 0 to 63 (but in hexadecimal, so it's really 0 to 4F).&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4701668830837946147-1458299858030135768?l=cse4k12.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cse4k12.blogspot.com/feeds/1458299858030135768/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4701668830837946147&amp;postID=1458299858030135768' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/1458299858030135768'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/1458299858030135768'/><link rel='alternate' type='text/html' href='http://cse4k12.blogspot.com/2010/11/new-base-sixteenorg-resources-31-oct-6.html' title='New base-sixteen.org resources: 31 Oct - 6 Nov'/><author><name>Gary Kacmarcik</name><uri>http://www.blogger.com/profile/06251485476040169610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4701668830837946147.post-2459915214610677028</id><published>2010-11-02T13:53:00.000-07:00</published><updated>2010-11-02T13:53:55.765-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Magic'/><category scheme='http://www.blogger.com/atom/ns#' term='Binary'/><title type='text'>Perfect Card Shuffles and Binary Numbers</title><content type='html'>Yesterday (November 1) on &lt;a href="http://www.kuow.org/kuowpresents/"&gt;KUOW Presents&lt;/a&gt;, they presented a segment from Wisconsin Public Radio's &lt;a href="http://www.wpr.org/book/index.cfm"&gt;"To the Best of Our Knowledge"&lt;/a&gt; that talked about Math and Magic Tricks and Binary numbers.&lt;br /&gt;&lt;br /&gt;They interviewed &lt;a href="http://en.wikipedia.org/wiki/Persi_Diaconis"&gt;Persi Diaconis&lt;/a&gt;, a magician and mathematician who is currently a professor of Statistics and Mathematics at Stanford University. In one part of the program, they talked about how card magicians (and poker cheats) can use knowledge of binary numbers and 'perfect' card shuffling to take a card at the top of the deck and move it to any desired position in the deck while apparently shuffling the cards into a random order.&lt;br /&gt;&lt;br /&gt;The link to Jim Fleming's complete interview with Persi Diaconis is near the bottom of the &lt;a href="http://www.wpr.org/book/091220a.cfm"&gt;"To the Best of Our Knowledge" page for this program&lt;/a&gt; under the "Special Web Extras" section. The uncut interview is ~34 minutes, roughly 12 of which made it into the KUOW Presents show. The part on using binary and perfect shuffles runs from around 4:54 - 6:40, but I found the entire interview interesting.&lt;br /&gt;&lt;br /&gt;I need to turn this into classroom material because I'm sure that the students will find it fascinating.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4701668830837946147-2459915214610677028?l=cse4k12.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cse4k12.blogspot.com/feeds/2459915214610677028/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4701668830837946147&amp;postID=2459915214610677028' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/2459915214610677028'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/2459915214610677028'/><link rel='alternate' type='text/html' href='http://cse4k12.blogspot.com/2010/11/perfect-card-shuffles-and-binary.html' title='Perfect Card Shuffles and Binary Numbers'/><author><name>Gary Kacmarcik</name><uri>http://www.blogger.com/profile/06251485476040169610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4701668830837946147.post-7432988851552473597</id><published>2010-11-01T09:34:00.000-07:00</published><updated>2010-11-01T09:34:32.221-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Octal'/><category scheme='http://www.blogger.com/atom/ns#' term='TeachingCS'/><category scheme='http://www.blogger.com/atom/ns#' term='ClassSummary'/><category scheme='http://www.blogger.com/atom/ns#' term='Binary'/><title type='text'>Computer Class - Week #2</title><content type='html'>This class continues with the number system (binary, octal) work that we started last week. Because these first few classes are review of material that I covered with these students previously, this post will fill in some gaps by including material from last spring (when I first introduced binary/octal).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Binary Quote&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Before class starts, I write the following quote along the top of the whiteboard (high enough that it's out of the way for the entire class):&lt;br /&gt;&lt;blockquote&gt;"There are 10 types of people in this world, those that understand binary and those that don't."&lt;br /&gt;&lt;/blockquote&gt;If anyone asks about it, I say that we'll cover it at the end of class.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;[Note: This quote should only be used for the first class that you introduce binary, otherwise it won't be nearly as effective. I used this quote last spring with these students when I introduced binary, but did not use it in this review class.]&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Powers of Two&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;At the start of each class, we begin with a simple exercise. For the first few classes, we cover the powers of 2. I first (jokingly) check to make sure that everyone knows how to multiply by 2 and then write:&lt;br /&gt;&lt;blockquote&gt; 1&lt;br /&gt; 2&lt;br /&gt; 4&lt;br /&gt;&lt;/blockquote&gt;and then go around the room asking the students to multiply the previous value by 2:&lt;br /&gt;&lt;blockquote&gt; 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536&lt;br /&gt;&lt;/blockquote&gt;I usually stop at 65536 and then point out 2&lt;sup&gt;8&lt;/sup&gt; (256) and 2&lt;sup&gt;16&lt;/sup&gt; (65536) as values that we'll be encountering later as we learn more about computers.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Review Octal&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Even though my goal is to teach binary and hexadecimal, I always start with octal since I believe that it's an easier transition from decimal: when counting in binary, new digits are added rapidly for the first few number and this can be confusing. And with hexadecimal, we're adding additional symbols into the mix, so it's easier to introduce that once they've already mastered an alternate number system.&lt;br /&gt; &lt;br /&gt;So, what did we cover last week? Numbers, binary, octal. We're going to continue with that this week.&lt;br /&gt;&lt;br /&gt;I briefly review place-value number systems and describe base-10 (decimal) and base-8 (octal).&lt;br /&gt;&lt;br /&gt;Decimal is based on 10's. It has 10 digits (0-9), and the places are based on 10:&lt;br /&gt;&lt;table align="center" cellpadding="3"&gt;&lt;tr&gt;&lt;td align="center"&gt;1000's&lt;/td&gt;&lt;td align="center"&gt;100's&lt;/td&gt;&lt;td align="center"&gt;10's&lt;/td&gt;&lt;td align="center"&gt;1's&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center"&gt;10x10x10&lt;/td&gt;&lt;td align="center"&gt;10x10&lt;/td&gt;&lt;td align="center"&gt;10&lt;/td&gt;&lt;td align="center"&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center"&gt;10&lt;sup&gt;3&lt;/sup&gt;&lt;/td&gt;&lt;td align="center"&gt;10&lt;sup&gt;2&lt;/sup&gt;&lt;/td&gt;&lt;td align="center"&gt;10&lt;sup&gt;1&lt;/sup&gt;&lt;/td&gt;&lt;td align="center"&gt;10&lt;sup&gt;0&lt;/sup&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;Octal is based on 8's. It has 8 digits (0-7), and the places are bases on 8:&lt;br /&gt;&lt;table align="center" cellpadding="3"&gt;&lt;tr&gt;&lt;td align="center"&gt;512's&lt;/td&gt;&lt;td align="center"&gt;64's&lt;/td&gt;&lt;td align="center"&gt;8's&lt;/td&gt;&lt;td align="center"&gt;1's&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center"&gt;8x8x8&lt;/td&gt;&lt;td align="center"&gt;8x8&lt;/td&gt;&lt;td align="center"&gt;8&lt;/td&gt;&lt;td align="center"&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center"&gt;8&lt;sup&gt;3&lt;/sup&gt;&lt;/td&gt;&lt;td align="center"&gt;8&lt;sup&gt;2&lt;/sup&gt;&lt;/td&gt;&lt;td align="center"&gt;8&lt;sup&gt;1&lt;/sup&gt;&lt;/td&gt;&lt;td align="center"&gt;8&lt;sup&gt;0&lt;/sup&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;i&gt;[Sidenote: I use this opportunity to remind the students that any number raised to the 0&lt;sup&gt;th&lt;/sup&gt; power is 1. If the students were thinking of powers as "how many times do I multiply this number by itself" then this result will seem odd (since you'll expect the answer to be 0). Hence, this is a great opportunity to reinforce the correct answer.]&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Octal Worksheets&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;To practice a bit with octal, we start with a few worksheets:&lt;br /&gt;&lt;br /&gt;Worksheet: &lt;a href="http://cse4k12.org/octal/octal_counting.html"&gt;Octal counting (1 &amp; 2)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;These worksheets have the students count circles that are pre-arranged into groups of eight to make it easy to determine the octal number. In addition to writing the octal number, the students must also write the corresponding decimal number.&lt;br /&gt;&lt;br /&gt;I hand out these worksheets in class and then give the students a few minutes to complete them before going over the answers. The purpose of this worksheet is to make the numbers concrete (by using the circles) since that helps break the association that (for example) the number '10' always means ten items (it means ten items in decimal, but eight items in octal). In addition, these worksheets also allow practice with the idea that ten items can be written in multiple ways: '10' in decimal, or '12' in octal.&lt;br /&gt;&lt;br /&gt;Worksheet: &lt;a href="http://cse4k12.org/octal/octal_dots.html"&gt;Octal dots&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This is similar to the previous worksheet except that they students are now required to draw the correct number of dots and then convert to decimal.&lt;br /&gt;&lt;br /&gt;When reviewing the answers for these worksheets, I point out that the answers can be checked by simply multiplying out the numbers by the place values.  So if you have octal 35, you can break it up as:&lt;br /&gt;&lt;blockquote&gt;= 3 in the eights position, 5 in the ones position&lt;br /&gt;= 3 x 8 + 5 x 1&lt;br /&gt;= 29&lt;br /&gt;&lt;/blockquote&gt;This is a direct result of how positional number systems work, and it parallels what we do in decimal, where 29 is really 2 x 10 + 9 x 1.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;[Sidenote: Depending on how much you want your students to suffer, you can tell the following octal joke: "Why do computer programmers often confuse Christmas and Halloween?" Answer: Because Oct 31 = Dec 25 (Octal 31 = Decimal 25).]&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Worksheet: &lt;a href="http://cse4k12.org/octal/counting_in_octal.html"&gt;Counting in octal&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This is the last of the octal worksheets and has the students count from 0 to 63 in octal.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;[Sidenote: I make sure that I hand out this worksheet out after I finish all of the octal-decimal conversions that I want to cover in class. One time I had the students do this worksheet first and some of them kept it around as a reference for the later work. This meant that they were thinking less about the number representation/conversion and doing simple table lookups to get the answer.]&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Review Binary&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;For binary, it follows the same pattern that we saw with decimal and octal:&lt;br /&gt;&lt;br /&gt;Here's the decimal information for comparison: Decimal is based on 10's. It has 10 digits (0-9), and the places are based on 10:&lt;br /&gt;&lt;table align="center" cellpadding="3"&gt;&lt;tr&gt;&lt;td align="center"&gt;1000's&lt;/td&gt;&lt;td align="center"&gt;100's&lt;/td&gt;&lt;td align="center"&gt;10's&lt;/td&gt;&lt;td align="center"&gt;1's&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center"&gt;10x10x10&lt;/td&gt;&lt;td align="center"&gt;10x10&lt;/td&gt;&lt;td align="center"&gt;10&lt;/td&gt;&lt;td align="center"&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center"&gt;10&lt;sup&gt;3&lt;/sup&gt;&lt;/td&gt;&lt;td align="center"&gt;10&lt;sup&gt;2&lt;/sup&gt;&lt;/td&gt;&lt;td align="center"&gt;10&lt;sup&gt;1&lt;/sup&gt;&lt;/td&gt;&lt;td align="center"&gt;10&lt;sup&gt;0&lt;/sup&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;Binary is based on 2's. It has 2 digits (0 and 1), and the places are bases on 2:&lt;br /&gt;&lt;table align="center" cellpadding="3"&gt;&lt;tr&gt;&lt;td align="center"&gt;32's&lt;/td&gt;&lt;td align="center"&gt;16's&lt;/td&gt;&lt;td align="center"&gt;8's&lt;/td&gt;&lt;td align="center"&gt;4's&lt;/td&gt;&lt;td align="center"&gt;2's&lt;/td&gt;&lt;td align="center"&gt;1's&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center"&gt;2x2x2x2x2&lt;/td&gt;&lt;td align="center"&gt;2x2x2x2&lt;/td&gt;&lt;td align="center"&gt;2x2x2&lt;/td&gt;&lt;td align="center"&gt;2x2&lt;/td&gt;&lt;td align="center"&gt;2&lt;/td&gt;&lt;td align="center"&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center"&gt;2&lt;sup&gt;5&lt;/sup&gt;&lt;/td&gt;&lt;td align="center"&gt;2&lt;sup&gt;4&lt;/sup&gt;&lt;/td&gt;&lt;td align="center"&gt;2&lt;sup&gt;3&lt;/sup&gt;&lt;/td&gt;&lt;td align="center"&gt;2&lt;sup&gt;2&lt;/sup&gt;&lt;/td&gt;&lt;td align="center"&gt;2&lt;sup&gt;1&lt;/sup&gt;&lt;/td&gt;&lt;td align="center"&gt;2&lt;sup&gt;0&lt;/sup&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;At this point we practice converting numbers between binary and decimal. I describe the process on the whiteboard and the students practice:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Converting a decimal number into binary by repeatedly subtracting powers of 2.&lt;/li&gt;&lt;li&gt;Converting a binary number into decimal by adding the power-of-2 that corresponds to each '1' digit in the binary number.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;i&gt;[Sidenote: I created some worksheets for this, but didn't have them ready in time for this class, so I'll provide more details in my post for next week's class.]&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;If there is time, I also like to introduce the &lt;a href="http://cse4k12.org/binary/magic_trick.html"&gt;Binary Magic Trick&lt;/a&gt; just after I cover how to convert from binary to decimal. Be prepared for the students to be really disappointed when they learn how the trick works - the younger students especially seem to prefer to live a world where you were able to magically read their mind (rather than simply convert from binary to decimal).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Binary Worksheets&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Worksheet: &lt;a href="http://cse4k12.org/binary/counting_in_binary.html"&gt;Counting in binary&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Similar to the "Counting in octal" worksheet, but this time for binary. The students must count from 0 to 63 in binary ('0' to '111111')&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Wrapping up&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;In summary:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Binary is for computers, decimal is for humans&lt;/li&gt;&lt;li&gt;Converting between decimal and binary is not difficult, but it is tedious:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Converting binary to decimal requires lots of adding&lt;/li&gt;&lt;li&gt;Converting decimal to binary requires lots of repeated subtraction&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Since it's annoying to do this conversion all the time (especially for large numbers), we'd like to have an easier way. And we'll cover that next week.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Binary Quote (part II)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;At the very end of class, I go back to the binary quote written at the top of the board. I ask a student to read the quote aloud. Invariably, they will start off with "There are ten types of...", and I'll stop them at that point and write "ten" on the board?&lt;br /&gt;&lt;blockquote&gt; "Does it say 'ten'?  I don't see a 'ten' there - I see a '1' and a '0'."&lt;br /&gt;&lt;/blockquote&gt;This is usually sufficient to make the connection, but if needed, you can ask the students what '10' is in binary.&lt;br /&gt;&lt;br /&gt;I now congratulate the students on their transition from the "those that don't" group into the "those that understand binary" one.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;[Sidenote: I once asked a student what he thought the quote was about when he first read it at the beginning of class (before he knew binary). He responded that he thought it was unfinished and that I would be adding 8 more items later.]&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;End of class. Next week we'll continue with converting between number systems and introduce hexadecimal.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4701668830837946147-7432988851552473597?l=cse4k12.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cse4k12.blogspot.com/feeds/7432988851552473597/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4701668830837946147&amp;postID=7432988851552473597' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/7432988851552473597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/7432988851552473597'/><link rel='alternate' type='text/html' href='http://cse4k12.blogspot.com/2010/11/computer-class-week-2.html' title='Computer Class - Week #2'/><author><name>Gary Kacmarcik</name><uri>http://www.blogger.com/profile/06251485476040169610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4701668830837946147.post-7916520833436752974</id><published>2010-10-28T00:07:00.000-07:00</published><updated>2010-10-28T00:07:29.854-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CodeIn'/><category scheme='http://www.blogger.com/atom/ns#' term='ComputationalThinking'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>Google Code-in and Exploring Computational Thinking</title><content type='html'>I run across a large number of education links that talk about how to use a particular computer program or website to create lesson plans or other classroom materials. For example, there are pages like:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://docs.google.com/support/bin/answer.py?hl=en&amp;answer=158149"&gt;Using Google Docs: Docs for teachers&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://office.microsoft.com/en-us/word-help/create-a-lesson-plan-with-word-HA001034910.aspx"&gt;Creating a lesson plan with Word&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;I suppose that I run across these a lot because they (on the surface) seem to apply to the topic of 'teaching' and 'computers'.  As someone who teaches how to program computers, it can be frustrating that these 'how to teach using computers' pages seem to drown out the content that is of real interest to me.&lt;br /&gt;&lt;br /&gt;I can accept the fact that there are more educators out there trying to &lt;i&gt;use&lt;/i&gt; computers than there are trying to &lt;i&gt;teach&lt;/i&gt; computers and so, Yes I can see how these pages are serving a useful purpose. But No, I still don't find them particularly interesting.&lt;br /&gt;&lt;br /&gt;The reason I bring this up is because I've recently come across not one, but two interesting links to Google projects that I think are interesting for people teaching computer science in 6th through 12th grade. Since I work for Google, I was hesitant because I tend to be suspicious of other people who push their employer's projects on their blogs, so I was starting to get suspicious of myself. I don't want this blog to start linking to every 'How to use Google product X in your classroom' document on the web.&lt;br /&gt;&lt;br /&gt;But having thought about it a bit, I really think that these projects are both interesting and relevant to K-12 Computer Science educators.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Google Code-in 2010&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The first one is &lt;a href="http://google-opensource.blogspot.com/2010/10/google-code-in-schools-out-codes-in.html"&gt;Google Code-in 2010&lt;/a&gt;, announced back on 7 October 2010. As I read the description, it sounds like Google's &lt;a href="http://code.google.com/soc/"&gt;Summer of Code&lt;/a&gt; (SoC) but for pre-university students.&lt;br /&gt;&lt;br /&gt;If you're unfamiliar with SoC, it is basically a summer job for college students where they are paid by Google to work (from home) on a selected set of open source projects. The open source projects act as 'mentor organizations' for the students as they work on their assigned summer task.&lt;br /&gt;&lt;br /&gt;For the Code-in, each open source project will propose a set of tasks and students will claim tasks to work on. When the task is done, the mentor organization will evaluate the work and accept the task as done (assuming the work was done properly). For every three tasks, the student gets $100, up to a max of $500.&lt;br /&gt;&lt;br /&gt;As is stated in the Code-in &lt;a href="http://code.google.com/opensource/gci/2010-11/faqs.html"&gt;FAQ&lt;/a&gt;:&lt;br /&gt;&lt;blockquote&gt;It is Google's not so secret hope that the student contestants of today will be long-term contributors to these and other open source projects in the future.&lt;br /&gt;&lt;/blockquote&gt;In other words, they hope that students participating in this contest will become computer scientists and programmers.&lt;br /&gt;&lt;br /&gt;This is open to students between the ages of 13 and 18 (as of 22 November 2010) and runs from 22 November 2010 until 10 January 2011. The list of mentor organizations hasn't been announced yet, but the list will be posted on the &lt;a href="http://code.google.com/opensource/gci/2010-11/index.html"&gt;Code-in&lt;/a&gt; site on 5 November 2010.&lt;br /&gt;&lt;br /&gt;If you're interested, be sure to check out main &lt;a href="http://code.google.com/opensource/gci/2010-11/index.html"&gt;Code-in&lt;/a&gt; site. There are many more details than I can give here, and any updates or changes will be posted there.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Exploring Computational Thinking&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The second link of interest is to &lt;a href="http://www.google.com/edu/ect"&gt;Exploring Computational Thinking&lt;/a&gt;. This site contains a set of &lt;a href="http://www.google.com/edu/computational-thinking/lessons.html"&gt;lessons&lt;/a&gt; created by teachers that can be used to demonstrate computational thinking in a variety of math and science topics, such as:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Calculating percent change&lt;/li&gt;&lt;li&gt;Determining the distance between 2 points&lt;/li&gt;&lt;li&gt;Finding the roots of an equation&lt;/li&gt;&lt;li&gt;Understanding Filters (in Cellular Biology)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;The site was &lt;a href="http://googleforstudents.blogspot.com/2010/10/exploring-computational-thinking.html"&gt;announced&lt;/a&gt; earlier this week so it's still fairly new, but it already contains over 60 different lessons for grades ranging from 6th through 12th.&lt;br /&gt;&lt;br /&gt;It will be interesting to see how people make use of these materials since it seems (to me) that they might be most useful for non-CS teachers interested in including some CS material. Although CS teachers should also find the material useful since the lessons make a nice summary of how CS ('computational thinking') can be relevant to math and science education.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4701668830837946147-7916520833436752974?l=cse4k12.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cse4k12.blogspot.com/feeds/7916520833436752974/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4701668830837946147&amp;postID=7916520833436752974' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/7916520833436752974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/7916520833436752974'/><link rel='alternate' type='text/html' href='http://cse4k12.blogspot.com/2010/10/google-code-in-and-exploring.html' title='Google Code-in and Exploring Computational Thinking'/><author><name>Gary Kacmarcik</name><uri>http://www.blogger.com/profile/06251485476040169610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4701668830837946147.post-2326790629458311241</id><published>2010-10-23T07:26:00.000-07:00</published><updated>2010-10-23T07:26:43.974-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Materials'/><title type='text'>Using PlainCards to create classroom materials</title><content type='html'>For a while I've had my eyes open to pick up some printable cardstock that was pre-perforated to make 'playing card'-sized classroom material.&lt;br /&gt;&lt;br /&gt;I've tried printing the cards out on regular paper, but that doesn't feel right when you have a stack of them. Laminating helps make the cards sturdier, but they still don't slide off each other the way regular playing cards do (and the cards tend to stick together a bit).&lt;br /&gt;&lt;br /&gt;The standard place to go for cardstock products like this is &lt;a href="http://www.avery.com/avery/en_us/Products/Cards/"&gt;Avery&lt;/a&gt;, and they have a number of products that are almost (but not quite) like this: they list Business Cards, Greeting Cards, Note Cards, Index Cards, Postcards, Tent Cards, Rotary Cards, and ID Cards.&lt;br /&gt;&lt;br /&gt;But not Playing Cards.&lt;br /&gt;&lt;br /&gt;This is unfortunate because the cardstock products that they have don't work well for cards that you want to stack and hold in your hand. Either the size is wrong (business cards are too small; greeting and note cards are too big) or the cards don't slide against each other well.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;PlainCards&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;However, a company called &lt;a href="http://plaincards.com/"&gt;PlainCards&lt;/a&gt; makes exactly what I was looking for: micro-perforated cardstock that you can run through your printer to make custom cards.&lt;br /&gt;&lt;br /&gt;My immediate need was to create "number system" cards to teach binary, octal and hexadecimal, so I picked up a set of the &lt;a href="http://www.plaincards.com/Store/shopdisplayproducts.asp?id=56&amp;amp;cat=Blank+Playing+Cards+with+Pattern+Backs"&gt;Blank Playing Cards with Pattern Backs&lt;/a&gt;.&lt;br /&gt;&lt;p align="center"&gt;&lt;img src="http://www.plaincards.com/images/Red_Blue.jpg" /&gt;&lt;/p&gt;These are blank on one side and have a standard 'playing card' pattern on the back so that you only need to print on one side. They also offer cards that are blank on both sides so you can print your own card backs, but this seems unnecessary for classroom material.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Software&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;To layout the card designs, PlainCards offers their own &lt;a href="http://www.plaincards.com/Store/shopdisplayproducts.asp?id=71&amp;cat=Software+for+PLAYING+CARD+Design"&gt;QuickCards3&lt;/a&gt; software. This is free to download, but you need to buy it for ~$17 if you want to be able to print. I can't comment on the quality of the software since I haven't used it, but I didn't feel it was worth purchasing. One annoying thing about how they market this software is that they divide it into three separate versions: one for Playing Cards, another for Game &amp; Trading Cards and yet another for Tarot Cards. Of course, you have to buy each one separately (or get the special bundle pricing).&lt;br /&gt;&lt;br /&gt;Rather than use their software, I created some blank templates in &lt;a href="http://inkscape.org/"&gt;Inkscape&lt;/a&gt;, which is a freely available, open-source vector drawing package (download &lt;a href="http://inkscape.org/download/?lang=en"&gt;here&lt;/a&gt; for Mac, Windows, et al.). Note that these template are &lt;a href="http://en.wikipedia.org/wiki/Scalable_Vector_Graphics"&gt;SVG&lt;/a&gt; files, so they should work fine in any vector drawing application like Illustrator or Freehand.&lt;br /&gt;&lt;br /&gt;Download: &lt;a href="http://cse4k12.org/misc/plaincards.html"&gt;PlainCards Blank Template&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The templates are quite simple: they contain boxes marking the micro-perforation outlines on the PlainCards cardstock. To use the templates, simply:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Add your design/artwork&lt;/li&gt;&lt;li&gt;Use the bounding box outlines to center the design for each card&lt;/li&gt;&lt;li&gt;Delete (or hide) the bounding box outlines&lt;/li&gt;&lt;li&gt;Print&lt;/li&gt;&lt;/ul&gt;Note that the perforations are centered and symmetric on the cardstock, so you don't need to worry about paper orientation when printing.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Overall&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Overall, the PlainCards did exactly what I wanted them to do and I'll certainly be using more of them to create class materials. After I finish the current batch of number system cards, I plan on going back and re-doing the &lt;a href="http://cse4k12.org/binary/magic_trick.html"&gt;Binary Magic Trick&lt;/a&gt; cards so they can be printed directly onto PlainCards.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Other Reviews&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Here are a couple other reviews for PlainCards, written by people using them to make custom cards for their games. They provide some useful tips on how to carefully remove the cards from the cardstock after printing.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://scottzier.blogspot.com/2009/03/plaincards-ftw.html"&gt;PlainCards FTW!&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://hobbyblog.wargameweaver.com/mordheim/making-mordheim-campaign-cards-with-plaincards"&gt;Making Mordheim Campaign Cards with PlainCards&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4701668830837946147-2326790629458311241?l=cse4k12.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cse4k12.blogspot.com/feeds/2326790629458311241/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4701668830837946147&amp;postID=2326790629458311241' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/2326790629458311241'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/2326790629458311241'/><link rel='alternate' type='text/html' href='http://cse4k12.blogspot.com/2010/10/using-plaincards-to-create-classroom.html' title='Using PlainCards to create classroom materials'/><author><name>Gary Kacmarcik</name><uri>http://www.blogger.com/profile/06251485476040169610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4701668830837946147.post-7488864586603949141</id><published>2010-10-17T09:28:00.000-07:00</published><updated>2010-10-17T09:28:33.303-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='STEM'/><category scheme='http://www.blogger.com/atom/ns#' term='TeachingCS'/><title type='text'>Getting "Computing in the Core"</title><content type='html'>I've typically avoided spending much time on trying to convince school board (or whomever) that they should do more to include Computer Science &amp; Engineering &amp; Programming in the K-12 curriculum.  This is not because I feel this is unimportant (double-negative = yes, I think it's important), but rather that I'd rather not get mired in the politics at this point. In any case there are lots of competent people already working on this (uphill) battle.&lt;br /&gt;&lt;br /&gt;I've also felt that I can do my part by creating and publishing various assignments, projects and presentations so that other instructors can make use of them.  (I've been doing OK on the 'creating' part, but I have a large backlog of material I need to get around to 'publishing').&lt;br /&gt;&lt;br /&gt;Getting back to the 'lots of competent people already working on this' topic, I just saw the announcement for &lt;a href="http://www.computinginthecore.org"&gt;Computing in the Core&lt;/a&gt; (CinC) which touts itself as a:&lt;br /&gt;&lt;blockquote&gt;...non-partisan advocacy coalition of &lt;i&gt;[blah, blah, blahs]&lt;/i&gt; that strive to elevate computer science education to a core academic subject in K-12 education...&lt;br /&gt;&lt;/blockquote&gt;And it made me go 'yea!'&lt;br /&gt;&lt;br /&gt;Even if they focus only on 9th-12th grade (which I hope they don't), their success would still makes a great start since eventually the requirements will trickle down to the lower grades. I strongly believe that we should be starting earlier with CS education and that many of the problems we encounter are due to the late start, but that's another topic for another day.&lt;br /&gt;&lt;br /&gt;I was reminded of the importance of getting CS into the core curriculum when I was talking with a friend the other day:&lt;br /&gt;&lt;blockquote&gt;This friend has a daughter who attends a middle-school with an after-school robotics program.  She was interested in this class (and had done some robotics in the past) but none of here friends were going to be taking it. In the end, she chose not to sign up for the program.&lt;br /&gt;&lt;/blockquote&gt;If this had been a "6th period robotics" class that everyone had to take, this would not have happened.  It's difficult to be the only one of your peers interested in something like this.  Who knows, maybe her friends would have enjoyed it as well.&lt;br /&gt;&lt;br /&gt;But to finish up on a positive note. Yea for CinC! I hope that they are wildly successful.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4701668830837946147-7488864586603949141?l=cse4k12.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cse4k12.blogspot.com/feeds/7488864586603949141/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4701668830837946147&amp;postID=7488864586603949141' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/7488864586603949141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/7488864586603949141'/><link rel='alternate' type='text/html' href='http://cse4k12.blogspot.com/2010/10/getting-computing-in-core.html' title='Getting &quot;Computing in the Core&quot;'/><author><name>Gary Kacmarcik</name><uri>http://www.blogger.com/profile/06251485476040169610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4701668830837946147.post-3591421441269192953</id><published>2010-10-10T10:10:00.000-07:00</published><updated>2010-10-10T10:53:30.275-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Octal'/><category scheme='http://www.blogger.com/atom/ns#' term='TeachingCS'/><category scheme='http://www.blogger.com/atom/ns#' term='ClassSummary'/><category scheme='http://www.blogger.com/atom/ns#' term='Binary'/><title type='text'>Computer Class - Week #1</title><content type='html'>&lt;i&gt;[So, this past week my Computer Class finally started. We purposefully delayed the start until the school year was well underway so that the students didn't have everything starting at the same time. This class is sortof a continuation of what I taught last spring, and sortof a new class since we'll be taking things a different direction.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Last spring, I covered basic pre-programming skills: number systems + logic and data representation. Later we went into electronics since that meshed well with what was being taught in the students' regular class.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;This year I'll be doing (roughly) the following:&lt;/i&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;(Review) Pre-programming skills: number systems and logic&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;How computers work and computer architecture&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Computer programming (embedded systems like GBA and Arduino, then HTML+JavaScript)&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;i&gt;The rest of this post is a rough outline of what I covered in the first class.]&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;(1) Welcome - Introductions and getting settled.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This was a simple intro and an overview of what the goals are for the class.&amp;nbsp;These goals are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Get everyone to understand how computers work&lt;/li&gt;&lt;li&gt;Get everyone to understand how to write a basic program&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;I also emphasized that the class will be working together to learn these things. We're not going to zip along and leave people behind, so it's in everyone's best interest to collaborate and help each other out.&lt;br /&gt;&lt;br /&gt;My goal is to make all of this seem easy. Your goal is to work together and let me know if anything doesn't make sense.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;(2) Roadmap - What we'll be covering in this class.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;As a roadmap for the class, I drew (something like) the following on the whiteboard:&lt;br /&gt;&lt;br /&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align="center"&gt;&lt;/td&gt;&lt;td align="center"&gt;Java App&lt;/td&gt;&lt;td align="center"&gt;C# App&lt;/td&gt;&lt;td align="center"&gt;HTML/JavaScript&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center"&gt;C/C++ App&lt;/td&gt;&lt;td align="center"&gt;JVM&lt;/td&gt;&lt;td align="center"&gt;CLR&lt;/td&gt;&lt;td align="center"&gt;Browser&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center" colspan="4"&gt;Operating System (Windows, Mac, Linux)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center" colspan="4"&gt;Kernel, device drivers&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center" colspan="4"&gt;~~~~~~~~~~~~~~~~~~~~&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center" colspan="4"&gt;CPU, Memory, I/O Devices...&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center" colspan="4"&gt;Functional units&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center" colspan="4"&gt;Logic gates&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center" colspan="4"&gt;Transistors&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center" colspan="4"&gt;Electricity&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Everything above the squiggly-line is software and everything below it is hardware.&lt;br /&gt;&lt;br /&gt;Most desktop applications (like Microsoft Office or Adobe Photoshop) that you buy today fall into the "C/C++ App" bucket in the above diagram (although there are many other languages that can be used as well). You can also find a lot of applications written in Java or C# as well, and many websites make use of JavaScript in addition to basic HTML.&lt;br /&gt;&lt;br /&gt;Computer classes will typically spend all their time in one of the upper "programming language" boxes: C, C++, Java, C#, JavaScript or whichever language the class is built around. There's nothing particularly wrong with that - it's perfectly valid to choose a language and focus on the parts of programming that are "above" this diagram (like data structures and algorithms).&lt;br /&gt;&lt;br /&gt;But notice how many layers there are between the programs you write and the underlying hardware. You have at least the OS and you might also have one or more virtual machines (like the Java Virtual Machine - JVM) or an application (like your web browser). &amp;nbsp;Rarely do programming classes attempt to describe what it going on in these lower layers, and rarer still are those that attempt to describe what's going on in the hardware layers.&lt;br /&gt;&lt;br /&gt;But this class is different. In this class we will:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Start from the bottom and work our way up (for the most part)&lt;/li&gt;&lt;li&gt;Explore embedded systems (like the GBA, Nintendo DS and Arduino) so that we have fewer layers between the software we write and the hardware we use.&lt;/li&gt;&lt;/ul&gt;This will help us to actually answer the question: "How do computers work?"&lt;br /&gt;&lt;br /&gt;We'll still do some work at these upper layers as well. Once we'll built the foundation, we'll start covering higher level languages and discuss more advanced programming concepts.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;(3) So, How do computers work?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;I asked the class, does anyone know? How would you describe it to a friend who was curious to know how they worked?&lt;br /&gt;&lt;br /&gt;The answers to this question typically fall into one of three categories:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Magic gnomes&lt;/li&gt;&lt;li&gt;CPU + Memory + "other stuff"&lt;/li&gt;&lt;li&gt;'0's and '1's&lt;/li&gt;&lt;/ul&gt;What's interesting about these answers is that none of them really tell you anything useful about how a computer works.&lt;br /&gt;&lt;br /&gt;Compare this to common answers for "how does a car work?" and you can see the difference. Yes, some people will simply say "I don't know" or have stop at an "engine + wheels" description, but a large number of people will be able to talk about "gasoline + pistons + tiny explosions + crankshaft to make rotary motion + wheels". It's not perfect, but there's enough information there to understand why you need put gasoline in a car and change your oil regularly.&lt;br /&gt;&lt;br /&gt;Going back to the computer descriptions above, and you'll see that they are (at best) the "engine + wheels" variety. The last 2 (technically correct) descriptions are really not much better than the "magic gnomes" description - none of them make you feel like you understand what's going on.&lt;br /&gt;&lt;br /&gt;This is why we'll be focusing (at least at the beginning) on "how computers work" rather than "how to use computers" or "how to program computers". &lt;br /&gt;&lt;br /&gt;&lt;b&gt;(4) Binary (review)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;[This was a review from material covered at the end of last year, so we went pretty quickly over this.]&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;I took out a bunch of counters - I use glass counter beads because I like the feel - and dumped a bunch on the table in the front of the class. &amp;nbsp;How many glass beads do I have?&lt;br /&gt;&lt;br /&gt;I forget the exact number, but it was something like 25. So I write '25' on the board.&lt;br /&gt;&lt;br /&gt;What are some other ways of recoding this number?&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Tally marks: using vertical lines or 正 (in China, Japan and Korea)&lt;/li&gt;&lt;li&gt;Roman numerals: XXV&lt;/li&gt;&lt;li&gt;Chinese/Japanese characters: 二五 or 二十五&lt;/li&gt;&lt;li&gt;Arabic (middle-eastern) numerals: ٢٥&lt;/li&gt;&lt;li&gt;Scientific notation: 2.5e1 or 2.5 x 10&lt;sup&gt;1&lt;/sup&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;What are the advantages/disadvantages of each?&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Tally marks: Good for counting, keeping score in a game&amp;nbsp;(easy to add 1). Bad for numbers greater than ~50. No way to represent 0.&lt;/li&gt;&lt;li&gt;Roman numerals: Better than tally marks for numbers greater than 20. Still not good for numbers larger than ~10,000.&lt;/li&gt;&lt;li&gt;Scientific notation: Useful for very large and very small numbers.&lt;/li&gt;&lt;li&gt;Chinese/Japanese/Arabic: Note that the actual symbols don't matter, they're all valid for representing numbers.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;The number system we commonly use is a "positional number system" called decimal or base-10. Key features of our number system:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Uses 10 distinct symbols, including a symbol to represent zero.&lt;/li&gt;&lt;li&gt;Positional: Symbols are arranged in positions based on powers of 10: ones, tens, hundreds, ...&lt;/li&gt;&lt;li&gt;Each symbol changes meaning based on its position. '3' in the ones position means 3, but in the tens position is means 30.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Why ten? We could have used any other number. In fact, some cultures have used 12 instead of 10 because 12 is 'more interesting' (evenly divisible by 2,3,4,6, whereas 10 is evenly divisible by only 2,5). We still have remnants of 12 in our culture (hours on a clock, dozen eggs, ...).&lt;br /&gt;&lt;br /&gt;What about base-8 (for octal). That would have 8 symbols: 0,1,2,3,4,5,6,7. &amp;nbsp;Each position would be based on 8: ones, eights, sixty-fours (8x8), ...&lt;br /&gt;&lt;br /&gt;How would we represent this number of counters (remember we had 25) in octal? 3 groups of 8 + 1 left over = 3 in the 'eights' position and 1 in the 'ones' position = 31.&lt;br /&gt;&lt;br /&gt;What about base-2 (for binary). That would have 2 symbols: 0,1. Each position would be based on 2: ones, twos, fours (2x2), eights (2x2x2), sixteens (2x2x2x2), ...&lt;br /&gt;&lt;br /&gt;We were running out of time, so we didn't have a lot of time to practice, but I gave each student a handful of counters and they each practiced counting in decimal and octal and binary. This was review from last year and most remembered how the process worked.&lt;br /&gt;&lt;br /&gt;Key takeaways:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The positional number system was a key cultural advance. Requires a symbol for zero to work.&lt;/li&gt;&lt;li&gt;The choice of 10 was arbitrary - any number base could have been used.&lt;/li&gt;&lt;li&gt;Binary uses only 2 symbols 0,1, but it can represent any number that you can in decimal. It just requires more digits.&lt;/li&gt;&lt;li&gt;Computers do, in fact, use binary for everything. How this works will be covered later.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Ah, well. Out of time.... This is where we'll pick up next week as we do a bit more review of number systems...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4701668830837946147-3591421441269192953?l=cse4k12.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cse4k12.blogspot.com/feeds/3591421441269192953/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4701668830837946147&amp;postID=3591421441269192953' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/3591421441269192953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/3591421441269192953'/><link rel='alternate' type='text/html' href='http://cse4k12.blogspot.com/2010/10/computer-class-week-1.html' title='Computer Class - Week #1'/><author><name>Gary Kacmarcik</name><uri>http://www.blogger.com/profile/06251485476040169610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4701668830837946147.post-3306710667324928972</id><published>2010-09-27T21:33:00.000-07:00</published><updated>2010-09-27T21:33:55.295-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Policy'/><category scheme='http://www.blogger.com/atom/ns#' term='STEM'/><title type='text'>Hiring 10,000 new STEM teachers</title><content type='html'>So, the White House announced today their goal of recruiting 10,000 new STEM (Science, Technology, Engineering &amp;amp; Math) teachers over the next two years, as a first step in recruiting 100,000 new STEM teachers over the next decade:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.whitehouse.gov/the-press-office/2010/09/27/president-obama-announces-goal-recruiting-10000-stem-teachers-over-next-"&gt;President Obama Announces Goal of Recruiting 10,000 STEM Teachers Over the Next Two Years&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This follows the announcement last week of the&amp;nbsp;&lt;a href="http://www.changetheequation.org/"&gt;Change the Equation&lt;/a&gt;&amp;nbsp;(CTEq) program, which describes itself as a "CEO-led initiative to solve America’s innovation problem" and is focused on getting corporations to help fill the gaping holes in our K-12 STEM education. CTEq sounds rather interesting, with projects like Intel Math and FIRST Robotics, but it's also kinda disappointing that we have to rely so heavily on these external programs to fix our broken education system.&lt;br /&gt;&lt;br /&gt;These announcements are all good news, but I don't see this helping out Computer Science education all that much.&lt;br /&gt;&lt;br /&gt;I noted that, while "launch[ing] robotics competitions" sounded cool enough to get a mention in the &lt;a href="http://www.whitehouse.gov/blog/2010/09/16/changing-equation-stem-education"&gt;White House blog's announcement for CTEq&lt;/a&gt;, not once did any of these White House announcements mention anything about computers or programming. It's always "math" and "science", where these terms retain their traditional meaning without expanding them to include the new sciences.&lt;br /&gt;&lt;blockquote&gt;"Math &amp;amp; Science. Hey! We already have math and science programs in our schools. We just need more of it, right? Let's hire more teachers.&amp;nbsp;We just need to keep doing what we have always been doing, only more so!"&lt;/blockquote&gt;These initiatives are a nice start, but it would be great if they did something like explicitly include computer science in what they mean by "science". The White House could do this and people would actually listen. As it is now, schools are tied to traditional definitions for math and science and will continue teaching to whatever graduation metric they have in place.&lt;br /&gt;&lt;br /&gt;So how many K-8 STEM teachers do you think will be hired? &amp;nbsp;Something tells me that most (if not all) of this hiring will be at the high school level where, in my opinion, you've already missed the opportunity to get young students really excited about math, science and programming.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4701668830837946147-3306710667324928972?l=cse4k12.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cse4k12.blogspot.com/feeds/3306710667324928972/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4701668830837946147&amp;postID=3306710667324928972' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/3306710667324928972'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/3306710667324928972'/><link rel='alternate' type='text/html' href='http://cse4k12.blogspot.com/2010/09/hiring-10000-new-stem-teachers.html' title='Hiring 10,000 new STEM teachers'/><author><name>Gary Kacmarcik</name><uri>http://www.blogger.com/profile/06251485476040169610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4701668830837946147.post-7382506124495391672</id><published>2010-09-08T14:40:00.000-07:00</published><updated>2010-09-08T14:40:07.954-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TeachingCS'/><title type='text'>Starting the new school year...</title><content type='html'>The new school year has begun and I will soon be starting my computer class at a local (Seattle-area) Montessori school. &amp;nbsp;Since my class is extra-curricular, I delay the start a bit so that the students can settle into their normal routine before the new class begins. The planned start date is the first week of October.&lt;br /&gt;&lt;br /&gt;The class is primarily 6th-8th graders. I focus on this age group (upper elementary/middle school) because I'm trying to catch the students before they learn (&lt;i&gt;from where?! grrr...&lt;/i&gt;) things like "computers are difficult to understand" and "programming is hard".&lt;br /&gt;&lt;br /&gt;I'll be posting each week about the topics covered and I'll be including the materials that I create/use.&lt;br /&gt;&lt;br /&gt;The first 6 or so weeks will mostly be a review of what we covered during the 16 weeks of classes last year:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Number systems (binary, hexadecimal)&lt;/li&gt;&lt;li&gt;Boolean Logic (and, or, xor, not)&lt;/li&gt;&lt;li&gt;Data encoding (ASCII, hex editors)&lt;/li&gt;&lt;li&gt;Electronics (electricity, LEDs, resistors + using solderless breadboards)&lt;/li&gt;&lt;li&gt;+ some other stuff I can't recall at the moment...&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;And throughout this school year, I'll be covering:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Electronics (more LEDs with Arduino microcontrollers)&lt;/li&gt;&lt;li&gt;Transistors (and how to build basic logic gates from them)&lt;/li&gt;&lt;li&gt;Web pages (HTML5 + CSS + canvas)&lt;/li&gt;&lt;li&gt;Programming (Arduino, GameBoy/Nintendo DS)&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;and whatever else comes to mind that matches the students' interests. I'll probably also spend a day talking about ActionReplay codes and hacking DS games, but we'll see how much time there is for that.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The goal of this class is to teach the fundamentals of computers and programming so that the students actually understand what is going on under-the-covers. &amp;nbsp;I could skip all the details and just focus on the programming bits, but that's not nearly as interesting (for me nor the students).&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4701668830837946147-7382506124495391672?l=cse4k12.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cse4k12.blogspot.com/feeds/7382506124495391672/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4701668830837946147&amp;postID=7382506124495391672' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/7382506124495391672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/7382506124495391672'/><link rel='alternate' type='text/html' href='http://cse4k12.blogspot.com/2010/09/starting-new-school-year.html' title='Starting the new school year...'/><author><name>Gary Kacmarcik</name><uri>http://www.blogger.com/profile/06251485476040169610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4701668830837946147.post-6752857425325001248</id><published>2010-08-08T16:13:00.000-07:00</published><updated>2010-08-08T16:13:19.549-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cse4k12Resources'/><category scheme='http://www.blogger.com/atom/ns#' term='Internet'/><title type='text'>How the Internet Works - Part III - Routing Traffic</title><content type='html'>&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;[This is the third in a 4-part post that describes an activity to demonstrate how the internet works. This part describes how the internet routes traffic using IP addresses.]&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;&lt;b&gt;Some notes on presentation:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;&lt;blockquote&gt;This document presents the activity as a rough script with "ACTION" breakouts when you need to perform some task. In this activity, you will be presenting information and directing the students as they act out the various parts of the internet.&lt;br /&gt;&lt;br /&gt;You shouldn't just read from this script verbatim (since that will be rather dull), but you will probably want to have this printed out with you while you're presenting. Use a highlighter and mark key points so that you can find them easily while presenting.&lt;br /&gt;&lt;br /&gt;Feel free to include additional information if you feel like it and accept questions and ad lib to follow the class interest. Throughout the script, there are a number of questions for the students that can be used to make the presentation more interactive.&lt;br /&gt;&lt;br /&gt;The files for this activity (routing tables and labels) can be downloaded from &lt;a href="http://www.cse4k12.org/internet/how-internet-works.html"&gt;www.cse4k12.org/internet/how-internet-works.html&lt;/a&gt;.&lt;br /&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;Internet&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The phone system (even in the very simplified form as described in the &lt;a href="http://cse4k12.blogspot.com/2009/12/how-internet-works-part-ii-phone-system.html"&gt;previous post&lt;/a&gt;), works reasonably well. But the internet differs from a phone network in a few key ways:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;b&gt;Packet-based communication&lt;/b&gt;. On the internet, data is bundled into self-contained "packets" that are routed through the internet.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Automatic address lookup&lt;/b&gt;. Every internet-connected device has an IP address, which is similar to a telephone number in that it uniquely identifies a computer on the internet. However, you don't need to know this IP address for the website you're visiting. To visit a website, you can simply type the domain name (like "&lt;code&gt;http://www.google.com&lt;/code&gt;") and the correct IP address will be automatically looked up.&lt;/li&gt;&lt;/ol&gt;We'll look at these two differences in turn &amp;mdash; starting with a discussion of packets. Address lookup will be covered in Part IV.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;&lt;b&gt;But first, a note on IP Addresses&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Currently, an IP ("Internet Protocol") address consists of four 8-bit numbers (ranging from 0 to 255) written in decimal and separated by dots, for example: &lt;code&gt;74.125.19.104&lt;/code&gt;. This 32-bit (4 x 8-bit) number is known as an &lt;b&gt;IPv4 address&lt;/b&gt; and it can provide unique IDs for up to 2&lt;sup&gt;32&lt;/sup&gt; (about 4 billion) computers.&lt;br /&gt;&lt;br /&gt;Because the number of devices connected to the internet will soon exceed the number of available addresses in IPv4, a new standard called IPv6 is being introduced. An &lt;b&gt;IPv6 address&lt;/b&gt; is 128-bits long and is written as a set of eight 16-bit hexadecimal numbers separated by colons (e.g., &lt;code&gt;2001:A3D2:32C9:1F37:0000:0000:0000:0000&lt;/code&gt;). These new IPv6 addresses can support up to 3.4 x 10&lt;sup&gt;38&lt;/sup&gt; unique devices.&lt;br /&gt;&lt;br /&gt;In this activity, we'll be using IPv4 addresses exclusively because they are easier to work with, but the same concepts presented here also apply to IPv6 addresses.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;Packet-based communication&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Unlike the traditional landline phone system, the internet is packet based. This means that computers on the internet communicate with each other by sending packets of information back and forth. Think of it as sending tiny electronic letters to each other with the internet acting as the postal service. Large "letters" are not allowed &amp;mdash; they must be broken into smaller pieces, sent separately and then reassembled on the receiving end.&lt;br /&gt;&lt;br /&gt;As an example, imagine writing a long letter (email) to grandma. You'd have to cut it into (say) 3 pieces, put each piece in a separate envelope (packet), number them (1,2,3), and mail them separately. When your grandmother receives the letter she would wait for all 3 pieces (packets), tape them together and then read the letter. Note that the pieces (packets) might not be received in the correct 1,2,3 order, so she may need to sort them before taping them together.&lt;br /&gt;&lt;br /&gt;The advantage of the packet-based system is that doesn't require a dedicated connection (remember the rope in the phone system example). This allows computers to support a very large number of simultaneous connections &amp;mdash; receive a packet, respond to it, go to the next packet. Imagine how inefficient it would be if you needed to have a dedicated connection to access every website you wanted to visit. And popular websites like Google or Wikipedia would only be able to support a relatively small number of simultaneous users. In addition, most of the connection capacity would be wasted while the computers waited for the next command/communication. And once people got a connection, they would probably try to hold on to it for as long as possible.&lt;br /&gt;&lt;br /&gt;So, how does this work? Basically the same was as the phone network except that we use "routers" instead of "switches". A "switch" (like we saw in the phone network), takes an incoming connection and connects it to its destination. It also needs to maintain this connection for the duration of the call. A "router" accepts a packet of information and then sends it on its way &amp;mdash; completely forgetting about it after sending it off. This allows the router to support a much larger number of users than it could otherwise handle.&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;ACTION: Collect the switching tables from nodes 1-6 and replace them with routing tables.  The switching tables can be set aside since they are no longer needed.&lt;/i&gt;&lt;/blockquote&gt;Skipping over the issue (for the time being) of how we lookup an IP address from a domain name like "www.google.com", let's follow an internet connection like we did with a phone connection.&lt;br /&gt;&lt;br /&gt;We'll start with a very small "internet". In this network, we have the basic elements that we find on the internet:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Two websites&lt;/b&gt;: in this case, &lt;code&gt;google.com&lt;/code&gt; and &lt;code&gt;wikipedia.org&lt;/code&gt;. In this network, Google is represented by 2 nodes (#5 and #9). In general, large websites on the internet will be distributed across multiple machines.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Two homes&lt;/b&gt;: you and your neighbor&lt;/li&gt;&lt;li&gt;&lt;b&gt;An ISP&lt;/b&gt;: this is your "Internet Service Provider". That's the company that you pay to keep you connected to the internet.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Three routers&lt;/b&gt;: "1", "2" and "3"&lt;/li&gt;&lt;/ul&gt;&lt;a href="http://goo.gl/photos/tGBF" imageanchor="1" style="clear:right;margin-bottom:1em;margin-left:1em"&gt;&lt;img border="0" style="display:block; margin:0px auto 10px; text-align:center; width: 320px; height: 313px" src="http://lh6.ggpht.com/_Qhf82R7sD-g/TF8ZURW5udI/AAAAAAAAATU/YZTNeIBa48E/s512/hiw-routing.png"&gt;&lt;/a&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;ACTION: Relabel the nodes on the graph as you mention them:&lt;br /&gt;&lt;br /&gt;4 : &lt;b&gt;ISP&lt;/b&gt; &amp;mdash; IP address = 65.32.236.122&lt;br /&gt;5 : &lt;b&gt;google.com&lt;/b&gt; &amp;mdash; IP address = 74.125.45.100&lt;br /&gt;6 : &lt;b&gt;wikipedia.org&lt;/b&gt; &amp;mdash; IP address = 208.80.152.2&lt;br /&gt;7 : &lt;b&gt;you&lt;/b&gt; &amp;mdash; IP address = 65.32.200.101&lt;br /&gt;8 : &lt;b&gt;neighbor&lt;/b&gt; &amp;mdash; IP address = 65.32.200.102&lt;br /&gt;9 : &lt;b&gt;www.google.com&lt;/b&gt; &amp;mdash; IP address = 74.125.19.104&lt;br /&gt;&lt;br /&gt;Note that nodes 1, 2 and 3 don't have labels. These are the “routers”. No need for a label, but they should be referred to as routers during this part of the activity.&lt;br /&gt;&lt;/i&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;i&gt;ACTION: Assign new students to the graph nodes, or re-assign the students to play different roles. Nodes 6 (wikipedia.org) and 8 (neighbor) aren't used for this part of the activity, so you will only need 7 students for the nodes on the graph + 1 additional student to act as a "runner". This runner will propagate the packets through the network.&lt;/i&gt;&lt;/blockquote&gt;As mentioned earlier, we'll start by pretending that we already know the IP address of the website we want to visit. So we already know that "www.google.com" has an IP address of "74.125.19.104".&lt;br /&gt;&lt;br /&gt;Once we have the IP address of a website, we can send a request to it. These requests are similar to letters in that they have a "TO" and a "FROM" and some content that is being sent.&lt;br /&gt;&lt;br /&gt;Here is a sample packet that we're going to send to Google:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The "TO" is the IP address of Google.&lt;/li&gt;&lt;li&gt;The "FROM" is your IP address.&lt;/li&gt;&lt;li&gt;The default content is a generic "Hey, show me your website" request. This is what we commonly refer to as "visiting" a website.&lt;/li&gt;&lt;/ul&gt;When you want to visit a website, you send your request out so that it gets delivered to the correct website. Since your ISP is your connection to the internet, you sent your request first to your ISP and it sends it along to its destination.&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;ACTION: Have the student at node 7 ("you") give the packet 1-1 to the "runner". The runner should then carry the packet, starting at “you”, to the ISP.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Packet: (1-1)&lt;br /&gt;To: 74.125.19.104 (www.google.com)&lt;br /&gt;From: 65.32.200.101 (you)&lt;br /&gt;Message: Please show me website&lt;/b&gt;&lt;/i&gt;&lt;/blockquote&gt;The routers operate in much the same way at the phone switches do - except that they use IP addresses instead of telephone numbers to decide what to do.&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;ACTION: Follow this packet through the various routers, up to node #9: &lt;code&gt;www.google.com&lt;/code&gt;.&lt;/i&gt;&lt;/blockquote&gt;When Google gets this request (packet), it sends back a response. This response is also a packet, but this time FROM google TO you. Since you didn't ask for anything specific, the contents of the packet are the main search page.&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;ACTION: Have the runner give the 1-1 packet to the "www.google.com" student at node #9. The website will now process the request and create a new packet to send back. Introduce packet 1-2 and have the runner take it back to the user.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Packet: (1-2)&lt;br /&gt;To: 65.32.200.101 (you)&lt;br /&gt;From: 74.125.19.104 (www.google.com)&lt;br /&gt;Message: Website contents (main search page with empty search box)&lt;/b&gt;&lt;/i&gt;&lt;/blockquote&gt;&lt;a href="http://goo.gl/photos/xDyb" imageanchor="1" style="clear:right;margin-bottom:1em;margin-left:1em"&gt;&lt;img border="0" style="display:block; margin:0px auto 10px; text-align:center; width: 300px; height: 250px" src="http://lh5.ggpht.com/_Qhf82R7sD-g/TF8uUrNPy4I/AAAAAAAAATc/nONpNq5Kqss/s512/message2-search.png"&gt;&lt;/a&gt;&lt;br /&gt;When you get the response packet, your web browser displays it on your computer screen. You can now interact with the webpage and enter a search term, like "donut", and send another request to Google.&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;ACTION: Have "you" give packet 1-3 to the runner and send it off.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Packet: (1-3)&lt;br /&gt;To: 74.125.19.104 (www.google.com)&lt;br /&gt;From: 65.32.200.101 (you)&lt;br /&gt;Message: Search for "donut"&lt;/b&gt;&lt;/i&gt;&lt;/blockquote&gt;But this time, let's see what happens when the network is damaged. Let's pretend that link "&lt;code&gt;Ii&lt;/code&gt;" is no longer working.&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;ACTION: Walk over to the "&lt;code&gt;Ii&lt;/code&gt;" link and stand there as a reminder that this link is no longer functioning.  Alternately, you can have a student stand there to block network traffic.&lt;/i&gt;&lt;/blockquote&gt;As with the phone example, the network routes around the damaged parts. Note that with the packet network, we didn't lose the connection and need to re-start it. The packet was already on its way and simply continued around the damage to reach the destination.&lt;br /&gt;&lt;br /&gt;When "www.google.com" finally gets the request, it runs the requested search and creates a new packet with the results to send back.&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;ACTION: Have "www.google.com" give packet 1-4 to the runner to send back.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Packet: (1-4)&lt;br /&gt;To: 65.32.200.101 (you)&lt;br /&gt;From: 74.125.19.104 (www.google.com)&lt;br /&gt;Message: Search results&lt;/b&gt;&lt;/i&gt;&lt;/blockquote&gt;&lt;a href="http://goo.gl/photos/Ztp0" imageanchor="1" style="clear:right;margin-bottom:1em;margin-left:1em"&gt;&lt;img border="0" style="display:block; margin:0px auto 10px; text-align:center; width: 300px; height: 250px" src="http://lh5.ggpht.com/_Qhf82R7sD-g/TF8uUggTkMI/AAAAAAAAATg/Td6D1tVB_LU/s512/message4-donut-results.png"&gt;&lt;/a&gt;&lt;br /&gt;If we have more damage to the network...&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;ACTION: Walk over to link "&lt;code&gt;Dd&lt;/code&gt;" to take it out of commission. Make sure the keep "&lt;code&gt;Ii&lt;/code&gt;" blocked as well.&lt;/i&gt;&lt;/blockquote&gt;...the network will route the packet around the new damage as well.&lt;br /&gt;&lt;br /&gt;And eventually the search results come back to you.&lt;br /&gt;&lt;br /&gt;So, a question: How long does all this take to run end-to-end? Well, how long do you wait for a webpage to return results before you start to get annoyed that the "internet is slow"?  In general, anything that takes longer than 1 second is irritatingly slow.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;&lt;b&gt;Setup for part IV&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So now we have our search results for "donut". Let's say there's a wikipedia link (&lt;code&gt;http://en.wikipedia.org/wiki/Doughnuts&lt;/code&gt;) in the results. What happens when we click on that? And how do we find the &lt;code&gt;wikipedia.org&lt;/code&gt; website if we don't know its IP address?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;[to be continued in Part IV]&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4701668830837946147-6752857425325001248?l=cse4k12.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cse4k12.blogspot.com/feeds/6752857425325001248/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4701668830837946147&amp;postID=6752857425325001248' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/6752857425325001248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/6752857425325001248'/><link rel='alternate' type='text/html' href='http://cse4k12.blogspot.com/2010/08/how-internet-works-part-iii-routing.html' title='How the Internet Works - Part III - Routing Traffic'/><author><name>Gary Kacmarcik</name><uri>http://www.blogger.com/profile/06251485476040169610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_Qhf82R7sD-g/TF8ZURW5udI/AAAAAAAAATU/YZTNeIBa48E/s72-c/hiw-routing.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4701668830837946147.post-2396937619595477290</id><published>2010-05-16T10:38:00.000-07:00</published><updated>2010-05-16T10:43:21.820-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Diversity'/><title type='text'>Boy Toys &amp; Girl Toys</title><content type='html'>&lt;a href="http://www.smbc-comics.com/"&gt;Saturday Morning Breakfast Cereal&lt;/a&gt;'s take on "Why are there so few girl engineers?"&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.smbc-comics.com/index.php?db=comics&amp;id=1883"&gt;&lt;br /&gt;&lt;img src="http://www.smbc-comics.com/comics/20100516.gif"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4701668830837946147-2396937619595477290?l=cse4k12.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cse4k12.blogspot.com/feeds/2396937619595477290/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4701668830837946147&amp;postID=2396937619595477290' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/2396937619595477290'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/2396937619595477290'/><link rel='alternate' type='text/html' href='http://cse4k12.blogspot.com/2010/05/boy-toys-girl-toys.html' title='Boy Toys &amp; Girl Toys'/><author><name>Gary Kacmarcik</name><uri>http://www.blogger.com/profile/06251485476040169610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4701668830837946147.post-256356751367850782</id><published>2009-12-27T10:11:00.000-08:00</published><updated>2009-12-27T10:14:47.315-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cse4k12Resources'/><category scheme='http://www.blogger.com/atom/ns#' term='Internet'/><title type='text'>How the Internet Works - Part II - The Phone System</title><content type='html'>&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;[This is the second in a 4-part post that describes an activity to demonstrate how the internet works. This part contains an introduction and a description of how the (landline) phone system works.]&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;b&gt;Some notes on presentation:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;blockquote&gt;This document presents the activity as a rough script. For this activity, you will be presenting information and directing the students as they act out the various parts of the internet.&lt;br /&gt;&lt;br /&gt;You shouldn't just read from this script verbatim (since that will be rather dull), but you will probably want to have this printed out with you while you're presenting. Use a highlighter and mark key points so that you can find them easily while presenting.&lt;br /&gt;&lt;br /&gt;Feel free to include additional information if you feel like it and accept questions and ad lib to follow the class interest. Throughout the script, there are a number of questions for the students that can be used to make the presentation more interactive.&lt;br /&gt;&lt;br /&gt;The files for this part of the activity (routing tables and labels) can be downloaded from &lt;a href="http://www.cse4k12.org/internet/how-internet-works.html"&gt;www.cse4k12.org/internet/how-internet-works.html&lt;/a&gt;.&lt;br /&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;&lt;b&gt;Introduction&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;What is the internet?  Basically, the internet is just an interconnected collection (a "network") of computers throughout the world. The interesting part of the internet is &lt;i&gt;how&lt;/i&gt; the computers are connected with each other. It's easy to connect a small number of computers to each other, but the internet consists of millions of computers.&lt;br /&gt;&lt;br /&gt;In order to understand how the internet works (i.e., how these millions of computers interact with each other), it's useful to start with a networking system that you're already (somewhat) familiar with and then compare that system to the internet.&lt;br /&gt;&lt;br /&gt;So, let start with a discussion of the phone system.&lt;br /&gt;&lt;br /&gt;(Note, we're talking about traditional landline phones here. Cellular phones are different beasts and we don't cover them.)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;Phone system&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Let's say you want to call someone on the telephone. What do you do?&lt;br /&gt;&lt;br /&gt;You somehow get their phone number and dial it. Then the phone system finds the target phone and makes it ring.&lt;br /&gt;&lt;br /&gt;This raises 2 questions:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;How do &lt;i&gt;&lt;b&gt;you&lt;/b&gt;&lt;/i&gt; know which number is associated with the person you want to call?&lt;/li&gt;&lt;li&gt;How does the &lt;i&gt;&lt;b&gt;phone system&lt;/b&gt;&lt;/i&gt; use the number to find the target phone for that person?&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;b&gt;(#1) So, how do you know the phone number?&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;Well, you ask someone. Either the person you want to call (if they're around), or a mutual friend (if there are any). You can also try the phone book, but people might be unlisted or listed under a different name (like their parent's name).&lt;br /&gt;&lt;br /&gt;In addition, when using a phone book that covers an entire city, multiple people might have the same name - what do you do then? You may only know one person named “John Smith”, but there may be a dozen people with the same name in a single city. The phone system uses phone numbers instead of names to avoid this problem.&lt;br /&gt;&lt;br /&gt;So, once you get the phone number, you probably write it in your personal address book so that you don't forget it. This address book provides a mapping from “name” to “phone number” for you. Once you write a number in your address book, you don't have to ask around or search for that number again.&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;ACTION (optional) : Show a small personal address book.&lt;br /&gt;&lt;/i&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;i&gt;The point of showing this object is to emphasize that each person typically keeps track of a relatively small number of people/phone numbers. Larger phone books will be shown later for comparison.&lt;/i&gt;&lt;br /&gt;&lt;/blockquote&gt;But what happens if the person moves and gets a new phone number? Well, if they remember, they tell you the new number. But if they don't contact you, then you will still have this old, obsolete number that no longer connects you to that person.&lt;br /&gt;&lt;br /&gt;(This is a great way to discover if someone is still your friend ^_^)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;(#2) How does the phone system connect calls?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Like most automated systems, the phone system works with numbers.&lt;br /&gt;&lt;br /&gt;In this case, you give the telephone system the telephone number it needs to identify the target phone. It then uses this number to set a bunch of switches to make the complete connection.&lt;br /&gt;&lt;br /&gt;The exact details of this routing are complex and have evolved considerably over time. In the early days of the phone system, there was a person who manually connected the calls using a plugboard. Nowadays, there are computerized systems that handle the connection automatically.&lt;br /&gt;&lt;br /&gt;What we'll do here is present a greatly simplified system that is intended to give a general overview of how this switching works:&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;ACTION: Assign students and add labels to the nodes in the network graph:&lt;/i&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Qhf82R7sD-g/SzODyF9oVBI/AAAAAAAAARQ/KP8HihFER3c/s1600-h/HIW-phone.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 312px;" src="http://2.bp.blogspot.com/_Qhf82R7sD-g/SzODyF9oVBI/AAAAAAAAARQ/KP8HihFER3c/s320/HIW-phone.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5418819673274209298" /&gt;&lt;/a&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;i&gt;1, 2, 3 : These are switches. No need for labels, but they should be  referred to as switches during this part of the activity.&lt;br /&gt;4  : Area code "206" – The next 3 are also switches, but it's convenient to refer to them as "area codes" or "local switches".&lt;br /&gt;5  : Area code "212"&lt;br /&gt;6  : Area code "425" – Only a label is needed here. No need to assign a student to this node since there is nothing for them to do.&lt;br /&gt;7  : "you : (206) 555-1000"&lt;br /&gt;8  : “neighbor : (206) 555-2000”&lt;br /&gt;9  : "friend : (212) 555-3000”&lt;br /&gt;&lt;/i&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;i&gt;You will need 9 students total: 8 students for the nodes (1-5 &amp;amp; 7-9) plus an additional student to act as a "runner" to help you make the phone connection.&lt;br /&gt;&lt;/i&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;i&gt;Depending on how everyone is arranged, you may want to have the students sitting down at each node so that everyone can see what's going on. Have them stand up only when they are an active part of the demonstration.&lt;br /&gt;&lt;/i&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;i&gt;Feel free to change the area codes and numbers, but make sure that you keep the labels consistent with the switching tables.&lt;/i&gt;&lt;br /&gt;&lt;/blockquote&gt;Each of these nodes has a "switching table" that tells it how to connect phone calls. Simply look up the phone number in the table and it will tell you which link to connect the call to. There's a primary and a secondary column - we're only going to use the primary column for now.&lt;blockquote&gt;&lt;i&gt;ACTION: Hand out the printed switching tables to the students in nodes 1-5. Node 6 also has a switching table, but it is not used in this exercise so it can be placed on the ground by node 6. This table can be used to extend the exercise if desired.&lt;/i&gt;&lt;br /&gt;&lt;/blockquote&gt;So, let's pretend that "you" are located in area code "206" and your phone number is "555-1000". If you want to call your neighbor at "555-2000" in the same area code, you simply dial your neighbor's phone number and your request is sent to the local phone company.&lt;blockquote&gt;&lt;i&gt;ACTION: Using a rope, have the "runner" student start from the "you" node and travel along the "Aa" link to the “206” switch. The rope should trail behind the runner so that it maintains a connection back to the "you" node. The student at the "you" node should pay out the rope as the runner walks away.&lt;/i&gt;&lt;br /&gt;&lt;/blockquote&gt;When the phone company gets the request, it uses the phone number and the switching table to connect the call.&lt;blockquote&gt;&lt;i&gt;ACTION: The runner student should approach the "206" node and ask to be connected to "555-2000". The student at the "206" node should look up this number in the switching table and direct the runner down the "Bb" link.&lt;br /&gt;&lt;/i&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;i&gt;The runner should give a part of the rope for the 206 node to hold and then continue down the "Bb" link. When the runner reaches the destination, the rope should form a connection from the start (“you”) to the end (“neighbor”) nodes through the “206” switch.&lt;/i&gt;&lt;/blockquote&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Qhf82R7sD-g/SzOX-4pniVI/AAAAAAAAARY/NgfTYuzVi-k/s1600-h/HIW-phone-call1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 313px;" src="http://4.bp.blogspot.com/_Qhf82R7sD-g/SzOX-4pniVI/AAAAAAAAARY/NgfTYuzVi-k/s320/HIW-phone-call1.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5418841883271465298" /&gt;&lt;/a&gt;&lt;br /&gt;Even if you want to call your friend who lives far away in a different area code (212-555-3000), the process is the same: you simply dial the number. The "206" node recognizes that it needs to send this to a different area code when it looks at the switching table.&lt;blockquote&gt;&lt;i&gt;ACTION: Reset the rope from the previous part and have the runner go back to the "you" node.&lt;br /&gt;&lt;/i&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;i&gt;Have the runner start again, this time asking to be connected to "(212) 555-3000". As before, have the rope trail out behind the runner and have each visited node hold onto the rope and let it slide through their hand.&lt;/i&gt;&lt;/blockquote&gt;The "206" node directs the call down the "Dd" link to switch "1".&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;ACTION: For each of these connections, have the runner walk from the one node to the next along the path indicated by the switching table. As the runner gets to each node, they need to ask the node where to go next.&lt;/i&gt;&lt;/blockquote&gt;Switch "1" directs the call down the "Ii" link to area code "212".&lt;br /&gt;&lt;br /&gt;And the "212" node sends the call down the "Pp" link to the friend's phone.&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;ACTION: At this point the rope should run from "you" (node 7) to "friend" (node 9) going through area code "206" to switch "1" and area code "212".&lt;/i&gt;&lt;/blockquote&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Qhf82R7sD-g/SzObcGUsaXI/AAAAAAAAARg/GYCwftFnxl0/s1600-h/HIW-phone-call2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 313px;" src="http://2.bp.blogspot.com/_Qhf82R7sD-g/SzObcGUsaXI/AAAAAAAAARg/GYCwftFnxl0/s320/HIW-phone-call2.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5418845683692890482" /&gt;&lt;/a&gt;&lt;br /&gt;But what happens if one of the links or if an entire switch goes away?&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;ACTION: Disable the "Dd" link by "cutting" it. You can actually cut the rope to be dramatic, but it suffices to simply pretend.&lt;/i&gt;&lt;br /&gt;&lt;/blockquote&gt;What happens? You get "cut off" and the connection is dropped.&lt;br /&gt;&lt;br /&gt;If you want, you can call back. And you might get the same connection path if the problem has been fixed.  But if the problem has not yet been fixed, you'd like the call to be directed around the problem. For this reason, the switches typically have a primary/secondary path. If there's a problem with the primary path, it uses the secondary.&lt;br /&gt;&lt;br /&gt;Let's assume that the problem has not been fixed. Now if you call back, you get a new path around the problem and your call will go through.&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;ACTION: Reset and start the call over again. Stand in the middle of the "Dd" link as a reminder that it is currently not working.&lt;/i&gt;&lt;br /&gt;&lt;/blockquote&gt;Now when the "206" node tries to connect the call through the "Dd" link, it fails and it needs to rely on the secondary path "Ee" which leads to switch "2".&lt;br /&gt;&lt;br /&gt;Switch "2" sends the call down "Gg" to switch "1".&lt;br /&gt;&lt;br /&gt;Where it continues, as before, down the "Ii" link to area code "212" and then down the "Pp" link to the friend's phone.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Qhf82R7sD-g/SzOiSVoYu_I/AAAAAAAAARo/jqvX9dq-Srs/s1600-h/HIW-phone-call3.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 313px;" src="http://3.bp.blogspot.com/_Qhf82R7sD-g/SzOiSVoYu_I/AAAAAAAAARo/jqvX9dq-Srs/s320/HIW-phone-call3.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5418853212584721394" /&gt;&lt;/a&gt;&lt;br /&gt;Notice how the connection is directed around the damaged part of the network. What happens if there is more damage to the network, for example, if the "Gg" link is also disabled? What happens if the entire switch "1" is broken?&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;ACTION: Remove other links/switches and see how the phone connection is directed around the damage. Have the students experiment with damaging the network. Which nodes are critical to making the connection? How much damage can this network sustain and still be able to connect the phone call?&lt;/i&gt;&lt;br /&gt;&lt;/blockquote&gt;So that is a (greatly) simplified view of how the phone system connects phone calls. But you may recall that the point of this activity is to demonstrate how the internet works, so we'll get to that in the next part.&lt;div&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;[to be continued in Part III]&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4701668830837946147-256356751367850782?l=cse4k12.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cse4k12.blogspot.com/feeds/256356751367850782/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4701668830837946147&amp;postID=256356751367850782' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/256356751367850782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/256356751367850782'/><link rel='alternate' type='text/html' href='http://cse4k12.blogspot.com/2009/12/how-internet-works-part-ii-phone-system.html' title='How the Internet Works - Part II - The Phone System'/><author><name>Gary Kacmarcik</name><uri>http://www.blogger.com/profile/06251485476040169610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Qhf82R7sD-g/SzODyF9oVBI/AAAAAAAAARQ/KP8HihFER3c/s72-c/HIW-phone.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4701668830837946147.post-4845253928199694137</id><published>2009-12-18T05:47:00.000-08:00</published><updated>2009-12-19T23:06:29.276-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TeachingCS'/><title type='text'>School presentation for CS Education Week</title><content type='html'>Since last week was &lt;a href="http://csedweek.com/"&gt;Computer Science Education Week&lt;/a&gt;, I spent some time at my daughter's new school to give a short presentation about computer science and engineering.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It was an eclectic mix of topics/activities:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;They had to find all the computers in the classroom. That is, find all the items that had computers/microprocessors inside them, so it included the printers, microwave ovens, CD players, cell phones and TVs in addition to the obvious desktop computers.&lt;/li&gt;&lt;li&gt;I took apart an old GBA and identified the various components. Also, I put it back together afterwards to verify that it still worked!&lt;/li&gt;&lt;li&gt;We discussed the logic needed to control a character in a simple platforming video game - how to move the character when the player presses the buttons on the control pad.&lt;/li&gt;&lt;li&gt;Demonstrated some small electronics projects that show how a single bit of memory is stored.&lt;/li&gt;&lt;li&gt;Passed around an 8" &lt;a href="http://en.wikipedia.org/wiki/Wafer_(electronics)"&gt;wafer&lt;/a&gt; from Intel. These are really neat to look at - and one of the students had a parent working at Intel but had never seen a wafer.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;And finally, I had them get into groups of 3 and do the &lt;a href="http://cse4k12.org/how_computers_work/index.html"&gt;How Computers Work&lt;/a&gt; activity. And that's where things got a bit interesting.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Competition&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There were 6 students - 3 boys and 3 girls - and they naturally divided themselves into a group of boys and a group of girls.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;While handing out the papers for the activity, one of the boys suggested that it should be a competition to see who would finish first. I watched to see the reaction of the students - the girls (and perhaps the other boys as well) didn't seem to be interested, and the one who suggested it moved on and didn't push for it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I realized how easy it would have been for me to encourage this competition - I would be reacting to a student's request and that's usually an appropriate thing to do as an instructor. But it also would have partially alienated some of the students who did not want to be part of a competition. At the very least, it would have made it more stressful for them to participate. It made me wonder how many times in the past I had inadvertently done something similar and made things more difficult for some of the students.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Knowing what I know now about learning differences between girls/boys (and students in general), I would have stopped the competition anyway by pointing out that the two teams had different (albeit comparable) "programs" so a timed competition wouldn't really be fair. But I was relieved that the topic went away on its own.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Starting early&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The other aspect that was interesting was that as the boys were forming their group, they discussed all the computer/technology stuff they had done before: The computer camps they went to, the programs they had written, the robot they helped build, and so on.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This sort of conversation did not happen with the girls team.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;One comment from a boy struck me. I can't remember the exact quote and when I replay my best recollection it seems harsher now than it did at the time (so I'm sure I have the quote wrong somewhat). But the comment was something like: "the girls aren't interested in computers" or "they don't know much about programming, except for GirlX".  GirlX being my daughter, the only one that apparently had been exposed to computer programming beforehand.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So, by 7th grade, the majority of boys (in this admittedly very small sample) had already gone to a computer camp of some sort whereas none of the girls had. Some of them had already formed their view of what was interesting to boys vs. girls.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So now I wonder,&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Is 7th grade too late to start introducing computer programming in the classroom?&lt;/li&gt;&lt;li&gt;Is this related to boys tendency to brag and overstate accomplishments vs. girls tendency to understate?&lt;/li&gt;&lt;li&gt;What are the parents' roles in this? Did they offer computer/math camp to their daughters? Should they have? My assumption is that most parents follow the natural interests of their children, so they will look for camps that their children have already expressed an interest in.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;I have been working on the assumption that 6th through 8th grade was the critical period to introduce programming, with pre-programming skills (binary, logic, ...) taught in 3rd through 5th grade. But I also assumed that starting anytime in 6-8th grade would be OK, even if it could have been started earlier.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After this, I'm wondering if the first introductory programming class really needs to be before middle school starts.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4701668830837946147-4845253928199694137?l=cse4k12.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cse4k12.blogspot.com/feeds/4845253928199694137/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4701668830837946147&amp;postID=4845253928199694137' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/4845253928199694137'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/4845253928199694137'/><link rel='alternate' type='text/html' href='http://cse4k12.blogspot.com/2009/12/school-presentation-for-cs-education.html' title='School presentation for CS Education Week'/><author><name>Gary Kacmarcik</name><uri>http://www.blogger.com/profile/06251485476040169610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4701668830837946147.post-6211748263091283656</id><published>2009-12-08T15:03:00.000-08:00</published><updated>2009-12-08T15:30:37.697-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cse4k12Resources'/><category scheme='http://www.blogger.com/atom/ns#' term='DNS'/><category scheme='http://www.blogger.com/atom/ns#' term='Internet'/><title type='text'>How the Internet Works (activity for elementary/middle school)</title><content type='html'>The post is the first installment of a "How the Internet Works" activity which is suitable for upper-elementary and middle school students.&lt;br /&gt;&lt;br /&gt;I've been running this activity for the past year or so and have been promising to write it up for a while. With &lt;a href="http://www.csedweek.org/"&gt;Computer Science Education Week&lt;/a&gt; happening this week, it seems like the perfect opportunity to get my act together.&lt;br /&gt;&lt;br /&gt;I'll be posting this activity in 4 separate parts:&lt;br /&gt;&lt;br /&gt;(1) Overview and setting up&lt;br /&gt;(2) The phone system (switching network)&lt;br /&gt;(3) The internet (routing network)&lt;br /&gt;(4) DNS (Domain Name Server)&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Overview&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;This activity is an interactive demonstration of what happens when you type a URL into a browser.&lt;br /&gt;&lt;br /&gt;In this activity the students will be guided to act out the various parts of the internet: websites, routers, name servers, ISPs and home computers. In this activity, students will:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Learn the difference between a switching (phone system) and routing (internet) network&lt;/li&gt;&lt;li&gt;See how packets are routed through the internet&lt;/li&gt;&lt;li&gt;See how the internet routes around damage&lt;/li&gt;&lt;li&gt;See how domain name servers are used to lookup an IP address&lt;/li&gt;&lt;/ul&gt;It is designed for 8-13 students, but fewer or more can be accommodated if needed.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Required time&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Preparation:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;30 minutes&lt;/b&gt; printing and creating signs&lt;/li&gt;&lt;li&gt;&lt;b&gt;1 hour&lt;/b&gt; room prep (creating network on the floor using tape)&lt;/li&gt;&lt;li&gt;plus whatever time you need to familiarize yourself with the material&lt;/li&gt;&lt;/ul&gt;Activity: &lt;b&gt;45 minutes&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Note: Because of the room preparation required for this activity, you may want to present it multiple times back-to-back to different groups of students.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Materials&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;You will need the following materials:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Masking tape/chalk to mark network on floor&lt;/b&gt;&lt;br /&gt;Masking tape is useful indoors, chalk works well on hard surfaces outdoors&lt;br /&gt;You'll want at least a couple of rolls of masking tape for this&lt;br /&gt;Alternately, if outdoors, you can use hula hoops and rope to mark the network&lt;br /&gt;Note that you'll need to attach labels to each rope&lt;/li&gt;&lt;li&gt;&lt;b&gt;Rope&lt;/b&gt; (50' is more than enough)&lt;br /&gt;This is used to show the phone switched connection&lt;/li&gt;&lt;li&gt;&lt;b&gt;Manilla folders&lt;/b&gt;&lt;br /&gt;Used to label the network nodes&lt;br /&gt;You can skip this if you have another way of labelling nodes&lt;/li&gt;&lt;li&gt;&lt;b&gt;Markers&lt;/b&gt;&lt;br /&gt;To write labels on the masking tape and manilla folders.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Print out the following&lt;/b&gt;:&lt;br /&gt;Routing tables&lt;br /&gt;Packets&lt;br /&gt;Website results&lt;/li&gt;&lt;li&gt;&lt;b&gt;Scissors&lt;/b&gt; (to cut out holes for the “images” from the web page printout)&lt;/li&gt;&lt;li&gt;&lt;b&gt;Props&lt;/b&gt; (optional):&lt;br /&gt;Small, personal address book&lt;br /&gt;City phone book (as thick as possible, perhaps have a few from different cities)&lt;/li&gt;&lt;/ul&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Preparations&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;(1) Draw the network map on the floor&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Draw the following network map on the floor using masking tape:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Qhf82R7sD-g/Sx7eV_YeIKI/AAAAAAAAAQY/pnNcQOO7MLM/s1600-h/HowInternetWorks.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 320px;" src="http://2.bp.blogspot.com/_Qhf82R7sD-g/Sx7eV_YeIKI/AAAAAAAAAQY/pnNcQOO7MLM/s320/HowInternetWorks.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5413008271518605474" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You'll want an open space roughly 20'x20' (6m x 6m) in size for this.&lt;br /&gt;&lt;br /&gt;If you're outdoors, you can use chalk or you can use anything else convenient: hula hoops connected by rope would also work. The important thing is that you're able to label each node and link in the diagram.&lt;br /&gt;&lt;br /&gt;Make each node (circles/boxes) large enough for a student to stand/sit within. Circles are hard to do with masking tape, so squares are fine (the shape of each node does not matter). Each square should be about 3' (1m) on each side. Nodes 10-13 can be a different shape (like a triangle) if desired.&lt;br /&gt;&lt;br /&gt;Make sure there's enough space between each node so that the links between them are easy to see. Ideally it should take from 2-3 steps (~5' or ~1.5m) to go from one node to another.&lt;br /&gt;&lt;br /&gt;The graph is easier to make if you start with the 3 central nodes (1, 2, and 3) and label them for identification. Add the other nodes to this core network, but don't label them yet (since they will change function during the activity) – you will make signs for these nodes. See the next section (about creating signs) for information about labeling each of the nodes.&lt;br /&gt;&lt;br /&gt;Each of the links between the nodes should be labeled so that they are easy to identify. If using masking tape, write the label directly on the tape.&lt;div&gt;&lt;ul&gt;&lt;li&gt;Write the label more than once along the tape. At least mark the points closest to each node, but it is preferable to mark all along the tape (separated by ~1' (~30cm)).&lt;/li&gt;&lt;li&gt;Note that the students will be walking around and viewing the labels from all angles, so make sure that they are easy to read.&lt;/li&gt;&lt;li&gt;We use both upper-case and lower-case letters to label each link (e.g., "Aa"). This is because the labels will be viewed from all angles as the students walk around and using just upper or lower case letters leads to cases where the labels are ambiguous ("p" vs. "d" or "H" vs. capital "I" with serifs) .&lt;/li&gt;&lt;/ul&gt;The graph can be stretched and distorted to conform to your environment, but do not change the topology (i.e., don't change the connections between the nodes).&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;(2) Create signs to place on the internet nodes&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Only 3 of the nodes that you just created can be labeled permanently (i.e.: for the duration of the activity): “1”, “2” and “3”. You can label these using tape or chalk or whatever is convenient.&lt;br /&gt;&lt;br /&gt;Don't give permanent labels to the other 10 nodes because we need to give them more descriptive names during the presentation (and these names will change during the course of the activity). You should create name tags for these nodes - I just use manilla folders and wrote the node names on them, but you can label them however you see fit.&lt;br /&gt;&lt;br /&gt;You will need to create the following 10 signs:&lt;br /&gt;&lt;br /&gt;For Part II (phone system):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;“206”&lt;/li&gt;&lt;li&gt;“425”&lt;/li&gt;&lt;li&gt;“212”&lt;/li&gt;&lt;/ul&gt;(or you can choose whichever 3 area codes you like. Just remember to adjust the switching tables to be consistent.)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;For Part III (internet):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;“google.com”&lt;/li&gt;&lt;li&gt;“wikipedia.org”&lt;/li&gt;&lt;li&gt;“ISP”&lt;/li&gt;&lt;/ul&gt;(or you can replace these with whichever search engine / web resource you prefer. Just remember to adjust the routing table and all the packets to be consistent.)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;For Part IV (DNS):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;“root name server” (rns)&lt;/li&gt;&lt;li&gt;“.com name server” (.com ns)&lt;/li&gt;&lt;li&gt;“.org name server” (.org ns)&lt;/li&gt;&lt;li&gt;“ISP name server” (ISP ns)&lt;/li&gt;&lt;/ul&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;(3) Print out the switching/routing tables and internet packets&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Print out all of the switching/routing tables and internet packets in the PDF files. They should all be printed single sided.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;[Links to these files will be in the following posts.]&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;(4) Cut out holes for the “images” from webpage in last set of packets&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;The last set of printouts requires that you cut out the squares where the images should be displayed in the web page.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;[to be continued...]&lt;/i&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4701668830837946147-6211748263091283656?l=cse4k12.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cse4k12.blogspot.com/feeds/6211748263091283656/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4701668830837946147&amp;postID=6211748263091283656' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/6211748263091283656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/6211748263091283656'/><link rel='alternate' type='text/html' href='http://cse4k12.blogspot.com/2009/12/how-internet-works-activity-for.html' title='How the Internet Works (activity for elementary/middle school)'/><author><name>Gary Kacmarcik</name><uri>http://www.blogger.com/profile/06251485476040169610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Qhf82R7sD-g/Sx7eV_YeIKI/AAAAAAAAAQY/pnNcQOO7MLM/s72-c/HowInternetWorks.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4701668830837946147.post-2099449264192646098</id><published>2009-12-07T21:14:00.000-08:00</published><updated>2009-12-07T21:19:25.628-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cse4k12Resources'/><category scheme='http://www.blogger.com/atom/ns#' term='Octal'/><title type='text'>Octal counting worksheets</title><content type='html'>I've added a couple of worksheets for practicing with writing numbers in octal to the cse4k12.org website.&lt;br /&gt;&lt;br /&gt;These worksheets can be used by students to practice counting/converting numbers in octal. They each show a set of circles that the student must count in both octal and decimal. The circles are arranged in groups of eight to make the octal calculation straightforward.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://cse4k12.org/octal/counting.html"&gt;&lt;img border="1" src="http://cse4k12.org/octal/counting1.png" /&gt; &lt;img border="1" src="http://cse4k12.org/octal/counting2.png" /&gt; &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4701668830837946147-2099449264192646098?l=cse4k12.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cse4k12.blogspot.com/feeds/2099449264192646098/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4701668830837946147&amp;postID=2099449264192646098' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/2099449264192646098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/2099449264192646098'/><link rel='alternate' type='text/html' href='http://cse4k12.blogspot.com/2009/12/octal-counting-worksheets.html' title='Octal counting worksheets'/><author><name>Gary Kacmarcik</name><uri>http://www.blogger.com/profile/06251485476040169610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4701668830837946147.post-5126270184816282572</id><published>2009-12-06T18:05:00.000-08:00</published><updated>2009-12-06T19:09:54.200-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cse4k12Resources'/><title type='text'>cse4k12 ~ resources</title><content type='html'>Over Thanksgiving I started playing around with &lt;a href="http://code.google.com/appengine/"&gt;App Engine&lt;/a&gt; and threw together an a fairly simple app for keeping track of Computer Science (&amp; Engineering) teaching resources.&lt;br /&gt;&lt;br /&gt;I probably would have waited a bit before making it available, but with &lt;a href="http://www.csedweek.org/"&gt;Computer Science Education Week&lt;/a&gt; going on right now, I figured that this was as good a time as any.&lt;br /&gt;&lt;br /&gt;It's running at &lt;a href="http://cse4k12.appspot.com/"&gt;http://cse4k12.appspot.com/&lt;/a&gt; and you can use it to search for resources by topic, add comments/reviews or you can add links to your own material.&lt;br /&gt;&lt;br /&gt;It's still fairly early and I'm still going through and adding all the material that I'm aware of - I'll be adding it piece-by-piece as I get around to it.  If you know of anything that is not listed, then please feel free to add it.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Authentication... sigh...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The thing that bugs me the most about it is that, while no login is required to access any content on the site, you do need to login in order to add resources or comments.  This is to help prevent people from spamming the site with useless comments/advertisements.&lt;br /&gt;&lt;br /&gt;I didn't want to force people to create yet another account/password just for this site, so you can use your Google account (gmail account) for authentication. And no, this doesn't mean that you give your password to us - what happens is that we send you to Google where you login and then they send back a token that says "the current user has successfully logged in as xxx@gmail.com".  That's all we get: your email (well, and a "nickname"). Which is great because we don't really want or need anything else.&lt;br /&gt;&lt;br /&gt;Of course, this doesn't help you if you don't already have a Google account. While it's easy to create one, you'd probably rather use your Passport or OpenID account or whatever it is you use on a day-to-day basis. I plan on adding support for these different authentication providers, but haven't had a chance to do it yet.  Please let me know if you would find this useful so that I can prioritize adding support for this.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4701668830837946147-5126270184816282572?l=cse4k12.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cse4k12.blogspot.com/feeds/5126270184816282572/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4701668830837946147&amp;postID=5126270184816282572' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/5126270184816282572'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/5126270184816282572'/><link rel='alternate' type='text/html' href='http://cse4k12.blogspot.com/2009/12/cse4k12-resources.html' title='cse4k12 ~ resources'/><author><name>Gary Kacmarcik</name><uri>http://www.blogger.com/profile/06251485476040169610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4701668830837946147.post-532067865256092629</id><published>2009-11-15T15:14:00.000-08:00</published><updated>2009-11-15T15:33:41.160-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hexadecimal'/><category scheme='http://www.blogger.com/atom/ns#' term='Bitmap'/><category scheme='http://www.blogger.com/atom/ns#' term='Binary'/><title type='text'>Updated bitmap (binary/hex) worksheets</title><content type='html'>I've updated the bitmap (binary/hexadecimal conversion) worksheets. There is now an instruction sheet that contains 5 bitmap grids for students to create their own bitmaps plus 2 grids for them to convert from hexadecimal into a bitmap.&lt;div&gt;&lt;br /&gt;&lt;div&gt;There are also blank worksheets (grids only - no instructions) for 8x8 and 16x16 bitmaps.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://cse4k12.org/binary/bitmaps.html"&gt;&lt;img border="1" src="http://cse4k12.org/binary/bitmaps.png" /&gt; &lt;img border="1" src="http://cse4k12.org/binary/bitmaps-blank.png" /&gt; &lt;img border="1" src="http://cse4k12.org/binary/bitmaps-large.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4701668830837946147-532067865256092629?l=cse4k12.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cse4k12.blogspot.com/feeds/532067865256092629/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4701668830837946147&amp;postID=532067865256092629' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/532067865256092629'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/532067865256092629'/><link rel='alternate' type='text/html' href='http://cse4k12.blogspot.com/2009/11/updated-bitmap-binaryhex-worksheets.html' title='Updated bitmap (binary/hex) worksheets'/><author><name>Gary Kacmarcik</name><uri>http://www.blogger.com/profile/06251485476040169610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4701668830837946147.post-6854730415368761768</id><published>2009-10-17T04:27:00.000-07:00</published><updated>2009-10-19T21:13:43.946-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Montessori'/><category scheme='http://www.blogger.com/atom/ns#' term='AMS'/><title type='text'>Slides for AMS 2009 workshop</title><content type='html'>These are the slides for the "Computer Science Education in the Montessori Classroom" workshop that I presented yesterday at the &lt;a href="http://www.amshq.org/conference/09gardengrove/program2/index.php"&gt;AMS Fall 2009 conference&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I added an extra slide to include a diagram of a ripple carry adder.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Slides are available in the following formats:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://cse4k12.org/downloads/ams09/ams2009.odp"&gt;OpenDocument (.odp)&lt;/a&gt; 945K&lt;/li&gt;&lt;li&gt;&lt;a href="http://cse4k12.org/downloads/ams09/ams2009.odp"&gt;&lt;/a&gt;&lt;a href="http://cse4k12.org/downloads/ams09/ams2009.pdf"&gt;PDF&lt;/a&gt; 448K &lt;/li&gt;&lt;li&gt;&lt;a href="http://cse4k12.org/downloads/ams09/ams2009.ppt"&gt;PowerPoint (.ppt)&lt;/a&gt; 1409K&lt;/li&gt;&lt;/ul&gt;Note that the PDF and PowerPoint versions were converted from the original OpenDocument format file. Because of the conversion, a few of the slides look a bit funky in the PowerPoint version. If this is a concern, please use the OpenDocument (using &lt;a href="http://www.openoffice.org/"&gt;OpenOffice&lt;/a&gt;) or PDF (using &lt;a href="http://get.adobe.com/reader/"&gt;Adobe Reader&lt;/a&gt;) version.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4701668830837946147-6854730415368761768?l=cse4k12.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cse4k12.blogspot.com/feeds/6854730415368761768/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4701668830837946147&amp;postID=6854730415368761768' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/6854730415368761768'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/6854730415368761768'/><link rel='alternate' type='text/html' href='http://cse4k12.blogspot.com/2009/10/slides-for-ams-2009-workshop.html' title='Slides for AMS 2009 workshop'/><author><name>Gary Kacmarcik</name><uri>http://www.blogger.com/profile/06251485476040169610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4701668830837946147.post-3800331356138378014</id><published>2009-10-17T04:11:00.000-07:00</published><updated>2009-10-19T21:12:05.994-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ALU'/><category scheme='http://www.blogger.com/atom/ns#' term='Memory'/><category scheme='http://www.blogger.com/atom/ns#' term='CPU'/><title type='text'>How Computers Work (high level)</title><content type='html'>&lt;div&gt;This is an activity for 3 students to work together as a group. Each student takes on the role of a different part of the computer:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;CPU&lt;/li&gt;&lt;li&gt;ALU (&amp;amp; memory)&lt;/li&gt;&lt;li&gt;Graphics display&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;They work through the project with the CPU running the "program", the ALU performing the math and keeping track of the variables, and the display plotting the values as needed.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://cse4k12.org/how_computers_work/index.html"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;img src="http://cse4k12.org/how_computers_work/program.png" /&gt;&lt;/td&gt;&lt;td&gt;&lt;img src="http://cse4k12.org/how_computers_work/alu_memory.png" /&gt;&lt;/td&gt;&lt;td&gt;&lt;img src="http://cse4k12.org/how_computers_work/display.png" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/a&gt;The purpose of the activity is to give the students a sense of how computers work at a reasonably high level.&lt;div&gt;&lt;br /&gt;&lt;div&gt;I created this a while ago, but neglected to actually post the information here. Full information about this activity can be found at &lt;a href="http://cse4k12.org/how_computers_work/index.html"&gt;http://cse4k12.org/how_computers_work/index.html&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4701668830837946147-3800331356138378014?l=cse4k12.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cse4k12.blogspot.com/feeds/3800331356138378014/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4701668830837946147&amp;postID=3800331356138378014' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/3800331356138378014'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/3800331356138378014'/><link rel='alternate' type='text/html' href='http://cse4k12.blogspot.com/2009/10/how-computers-work-high-level.html' title='How Computers Work (high level)'/><author><name>Gary Kacmarcik</name><uri>http://www.blogger.com/profile/06251485476040169610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4701668830837946147.post-2544872986957715799</id><published>2009-10-17T02:04:00.000-07:00</published><updated>2009-10-17T02:35:19.666-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Montessori'/><category scheme='http://www.blogger.com/atom/ns#' term='AMS'/><title type='text'>Computer Science Education in the Montessori Classroom</title><content type='html'>I gave a "Computer Science Education in the Montessori Classroom" workshop at the &lt;a href="http://www.amshq.org/conference/09gardengrove/program2/index.php"&gt;American Montessori Society (AMS) Fall conference&lt;/a&gt; yesterday.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The workshop description that we submitted (oh so many months ago) was:&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;How can we better prepare our children for life in a high-technology society? How early should we teach them computer and pre-programming skills? How can we integrate computer science education into Montessori classrooms? This presentation of Montessori-friendly and age-appropriate activities will include stand-alone activities and extensions to existing classroom curricula as well as a take-home list of some useful online resources for teachers.&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Looking back at this, it sounds sufficiently vague that I probably could have talked about anything as long as I mentioned computers every so often.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The following would perhaps have been a better overview:&lt;/div&gt;&lt;blockquote&gt;Why aren't we teaching pre-programming skills (binary, boolean logic, transistors) to our children during elementary school? Why don't we teach students how computers actually work instead of simply how to use them? In this workshop, we will show (1) how computers work and (2) how you can teach these concepts to your elementary/middle school classroom.&lt;/blockquote&gt;&lt;div&gt;A part of me wants to say something more confrontational like "how we're failing our students by not providing a solid understanding of computer technology", but I'll resist the urge and hold off on that rant (until another time perhaps ^_^).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I'll be posting the slides here once I get a chance to upload them.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4701668830837946147-2544872986957715799?l=cse4k12.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cse4k12.blogspot.com/feeds/2544872986957715799/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4701668830837946147&amp;postID=2544872986957715799' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/2544872986957715799'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/2544872986957715799'/><link rel='alternate' type='text/html' href='http://cse4k12.blogspot.com/2009/10/computer-science-education-in.html' title='Computer Science Education in the Montessori Classroom'/><author><name>Gary Kacmarcik</name><uri>http://www.blogger.com/profile/06251485476040169610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4701668830837946147.post-118134416629068191</id><published>2009-10-17T01:56:00.000-07:00</published><updated>2009-10-19T21:10:48.315-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Admin'/><title type='text'>cse4k12.org vs. cse4k12.com</title><content type='html'>Grrrr....&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;cse4k12.org&lt;/span&gt; is supposed to be the main URL for the website and &lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;cse4k12.com&lt;/span&gt; is supposed to simply redirect to &lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;.org&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Unfortunately, it looks like things are set up screwy and &lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;.org&lt;/span&gt; no longer redirects to the right place.  I'll have to fix that but in the meantime all of the &lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;cse4k12.org&lt;/span&gt; links in the blog were not working.&lt;br /&gt;&lt;br /&gt;Temp fix: change all the links to &lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;.com&lt;/span&gt;. I'll change them back once I fix the issue with &lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;.org&lt;/span&gt;, but for now if you have problems with any &lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;.org&lt;/span&gt; address, just change the "org" to "com" and it should work.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;[Update: This has been fixed.  All .org links are working again.]&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4701668830837946147-118134416629068191?l=cse4k12.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cse4k12.blogspot.com/feeds/118134416629068191/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4701668830837946147&amp;postID=118134416629068191' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/118134416629068191'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/118134416629068191'/><link rel='alternate' type='text/html' href='http://cse4k12.blogspot.com/2009/10/cse4k12org-vs-cse4k12com.html' title='cse4k12.org vs. cse4k12.com'/><author><name>Gary Kacmarcik</name><uri>http://www.blogger.com/profile/06251485476040169610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4701668830837946147.post-6626754845529905696</id><published>2009-04-04T14:43:00.001-07:00</published><updated>2009-04-04T14:48:45.304-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Spritely'/><title type='text'>New Spritely tutorials: Creating NDS ROMs</title><content type='html'>Two new tutorials for Spritely:&lt;br /&gt;&lt;br /&gt;* &lt;a href="http://spritely.googlecode.com/svn/trunk/tutorials/build_nds_rom.html"&gt;Creating an NDS ROM File&lt;/a&gt;&lt;br /&gt;* &lt;a href="http://spritely.googlecode.com/svn/trunk/tutorials/carts.html"&gt;Info about GBA and NDS cartridges&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://spritely.googlecode.com/svn/trunk/tutorials/build_nds_rom/platform_nds.png"/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4701668830837946147-6626754845529905696?l=cse4k12.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cse4k12.blogspot.com/feeds/6626754845529905696/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4701668830837946147&amp;postID=6626754845529905696' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/6626754845529905696'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/6626754845529905696'/><link rel='alternate' type='text/html' href='http://cse4k12.blogspot.com/2009/04/spritely-tutorials.html' title='New Spritely tutorials: Creating NDS ROMs'/><author><name>Gary Kacmarcik</name><uri>http://www.blogger.com/profile/06251485476040169610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4701668830837946147.post-2791558256005941208</id><published>2009-03-28T06:56:00.000-07:00</published><updated>2009-10-19T21:09:41.877-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hexadecimal'/><category scheme='http://www.blogger.com/atom/ns#' term='Crossbin'/><category scheme='http://www.blogger.com/atom/ns#' term='Binary'/><title type='text'>Crossbin puzzle #2</title><content type='html'>&lt;a href="http://www.cse4k12.org/crossbin/p02.html"&gt;&lt;img src="http://www.cse4k12.org/crossbin/p02/p02_large.png" border="1" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4701668830837946147-2791558256005941208?l=cse4k12.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cse4k12.blogspot.com/feeds/2791558256005941208/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4701668830837946147&amp;postID=2791558256005941208' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/2791558256005941208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/2791558256005941208'/><link rel='alternate' type='text/html' href='http://cse4k12.blogspot.com/2009/03/crossbin-puzzle-2.html' title='Crossbin puzzle #2'/><author><name>Gary Kacmarcik</name><uri>http://www.blogger.com/profile/06251485476040169610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4701668830837946147.post-8348710904380015041</id><published>2009-03-28T06:49:00.001-07:00</published><updated>2009-10-19T21:09:19.097-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Magic'/><category scheme='http://www.blogger.com/atom/ns#' term='Binary'/><title type='text'>Binary magic trick</title><content type='html'>I've added documents for the &lt;a href="http://www.cse4k12.org/binary/magic_trick.html"&gt;binary magic trick&lt;/a&gt; activity that I use after introducing the students to binary numbers.&lt;br /&gt;&lt;a href="http://www.cse4k12.org/binary/magic_trick.html"&gt;&lt;img src="http://www.cse4k12.org/binary/magic_trick_cards_large.png" border="1" /&gt;&lt;/a&gt;&lt;br /&gt;This includes the cards (to cut out) and a set of instructions on how to perform the trick.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4701668830837946147-8348710904380015041?l=cse4k12.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cse4k12.blogspot.com/feeds/8348710904380015041/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4701668830837946147&amp;postID=8348710904380015041' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/8348710904380015041'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/8348710904380015041'/><link rel='alternate' type='text/html' href='http://cse4k12.blogspot.com/2009/03/binary-magic-trick.html' title='Binary magic trick'/><author><name>Gary Kacmarcik</name><uri>http://www.blogger.com/profile/06251485476040169610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4701668830837946147.post-3839054871178777641</id><published>2009-03-22T10:27:00.000-07:00</published><updated>2009-10-19T21:08:35.070-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hexadecimal'/><category scheme='http://www.blogger.com/atom/ns#' term='Crossbin'/><category scheme='http://www.blogger.com/atom/ns#' term='Binary'/><title type='text'>Crossbin puzzles</title><content type='html'>I've started adding &lt;span style="font-weight:bold;"&gt;crossbin puzzles&lt;/span&gt; to cse4k12.org.  Crossbin puzzles are similar to crossword puzzles except that the &lt;span style="font-weight:bold;"&gt;clues are hexadecimal&lt;/span&gt; numbers and the &lt;span style="font-weight:bold;"&gt;answers are binary&lt;/span&gt; numbers.&lt;br /&gt;&lt;br /&gt;When the puzzle is complete, the grid is filled with '0's and '1's. Then all the '1's can be filled in with black (and, optionally, '0's erased to white) to create a simple black and white image.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.cse4k12.org/crossbin/p01.html"&gt;&lt;img src="http://www.cse4k12.org/crossbin/p01/p01_large.png" border="1" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;These are useful as a simple exercise in a computer science class after the students have been introduced to binary and hexadecimal numbers (and how to convert between them).&lt;br /&gt;&lt;br /&gt;Basic instructions and a simple example are given at cse4k12.org:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.cse4k12.org/crossbin/index.html"&gt;http://www.cse4k12.org/crossbin/index.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4701668830837946147-3839054871178777641?l=cse4k12.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cse4k12.blogspot.com/feeds/3839054871178777641/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4701668830837946147&amp;postID=3839054871178777641' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/3839054871178777641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/3839054871178777641'/><link rel='alternate' type='text/html' href='http://cse4k12.blogspot.com/2009/03/crossbin-puzzles.html' title='Crossbin puzzles'/><author><name>Gary Kacmarcik</name><uri>http://www.blogger.com/profile/06251485476040169610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4701668830837946147.post-5199160716267887777</id><published>2009-03-16T14:30:00.001-07:00</published><updated>2009-03-16T15:04:35.588-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Spritely'/><title type='text'>New Spritely tutorial: Adding a Projectile</title><content type='html'>I've added a new tutorial for Spritely that shows how to add a single projectile to a game project.&lt;br /&gt; &lt;br /&gt;&lt;img src="http://spritely.googlecode.com/svn/trunk/tutorials/projectiles/ss_02.png"&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://spritely.googlecode.com/svn/trunk/tutorials/projectiles.html"&gt;http://spritely.googlecode.com/svn/trunk/tutorials/projectiles.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4701668830837946147-5199160716267887777?l=cse4k12.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cse4k12.blogspot.com/feeds/5199160716267887777/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4701668830837946147&amp;postID=5199160716267887777' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/5199160716267887777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/5199160716267887777'/><link rel='alternate' type='text/html' href='http://cse4k12.blogspot.com/2009/03/new-spritely-tutorial-adding-projectile.html' title='New Spritely tutorial: Adding a Projectile'/><author><name>Gary Kacmarcik</name><uri>http://www.blogger.com/profile/06251485476040169610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4701668830837946147.post-7459904930726349167</id><published>2009-03-13T08:49:00.000-07:00</published><updated>2009-03-13T10:03:35.219-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Spritely'/><title type='text'>Spritely in action</title><content type='html'>John is using Spritely to introduce his son to programming and made a video:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://botchagalupe.tumblr.com/post/84674186/teaching-kids-how-to-code" target="_blank"&gt;http://botchagalupe.tumblr.&lt;wbr&gt;com/post/84674186/teaching-&lt;wbr&gt;kids-how-to-code&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It looks like I have to get my act together and make more tutorials available (e.g., projectiles).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4701668830837946147-7459904930726349167?l=cse4k12.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cse4k12.blogspot.com/feeds/7459904930726349167/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4701668830837946147&amp;postID=7459904930726349167' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/7459904930726349167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/7459904930726349167'/><link rel='alternate' type='text/html' href='http://cse4k12.blogspot.com/2009/03/spritely-in-action.html' title='Spritely in action'/><author><name>Gary Kacmarcik</name><uri>http://www.blogger.com/profile/06251485476040169610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4701668830837946147.post-5315220133416070528</id><published>2009-03-08T08:43:00.000-07:00</published><updated>2009-10-19T21:07:25.945-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SIGCSE'/><category scheme='http://www.blogger.com/atom/ns#' term='Spritely'/><title type='text'>SIGCSE 2009 slides</title><content type='html'>Here are the slides from my &lt;a href="http://www.cs.arizona.edu/groups/sigcse09/"&gt;SIGCSE 2009&lt;/a&gt; presentation:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;"Introducing Computer Programming via Gameboy Advance Homebrew"&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.cse4k12.org/downloads/sigcse09/introcompprogviagbahomebrew.pdf"&gt;Slides (PDF)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://portal.acm.org/citation.cfm?id=1508969"&gt;Paper (PDF)&lt;/a&gt;&lt;br /&gt;Note: Requires ACM Web Account.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4701668830837946147-5315220133416070528?l=cse4k12.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cse4k12.blogspot.com/feeds/5315220133416070528/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4701668830837946147&amp;postID=5315220133416070528' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/5315220133416070528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4701668830837946147/posts/default/5315220133416070528'/><link rel='alternate' type='text/html' href='http://cse4k12.blogspot.com/2009/03/sigcse-2009-slides.html' title='SIGCSE 2009 slides'/><author><name>Gary Kacmarcik</name><uri>http://www.blogger.com/profile/06251485476040169610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
