user-avatar
Today is Sunday
Sunday 5th February 2012

 

Teaching

Lecturing

Below is a list of the modules that I lecture on along with any slides and course materials I use or reference.

CS101: Introduction to Personal Computer Equipment
Despite the name, this course covers a wide range of topics from the basics of standard (x86) PC architecture to the use of UNIX tools such as sed, awk etc. In 2009 I gave two guest lectures and now as a PhD student I lecture more permanently on the module. My lecture slides and additional notes are available below.

Whilst not covered in the lectures the following code may be of interest to some students. It is an example I made in 2008 of how to write a really simple USB driver for Linux. It was part of a talk I was going to give at Edinburgh University (but never made due to the train network in the UK) titled ‘Solaris Internals’. The talk gave an overview of the Solaris Kernel, and also the Linux Kernel. I had written this Linux driver to control a USB Rocket Launcher and the idea was during the talk we were going to produce a driver for Solaris to show the differences – a risky business… but it would have been cool for the audience to see the USB Rocket Launcher working with ‘their’ driver… Nevermind!

Given that it was for a talk, and was going to be distributed after the talk to the audience, the code is exceedingly well commented and simple. So you shouldn’t have any problems following it at all.

Demonstrating

I have been a part-time module demonstrator for the Computer Science department since September 2006. During this time I have worked on a number of modules:

CS101: Introduction to Personal Computer Equipment
As already discussed above, this module covers a wide variety of topics from simple Linux/UNIX command line tools such as sed, awk, grep to x86 hardware concepts. The module also touches on the basics of operating system theory such as processes, threads, virtual memory, file systems etc.

Whilst doing the CS101 practicals in the past I have found the following documents useful:

CS122: Introduction to Programming
This module is designed for people who have never done any programming before. It slowly introduces students to the basic concepts in programming such as loops and conditional statements through the use of the Java programming language. It has a high emphasis on Object Orientated design.

CS121 (previously CS123): Concepts in Programming
This module is designed for students who have some programming experience as an alternative to CS122. Instead of starting from the basic concepts (loops, conditional statements etc) it gives a overview of the Java programming language and focuses on bring students in line with Object Orientated design and the use of UML (Unified Modeling Language) for program design. In addition, it covers the programming language Haskell.

CS237: C & UNIX System Programming
This module is designed to teach the basics of the C programming language, the structure of the UNIX operating system and the UNIX programming interface.

CS257: Mobile, Embedded and Wearable Technology
This module covers various issues, drawbacks, limitations, and technological possibilities with relation to small computer systems. It covers topics such as battery life, energy budgets, heat dissipation and the use of low-power and interrupt driven processing.

All the datasheets from the CS257 practicals can be found here.

CS357: Ubiquitous Computing
A third year follow on module to CS257, this course covers technologies such as RFID, GPS, GSM, etc.

CS359: Internet Services Administration
This module looks at the administrative requirements and the practicality of the successful management of a variety of commercially relevant (and Open Source alternative) Internet Services, such as DNS, NIS/NIS+, LDAP etc.

© 2012 Michael Clarke Blog All rights reserved - Wallow theme v0.46.4 by ([][]) TwoBeers - Powered by WordPress - Have fun!