This course will introduce students to the basics of the Structured Query Language (SQL) as well as basic database design for storing data as part of a multi-step data gathering, analysis, and processing effort. The course will use SQLite3 as its database. We will also build web crawlers and multi-step data gathering and visualization processes. We will use the D3.js library to do basic data visualization. This course will cover Chapters 14-15 of the book “Python for Everybody”. To succeed in this course, you should be familiar with the material covered in Chapters 1-13 of the textbook and the first three courses in this specialization. This course covers Python 3.

Enseigné par

Charles Russell Severance

Transcription

[MUSIC] When I returned to Switzerland, I got an invitation at the University of Zurich and at the ETH to introduce computer science as a new subject. And, of course, being a self-trained man essentially, I looked what tools were available and that was rather a disappointment. Yes, yes, there was ALGOL available, which convinced me through its rigor and its good structure, but it had a lousy implementation. And I felt using that ALGOL could only reduce the chances of it ever being accepted. And on the other side, there was only Fortran, which I found unsuitable for teaching. Not to talk about Assemble language or Assemble code. So I decided to continue my work from Stanford and implement, no, not another ALGOL compiler, but what later became known as Pascal. I'd had been a member of the IFIP working group and there were finally two proposals. One by Arthur Langharton from Amsterdam, and one from me. And I might say I lost out, and then I decided to implement it just in spite of it all because I needed it, I needed it for teaching. And that's how what lead to one and a half years later, to Pascal 1969. And in 1971, I used it for the first time in an introductory programming course. >> It kind of took a life of its own, right? It took a life of its own in the, in corporate, in the corporate world. I mean, >> Yes, yes, although I must say, it took some time. We had implemented Pascal on quite a lot of different computers. And we had helped other universities who wanted it, to transport it to their computers over Pascal P, the portable system. But the real breakthrough came actually with the advent of the microcomputer. Apple II, particularly, also Tandy and some others, and they brought out UCSD Pascal and Pascal implementation by Borland, Turbo Pascal. And and they were selling not only compilers, but an integrated system with text editor and debugger for something like $50. And that really made the difference, at a time when compilers would still cost thousands of dollars for large machines. And now of course they spread into the areas where people did not come loaded with bad preconceptions, you know. They started learning programming from scratch. And that's how computing was brought into homes and schools. >> What other language would have been suitable for the mircroprocessor revolution in the early days of the microprocessor revolution? >> Yeah, well that was of course the point, yes? There was only one competitor, that was Basic. But from the pedagogical point of view, I think Pascal was the right thing. >> But even if you think of it as a systems development language, on early microprocessors. >> Mm-hm. >> The fact that you had real interfaces. >> Yeah, yeah. >> And type. >> Yeah. >> And the ability to try to kind of at some level make contracts. >> Types and- >> Basic, and I mean so Basic really wasn't a competitor at all. I think, if you start thinking about doing something... >> Well, for beginner's courses it was, of course. >> Yes, >> And in particular in the US people were not used to structured languages, you know. Even Fortran was a fairly flat thing, and, but Pascal caught on quite well also in primary schools. >> And, and, and Pascal was the, sort of, the API definition for Apple all the way through Macintosh, right? >> That's right. >> Did you interact with UCSD, with Apple, or by then was it simply kind of a public, a public good? >> It was public good. Yes. No, I had very little interaction, really almost none. Yeah. The Atlantic Ocean is too wide, or was too wide for close interaction, I think, and we had always distributed our software for free, covering the cost of the tape. And so of course nobody had an obligation to fall back on me. >> Certainly, in the beginning of computing, open source wasn't something we thought of as special or different, it was just a way of behaving. >> Yes, yes. I think universities always behaved like that, open source. I mean, universities have an interest in spreading their ideas, and not in protecting them. >> Now kind of talk about the follow-on the languages that you carefully didn't name Pascal. >> Yes, I did not, and from the commercial point of view it's regrettable because if I had called Modula Pascal 2 and Oberon Pascal 3, they wold have had better success. Yes, Modula-2 came nine years after Pascal. And it was a language designed for system development influenced also by Mesa, developed at Xerox Park where I spent a sabbatical, Mesa itself based on Pascal, and the primary new feature of Modula was the module. And we fixed the interface specification, and implementation, to separate compatibility of modules. Separate compatibility with tight interface type checking, that's of course what was missing in Fortran. And so linking different modular modules together is as safe as just programming in one module, and that was absolutely crucial thing. >> So talk about the transition then from Modula to Oberon. >> That took place after my second sabbatical at Xerox Park starting '87, '89. I and my colleague Jurg Gutknecht had actually become convinced that the future lay, particularly for teaching programming, in simple languages. And Modula, to our taste, had already been overloaded with features and facilities. And so we wanted to, to, clean up, a modular tool and that resulted in Oberon. We added essentially only one feature, an important one though, that was type extension. And together with type extension, and together with procedure variables, which were already present in Modula, you could implement the full scheme of object orientation. So, from the outset that was the innovation in Oberon, simplicity plus object orientation. >> So Oberon also begat an operating system, correct? >> Yes. Remember I had spent my sabbatical, the first one, at Xerox in '76, '77. And I was given an Alto computer, for myself alone, under my desk. And that was, of course, an absolute change in, in the way computers were used. At home I still had a terminal, linked with a thin wire to a big machine, which was shared, I mean, with hundreds of others. And so having my own computer, with a bitmapped screen, you know, able to do much more flexible text editing, and forms, and graphics, and all that. That was really for me a revelation. And I decided that I wouldn't want to program with these old dinosaurs any more and I had to have one of these things too. But they were not on sale. They couldn't be bought. And the only thing I could do was to decide to build one myself. And that's how I diversified into hardware. Fortunately I had been trained as an electrical engineer, and so it was a bit easier. But in the meantime, which was something like 15 years, electronics had undergone a big change, you know, from, I was still trained on vacuum tubes and now they were to, not only to transistors but to integrated chips. But it was really fascinating. And with very little money, I think I got about 50,000 francs as a starting capital, we built a little workshop and built prototypes. And they were of course then tuned to Modula. The language Modula, and the compilers, and the operating systems, were closely connected to, to the Lilith computer, it was called, and the whole thing was in a way repeated ten years later with a pair of Oberon language, Oberon operating system, and the Ceres computer. [MUSIC]. >> I felt that we should apply the same principles of simplicity and well structuredness that we used in software also to hardware. And this is now possible because of these FPGAs. And so I got a Xilinx development tool with an FPGA in it. I implemented a processor, I called it RISC, but it is much simpler than the ARM or the MIPS or the SPARC. Really again concentrating on what is essential and presentable to students. The processor's very low code takes about three pages, And then, and I'm just about finishing this, I wrote an Oberon compiler for that RISC architecture including compiler and linker and downloader. And so now we start, or I start, revising the book, completely rewriting the chapters on the compiler and the linker load. But the rest remains surprisingly as it was with relatively few changes, which shows that the ideas there were quite modern. >> Do you have any FPGAs that are programmed? >> Yes, this one is it, unplug it. That's just a Xilinx development board which costs about $100. >> And this is your microprocessor? I mean- >> This is the FPGA. >> Right. >> Into which I have downloaded the the RISC processor. >> And so when you're finished downloading that, it becomes the microprocessor? >> That's right, exactly. >> And how is memory come from? Oh, it has memory. >> These two chips are one megabyte. So by nowadays standards, of course, it's a small computer, but we can easily fit our Oberon operating system. >> We understand what a FPGA is and then you're building up, effectively, from gates. >> Right, right. That's the idea for teaching. And in the new version of the book there will also be a chapter on this. Has to be, to make it complete. [MUSIC]