Wednesday, February 25, 2015

SOFT6008 Classes 04.2 & 04.3

Students continued coding checksum calculations. These will be incorporated into the assignment eventually.

Tuesday, February 24, 2015

COMP6021 Class 04.2

I planned to do exercises on generating UTF-8 and on Huffman coding. However the UTF-8 proved tricker than we expected, so we will do the Huffman in the next class.

We converted the following to UTF-8, but it took us a while to figure out how do deal with padding zeros.

Gemoji image for :cupid
1F498 
11110000:10011111:10010010:10011000 
f09f9298



Gemoji image for :couple
1F46B 
11110000:10011111:10010001:10101011 
f09f91ab




Gemoji image for :grinning
1F600
11110000:10011111:10011000:10000000 
 f09f9880


SOFT6008 Class 04.1

Apologies for the late start. My calendar led me astray and I obeyed.

We reviewed various JavaScript versions of the Luhn algorithm found online. Some we didn't like. 

From https://gist.github.com/DiegoSalazar/4075533 (modified by Colin slightly)

This code addresses the problem of strings of unknown length by starting at the end and counting down and keep track of what to do by toggling bEven. However we were initially puzzled by the (nDigit *= 2)  which is both a test and a statement.
function valid_credit_card(value) {
// The Luhn Algorithm. It's so pretty.
var nCheck = 0, nDigit = 0, bEven = false;
 
for (var n = value.length - 1; n >= 0; n--) {
var cDigit = value.charAt(n),
nDigit = parseInt(cDigit, 10);
 
if (bEven) {
if ((nDigit *= 2) > 9) nDigit -= 9;
}
 
nCheck += nDigit;
bEven = !bEven;
}
 
return (nCheck % 10) == 0;
}
This code was interesting because it used the fact that JavaScript can add an internet to a string and get a string. That's a small bit strange.  The expected test to see if the product of the *2 > 10 isn't there, because the digits will get added up anyway in the second part of the code.
  // Run through each single digit to create a new string. Even digits
  // are multiplied by two, odd digits are left alone.

  t = "";
  for (i = 0; i < r.length; i++) {
    c = parseInt(r.charAt(i), 10);
    if (i % 2 != 0)
      c *= 2;
    t = t + c;
  }

  // Finally, add up all the single digits in this string.

  n = 0;
  for (i = 0; i < t.length; i++) {
    c = parseInt(t.charAt(i), 10);
    n = n + c;
  }



This code handles odd and even length strings even though it starts at the beginning and words forward. The i % 2 == parity) test looks like our i % 2 == 0, except the desired value 0 or 1 is set beforehand, depending on whether the length is ever or odd. 

function checkLuhn(input)
{
  var sum = 0;
  var numdigits = input.length;
  var parity = numdigits % 2;
  for(var i=0; i < numdigits; i++) {
    var digit = parseInt(input.charAt(i))
    if(i % 2 == parity) digit *= 2;
    if(digit > 9) digit -= 9;
    sum += digit;
  }
  return (sum % 10) == 0;
}


The following examples we considered to be too clever and too cryptic. I pointed out that short clever code isn't always a good thing, because the programmer that comes after might not be able to understand it.

https://gist.github.com/ShirtlessKirk/2134376

http://stackoverflow.com/questions/12310837/implementation-of-luhn-algorithm

http://rosettacode.org/wiki/Luhn_test_of_credit_card_numbers#JavaScript

SOFT6002 Interesting Video & Article


Worth a look

This article is also worth a read
http://www.theatlantic.com/product/archive/2014/08/the-hamburger-menu-debate/379145/

Monday, February 23, 2015

COMP6021 Class 04.1

[No recording of today's class. Sound too bad]

We played Hangman to illustrate the point that letters in English do not occur with the same frequencies.  We looked at how compression can be used to represent information using fewer bits.


We looked at Huffman's algorithm for devising optimal variable length codes.

To be honest, the video I made below says it better than I did in class anyway. (I hope my best work isn't behind me!)

Video on Variable Length Codes



I gave students an exercise to complete in time for the next class.

Thursday, February 19, 2015

SOFT6002 Week 03

We discussed the assignment a bit and assigned students to groups. But it's not really a group project.

We covered the Ecological Theory of Perception (slides W03-L2) and Graphical Coding (W04-L1).

You should have two sets of slides per week. If you are missing any please let me know.

SOFT6008 Class 03.4

Attendance was poor today. I'm told there are some pressing social engagements this week.

Students worked on checksum calculations. We'll be another week at least at those. Perhaps even longer.

Someone figured out the French checksum calculation. It is different from how I described. So if you are tackling that, talk to me first.

COMP8035 Classes 03.2 & 03.3

I brought peper copies of journals again. But they weren't as popular as the last day. I met with most students. From what I can see students are certainly looking in the right places for their research. Journals are very different from random webpages found online.

Most students seem to have a few ideas for the research paper now. That is how it should be.

So, so far, so good.

Wednesday, February 18, 2015

COMP6021 Class 03.4 & 03.4

We attempted to do an experiment to see how many bytes are required to store a Japanese character in UTF-8 but could paste Japanese into any of the text editors. 

Students did an exam question on decoding UTF-8 and then encoded a message. 

SOFT6008 Class 03.2 & 03.3

Students started coding the Luhn algorithm. Some finished and moved into other checksums. 

Tuesday, February 17, 2015

COMP6021 Class 03.2 - 日本語 and 💔



We continued our looked at Unicode. We looked at how writing works in Japanese, and briefly mentioned Emoji.

SOFT6008 Class 03.1

We looked a a variety of different check sum calculations.

It looks like my understanding of the check sum used on French ID numbers may be incorrect. Someone is going to figure that out for me.

Writing Workshops

A series of English Academic Writing Workshops will begin today, delivered by Helen Breen. These workshops are free to all students.  The workshops will be held in B231, as follows:
http://alc.cit.ie/resources/reportwriting
 
·         Tuesday 17th Feb Using online referencing and e-books, room B231, 1-2pm
·         Thursday 19th Feb Online resources to help your writing, room B231, 1-2pm
·         Tuesday 24th Feb Most common writing errors, room B231, 1-2pm
·         Thursday 26th Feb Critical thinking skills, room B231, 1-2pm
 
·         Tuesday 3rd March Using online referencing and e-books, room B231, 1-2pm
·         Thursday 5th  March Online resources to help your writing, room B231,1-2pm
·         Tuesday 10th March Most common writing errors, room B231, 1-2pm
·         Thursday 12th March Critical thinking skills, room B231, 1-2pm
 
 
 
 all students are welcome to attend free of charge

COMP8035 Class 03.1

I brought some paper copies Communications of the ACM and IEEE Computer to class with some  articles marked. Students passed these around. Electronic versions of these are available as PDFs from the CIT Library.

I also met with each student to discuss ideas for the blog posts and the research report.

Monday, February 16, 2015

COMP6021 Class 03.1 - I ♥日本



We looked at UTF-8.

I gave students a UTF-8 message to decode. 49 E2 99 A5 E6 97 A5 E6 9C AC
I think they got the hang of it.



01001001 11100010:10011001:10100101 11100110:10010111:10100101  11100110:10011100:10101100

I  11100010:10011001:10100101 11100110:10010111:10100101 11100110:10011100:10101100
remove markers for leading and continuation bytes 

I  0010011001100101 0110010111100101  0110011100101100

I 2665 65E5 672C

I ♥日本

Thursday, February 12, 2015

HCI Week 02

All talk.no lab. Did up to (&incl) Gestalt Theory.

I misjudged the time. The travel clock I had was an hour fast since daylight savings time! But nobody seemed to mind.

SOFT6008 Class 02.4

We looked at user input validation and checksums.

We looed at code for mobile phone number validation and the Luhn credit card algorithm.

In the next lab class students will start coding the Luhn algorithm. I advised students against look up solutions online. It's best to start with a clean slate and a blank sheet of paper.

COMP8035 Class 02

I met with each student and talked through some ideas.

All the students who were there seem to be on top of things. But the main output for this module is the research Report at the end. So all efforts should be considered as stepping stones on the way to that.

Wednesday, February 11, 2015

COMP6021 Class 02.4 - Zombies, Semaphore & ASCII



We looked at some solutions for the traffic light zombie code and considered some advantages and disadvantages.

We looked at Braille, Semaphore, ASCII, DOS Code Pages, and extended-ASCII

Next up: Unicode

COMP6021 Class 02.3 - Negative Numbers

We played Binary Bingo, but the winner wasn't aware that he had won.




We looked at One's Complement and Two's Complement representations of integers. I explained why they were better that sign & magnitude representations. We looked at using offset binary for awkward situations.  I briefly mentioned IEEE Floating Point, but we won't be going into that. 





We began our look at representing text. I outlined the problems facing Outpost 19 after an attack by the zombie hoard, and asked students to devise an efficient communication system for the traffic lights.