These are the scanned in handouts I've found in some boxes in my house; along with the more interesting handwritten notes.
This contains most but not all of the non-CS-theory handouts I have around
- All of CS4 I could find
- All of CS1 (and ignoring all the maths course)
Todo
- CS2h systems. Standard ML. I will probably skip the 6809 bit
- theoretical CS: languages and automats, comptability, algorithms, complexity, etc.
I'm scanning in docs as I work through them, and I have been putting off theoretical CS. Now I can prove an Nondeterministic Finite Acceptor with ε-moves is equivalent to a Deterministic Finite Acceptor (hey, a powerset of a finite state set is still finite after all!), I will start scanning them.
until then: the Parallel Computing course of CS4 are the most interesting and poignant. VLSI was new then and it wasn't clear what the best architecture for a computer in VLSI was that could make the most of the silicon. It turns out that boring old Von Neumann architecture won because it's the only designer us software developers could cope with. as a result, today's machines have many cores, speculative execution with register renaming, complicated cross-core and cross-socket cache coherence systems to try and pretend everything is a simple sequential CPU with flat memory. If we'd embraced Occam and Transputers, coded for NUMA from the outset, well, maybe things would be differtnt today. But the 90s were built around the overwhelming success of Intel and Microsoft, and they wanted the x86 to win.
Anyway, enjoy. For anyone seeking to have their answers to any exercises marked: ask your AI tools.
It's notable that this course was taught what was effectively 50% of computer science ago, if you consider CS to have begun at time of Turing's work. None of the theory is obsolete, though I did check up on some things, such as the current complexity of sorting using the Ford-Johnson Algorithm (it's 30 comparisons for sorting 12 items, FWIW). In fact, the CS4 Introduction to Theoretical Computer Science Course doesn't seem to have changed its curriculum at all: it still references that work by Turing, Kleene and Milner.
- People discovered more complexity groups. If you are ever with someone who starts going on about NP complete problems, name drop "APX hard" and see if they blink.
- All the stuff on parallel computing and whether new architectures would make sense in VLSI systems: it didn't. Poignant that. Though now even our phones have triangle processors attached to their von-neumann architected BBC Micros.
- Papers to go with courses are online. All the citations need to be from books or the DCS/DAI libraries; some of the courses you have to ask the lecturer for a specific paper if you are interested.
- There's a lot more stuff on top in terms of systems
- Stuff which was fairly niche cs4 (distributed systems) is now mainstream (an http GET with to a web server with an eventually consistent KV store behind it is not rare)
- Computers are everywhere. Which means I can be on a bike ride somewhere in italy and get a voip call from someone pretending to be from my mobile phone company but really a scammer from the other side of the world who is trying to get my mobile phone company login so they can buy a phone on my account as scamming is now globally profitable the way shoplifting never was.
- Security matters! There's about one page in the comms course which mentions public/private keys, but that's it.
This was the era of
rlogin; when you couldtelnet $host 25for pretty much any host on the net and talk to it, because everything was trusted. That made it easy to roll stuff out, but it means that the underpinnings of what the world relies on now is built on a naive level of trust.
Anything not related to CS/AI (i.e. maths, all the EE stuff). If I'm not going to read it, I'm not going to scan it.
The AI2 vision course notes on the basis of utter obsolescence and a lot to scan. Maybe I should post it back up there in case they lost any copy they had in that fire on South Bridge a few years back.
It's all about edge detection and then algorithms from that in Prolog: segmentation, labelling and then working out what is being looked at. Nowadays, it is machine learning based on a foundation of paying people to label objects by hand, or tesla drivers to press a button their steering wheel every time the car nearly runs someone over.
Here's the various languages I seems to have covered, along with some hardware/vlsi spec stuff.
| Language | Courses | Used since? |
|---|---|---|
| C | EE2 | #include "windows.h" |
| 6809 assembler | EE2 CS2 | no |
| Pascal | CS1-3 | No, but golang reminds me of it |
| Prolog | AI2 | At HP Labs doing NLP with an RDBMs behind it |
| Standard ML | CS3 & CS4 for the theoretical CS stuff | Use it as my CLI calculator |
| IMP77 + 68k assember | CS4 Operating Systems | Be serious |
It's broad, and what it teaches is something important: languagages are just tools. Learn to use more than one, and you will know when to use different tools for different problems.
This readme was drafted using vi in ex mode which worked until I wanted to back two lines to
change something and I got stuck unable to exit.
Turns out control-C is the escape mode there, not the escape key. Anyway I got out and finished it in textmate. For anyone who wants the authentic 1980s experience, print out an introduction to the text editor, then try and do exercise one, a 150-word essay about yourself, against a terminal window set to full screen sized to 80x24 with the vt200 font or similar. That was EE2; CS taught the editor VED which ran on EMAS and more, that was visual as in "repainted the whole screen", and what we would have used for much of the course, other than on the Sun workstations which we got to play on in the final year.
The Department of AI give us microemacs and tcsh. My use of fish, shell for the 1990s may be influenced by that.
Returning to em, I cannot believe that I wrote anything that worked in that editor.
As anyone who has ever done shared-screen coding with me will know, backspace is about 1/3 of my input stream; there's a reason why I remap that key from a far corner of the keyboard to be adjacent to the space bar --and it is not that I forget its location.
Presumably for people coming from the punch card world, having a "glass teletype" was profound.
(Actually, I suppose em would work with a real one, wouldn't it?).
Today, all that remains of the whole notion of teletype is that /dev/tty is a thing...we don't actually think it through that they represent the idea of having a typewriter like device that would actually print characters and you would use one as the machine you coded on.
That'd be ridiculous.
In amongst the handouts, a form wherein I am allowed into the JCMB building after hours, provided I don't sleep there, and that I don't bring camping equipment in. Clearly at least one person has used the "this is just camping equipment" excuse when challenged about whether or not they were living in the building...
