Wednesday, November 14, 2007

The E4 DVD (in 5 parts)

One of the deliverables of the E4 project was the development of a DVD which outlined the main teaching methodologies employed in the project. This DVD is a wonderful 12 minute piece and has interviews with some of the main people involved in the teaching part of the E4 project. Below is that DVD in five parts.

Part 1





Part 2





Part 3





Part 4





Part 5



Monday, November 12, 2007

The Computer Scientist's Library

Computer scientists are strange group of people, the job has all the drawbacks of a scientific job combined with all the drawbacks of an artistic job, in particular I am thinking of those of us who have to program for a living, writing computer programs is a complex business, it requires a mathematical precision and remarkable creativity. So it's like your job is being asked to create a masterwork painting every day, they have to be very artist and yet require an exact structure and form as well. And if you make an error it might be months later when it is discovered, just before the CDs are being pressed. It is a very dificult profession to sustain over a long period of time.

So what are the things that that make computer scientists a group? Shared views, shared interests, shared vocabulary and shared knowledge. One of the ways this happens is in the books that we read, so I've been trying to put together a short list of books that I think every computer scientist should read. After many starts and stops, this is my list of the top ten books in no particular order;

The Art of Computer Programming by Donald Knuth
O.K. I know I said that the list is in no particular order, but the Knuth books MUST be the top of any computer scientist's reading list. Knuth is a brilliant writer, exciting, a master of his subject, he puts the science into computer science.

The Cuckoo's Egg: Tracking a Spy Through the Maze of Computer Espionage by Clifford Stoll
Clifford Stoll's true life story of tracing a cracker who was using his computer as a bridge to access top secret information is definitely one of the most incredible computer books, inspiring and very well-written, and you learn a lot about Unix.

Hackers: Heroes of the Computer Revolution by Steven Levy
The definitive story of the Hacker movement; Greenblatt, Gosper, Stallman, names that are legendary in programming mythos, their early adventures in the MIT AI lab are documented here, and the beginings of the Open Source movement can be traced from here.

The Hacker Crackdown: Law and Disorder on the Electronic Frontier by Bruce Sterling
This brilliant book outlines the key events in the evolution of hackers (really "crackers"). The exciting events that shaped the face of Hackerdom like Operation Sundevil and the trial of "Knight Lightning"

The Tao of Programming by Geoffrey James
This is a book that spoofs the Tao Te Ching and consists of several chapters with interesting software development anecdotes, entitled - The Silent Void, The Ancient Masters, Design, Coding, Maintenance, Management, Corporate Wisdom, Hardware and Software, and the Epilogue.

The Elements of Programming Style by Brian Kernighan and P. J. Plauger
The title of this book pays homage to The Elements of Style by Strunk & White, an excellent book in the study of programming style, advocating the approach that computer programs should be written not only to satisfy the compiler, but also with human readers in mind.

The Pragmatic Programmer: From Journeyman to Master by Andrew Hunt and David Thomas
This excellent book looks at the main elements of programming in the modren IT industry. It covers topics ranging from personal responsibility and career development to architectural techniques for keeping your code flexible, easy to adapt, and reuse.

The Mythical Man-Month: Essays on Software Engineering by Fred Brooks
One of the best books ever written about the complexities of software development, the biggest lesson of this book is that the rules of common sense definitely do not apply when working on large software projects with teams of people.

The Secret Guide to Computers by Russ Walter
This book is considered a real cult book because of the author's distinctive, hilarious writing and the author's extreme devotion to his readers. The Guide covers everything relating to computers, from their hardware to their software to their history.

The C Programming Language by Brian Kernighan and Dennis Ritchie
More commonly called "Kernighan and Ritchie" this book is without a doubt one every programmer should read, written in a style that could almost be considered new wave, you have to be sitting at a computer with a C compiler to really enjoy this book.

------------------------------------------------------------

O.K., that's good and well, but what about some books that are not computer science books, but computer scientists should read, here are five;

Discrete Mathematics: An Introduction for Software Engineers by Mike Piff
A really well-written book on discrete mathematics, topics covered include mathematical logic, set theory, finite and infinite relations and mapping, graphs, graphical algorithms and axiom systems, all good stuff for every computer scientist. Best of all it includes implementations of many of the algorithms in Modula-2.

Gödel, Escher, Bach: An Eternal Golden Braid by Douglas Hofstadter
One is the most interesting books ever written, described by the author as "a metaphorical fugue on minds and machines in the spirit of Lewis Carroll". The book examines the lives of logician Kurt Gödel, artist M. C. Escher and composer Johann Sebastian Bach, discussing common themes in their work and lives. At a deeper level, the book is a detailed and subtle exposition of concepts fundamental to mathematics, symmetry, and intelligence.

How to Solve It by George Pólya
Pólya's book is a really excellent guide to problem-solving. Unlike other books of this type, Pólya does not recommend any specific set of techniques by rather a more general heuristic approach to solving problems.

Numerical Recipes by William Press, Saul Teukolsky, William Vetterling and Brian Flannery
These are a collection of books by the above authors that contain an enormous amount of material on computational methods, the scope is supposed to be "everything up to, but not including, partial differential equations", although the second edition does include a chapter on PDEs that discusses the important concepts in the field and cites the most important papers.

The Emperor's New Mind by Roger Penrose
Roger Penrose's book is a remarkable exploration of the nature of human consciousness, his view is that consciousness is non-algorithmic, and thus cannot be modeled by a conventional Turing machine. He suggests that quantum mechanics plays an essential role in human consciousness. The collapse of the quantum wavefunction is seen as relating to the brain function.

------------------------------------------------------------

And just for fun here are five fiction books that mention programming or are about computers in small or large ways. I always dip into one of these if I need a bit of inspiration.

Tron by Brian Daley
Based on the movie of the same name "Tron" the novel is really excellent, it adds a lot of characterisation and depth that was lacking in the movie, it also includes a lot of fun computer in-jokes that a programmer will enjoy. But most importantly the underlying philosophy of Tron is something that I very much believe in, that EVERY computer program you write contains a little bit of your spirit in it (no other programmer would write a program exactly the same way that you do, so each of your programs are unique to you).

Spock's World by Diane Duane
Not really about computer programming, but there is just one paragraph that makes this a magical book for programmers, near the end of the book Spock's father, Sarek who is a programmer on the planet Vulcan comes to Earth to work with human programmers, and in one paragraph Sarek reflects on the nature of human computer programmers, it's excellent.

The Prisoner's Dilemma by Jonathan Blum and Rupert Booth
Based on the TV show "The Prisoner" and using the game theory problem of the prisoner's dilemma as its central premise, this is a really fascinating book, and features a computer expert codenamed "Number 101" who seems very much like Alan Turing to me.

The Discworld Novels by Terry Pratchett
In particular the character of Ponder Stibbons embodies a lot of what a really good computer programmer should be like, plus "Anthill Inside", brilliant.

The Passing of the Techno-Mages: Books 1-3 by Jeanne Cavelos
These books are set in the future and tell the story of a group who use very advanced technology to simulate the effects of magic. The novels centre around the mystery of where this technology came from in the first place and how the lead character Galen treats this technology like a computer programmer.

Friday, November 9, 2007

In Principio erat Verbum

My favorite word when giving training to lecturers on new approaches to teaching is “TECH” (or “the Tech”), as I mentioned in a previous post this term represents the blending of TECHnology and teaching TECHniques to form the TECH. It is worth considering the meaning of the two words that help combine to create the TECH.

Technology is made up of “Techne-” and “–ology”. “Techne-” derives from the Greek and means an art, craft, tool or the way something is gained, and “–ology” derives from the Greek word Logos meaning to speak about something or to write something. Thus “Technology” is speaking or writing about how things are gained. So technology is not the computer you are using to read this posting, it’s when you speak about it that it becomes technology. In other words it is creation through speaking, the same way magicians have cast spells for thousands of years through invocations. Of course the computer scientists reading this will know all about creation through writing (and will be familiar with the terms “casting” and “invocations” in a different context also).

In modern times the word “technology” has changed its meaning, now it has become synonymous with “high technology” (or hi-tech), the antonym of which is “low technology” (or lo-tech) which can be defined as crafts or tools whose inception predates the Industrial Revolution. If this is the definition we accept then one of the oldest technologies that exists must be written language. Writing is a tool that allows communication whose inception long predates the Industrial Revolution. The entirety of written language consists of a mere twenty-six symbols or tools that capture the whole of human knowledge and the most profound of human thought.

One of the reasons for this pondering is that this week I obtained a PDA (Dell Axim x51v) which consists of amongst other things a tablet (or writing surface) and a stylus (or pen). It is a wonderful piece of technology, but each time I use it I am reminded that one of the earliest known literary works, the Epic of Gilgamesh (which concerns the adventures of a great hero Gilgamesh and his wild-man friend Enkidu) was written in Mesopotamia around 3000BC in cuneiform, using a stylus and tablets.




Turning now to the word Technique we discover that it originates from the French word technique which itself is from the Greek word technikos which in turn has the same root as “Techne-” which we will recall means an art, craft, tool or the way something is gained.

In a sense technology is speaking about a skill, and technique is the actual skill, which reminds me a lot of the relationship between teaching and learning, one view of which is that teaching is speaking about developing a skill and learning is about developing the actual skill.

When the TECH works well together it can be a joy, but it requires careful planning. What TECHnologies work well to help students learn? It depends on the topic being taught, the students and the teacher. What teaching TECHniques work well to help students learn? It also depends on the topic being taught, the students and the teacher.

Tuesday, November 6, 2007

The Closing of the E4 Project

Today is the closing conference of the E4 project after two and a half years of really excellent research. One of the benefits of being an academic is the opportunity to get involved in research projects regularly. Ernest Boyer in "Scholarship Reconsidered" suggests that the four functions of scholarship are; Discovery, Integration, Application and Teaching. Discovery is the search for new information, Integration is about considering the cross-disciplinary context, Application considers how knowledge can serve the community, and Teaching is about informing, inspiring and learning from others. The best of research projects combine all four of these elements.

The E4 (Education for Employment) project set out to develop pathways to third-level education for disadvantaged students. In particular by working with post-Leaving Cert Schools on teaching techniques and technologies that aid learning, the students are able to develop new ways of understanding and comprehension. My role in the project was to explore which techniques and technologies best suited particular groups of students, and to train teachers in their use. I like to use the phrase "the Tech" to incorporate both the TECHniques and TECHnologies in one conception. By identifying correct combinations of the tech students were able to learn well.

I loved the training element of the project; visiting various educational institutes, meeting with the teachers/lecturers, and exploring the reasons why we teach and ways to do it better. There were often very strong disagreements as to the nature of our jobs, and in particular the role of assessment in teaching, but it is only through these types of discussions, where views are exchanged frankly, and teachers become unafraid to "show their scars", that we can all learn to be better teachers. As a result of these conversations one of the outcomes of the project that I am most pleased with is development of a handbook for "Teaching and Learning in Further and Higher Education" which I believe should be given to every lecturer and teacher interested in improving their teaching skills. I have included a link to an online version of this handbook below (it's a large PDF so it might be better to right-click and "Save As...").





The other really interesting element of this project was working on a number of creativity techniques. It was clear from the start that the techniques developed by Dr. Edward de Bono were the most powerful approaches available, and part of my research in the project was to extend some of these techniques to match our requirements. As a result of my work Dr. de Bono was kind enough to visit on a few occasions to see what we were doing and give some really useful feedback and very kind comments. Pictured below is one of Dr. de Bono's visits where he sat in on a class I was giving (he's the leftmost person in the picture) where I was teaching using one of his techniques, the Six Thinking Hats.



The lead partner on the project was the Central Remedial Clinic (CRC) who I have worked with on a number of occasions on other projects, and they are a group of people I love to work with because through their work they are making the world a better place in a clear and discernable way. That is why today the closing ceremony of the E4 project is being held in Clontarf Castle, near the CRC. Such ceremonies are always bittersweet affairs, we celebrate the things that went well, the successes and triumphs, and we hopefully learn from the things that didn't work out. As with all of these projects, some people started off strong and disappeared in the middle of the project, whereas others shone brightly when the occasion demanded it of them. It's all part of the process.

For me personally, not only do these projects allow me to keep up-to-date with various kinds of research (which in turn informs my teaching), but more importantly they forge long-lasting friendships.

Sunday, November 4, 2007

The Problem of Plagiarism

I am a lecturer in the School of Computing, Dublin Institute of Technology. One of my duties is as Final Year Project Co-ordinator for one of our undergraduate degrees - DT228, BSc in Computer Science. This means I help organise the process of students undertaking final year projects. I usually give the students a number of talks over the year on their projects - software methodologies, creativity and critical thinking, plagiarism, technical writing, etc.

Also I monitor all of the projects to ensure that no plagiarism is committed, and unfortunately each year at least one, but usually two (out of 50+) students commit some form of plagiarism.

These violations occur in a range of ways, for example;
* Copying text from online sources without correctly attributing
* Copying software from the web without correctly attributing
* Copying results from other people without crediting
* Buying projects online

What is so sad is that the copying students normally cut-and-paste without any changes at all, I suppose they are afraid that if they change anything none of it will make sense. Unfortunately this means that locating copied materials is very easy to find, which I do so every year. Students who copy projects for the web often keep the same project title, which is just silly, it becomes a trivial matter to locate the source of work. As a computer scientist I have been using the World Wide Web since 1993, that is 14 years of searching and locating materials on the web. When I started in 1993 Google hadn't even been created, other search engines existed before Google; WebCrawler, HotBot, AltaVista, etc. So just because a student copies and tries to rewrite in such a way that it can't be located on Google, that doesn't mean it can't be found.





More disturbingly is that recently there are many reports in Ireland of students buying projects online, this is a source of great sadness to me. I really think it is better to do a really crappy project yourself and just manage a pass, rather than cheat and get a good result. In both cases you'll get a degree, but in one case you learn absolutely nothing about software engineering (but a little about online financial transactions), whereas in the other case, you struggle hard for 5-6 months, you learn to design, develop and test a large software system, and expand your skillset. Honestly, getting a good result in your degree is not at all of value compared to having good skills for your longterm career.

Sadly in the past few years I have had to register as a developer on a number of sites that sell software, for example; elance.com, getafreelancer.com, etc. to see if I can spot projects that sound like our proposals. Not much spotted so far, but I am dreading the day when I see one of the proposals on one of these sites. The real problem is that if I don't spot it early on, I will definitely discover it later, what students don't seem to know is that these sites usually put some (hidden) markers in the code and/or in images to indicate the providence of software, these are easy to find when you know where to look, as I do.


BOTTOM LINE: Copying is for losers.

Taliessin through Logres

"Taliessin through Logres" is the title of a collection of poems by Charles Williams, concerning the Arthurian saga as seen through the eyes of the court poet Taliessin. It is my favorite collection of poetry, and in my opinion Charles Williams was an incredible writer and poet.

http://en.wikipedia.org/wiki/Charles_Williams_(UK_writer)

here's an extract;

The seas were left behind;
in a harbour of Logres
lightly I came to land
under a roaring wind
Strained were the golden sails,
the masts of the galley creaked
as it rode for the Golden Horn
and I for the hills of Wales

In a train of golden cars
the Emperor went above,
for over me in my riding
shot seven golden stars,
as if while the great oaks stood,
straining, creaking around,
seven times the golden sickle
flashed in the Druid wood.

Covered on my back,
untouched, my harp had hung;
its notes sprang to sound
as I took the blindfold track,
the road that runs from tales,
through the darkness where Circe’s son
sings to the truants of towns
in a forest of nightingales.

The beast ran in the wood
that had lost the man’s mind;
on a path harder than death
spectral shapes stood
propped against trees;
they gazed as I rode by;
fast after me poured
the light of flooding seas.

But I was Druid-sprung;
I cast my heart in the way;
all the Mercy I called
to give courage to my tongue.
As I came by Broceliande
a diagram played in the night,
where either the golden sickle
flashed, or a signalling hand.

Away on the southern seas
was the creaking of the mast;
beyond the Roman road
was the creaking of the trees.
Beyond the farms and the fallows
the sickle of a golden arm
that gathered fate in the forest
in a stretched palm caught the hallows

At the falling of the first
chaos behind me checked;
at the falling of the second the wood showed the worst;
at the falling of the third
I had come to the king’s camp;
the harp on my back
syllabled the signal word.

I saw a Druid light
burn through the Druid hills,
as the hooves of King Arthur’s horse
rounded me in the night.
I heard the running of flame
faster than fast through Logres
into the camp by the hazels I Taliessin came.