With these few words the legendary AIQUniverSity was launched. In case you weren't following the thread http://www.aiqus.com/questions/36439/shifting-courses , here's a recap of the possible student-initiated courses so far: Structure and Interpretation of Computer Programs - the Abelson and Sussman lectures (July 1986) MIT - http://groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures/ Linear Algebra - Gilbert Strang (1999) MIT OCW - http://ocw.mit.edu/courses/mathematics/18-06-linear-algebra-spring-2010/ Nothing is scheduled yet, it's all in the early stages of discussion. It might be a way to leverage the people we have here to do things we find interesting without waiting for someone else to offer it to us. This is just a thread where we can kick some ideas around without having to expand 33 comments. If you have an idea for a class, post it as an answer so comments can accumulate under it. We might consider upvotes on answers as a proxy for interest in doing those classes. |
|
I've been thinking about how to do this and am convinced the best way is to just gather materials and try out some ideas. To that end I thought I'd start an example here for 6.001. Let's see what happens. Feedback appreciated. Structure and Interpretation of Computer Programs - the Abelson and Sussman lectures (July 1986) MIT - http://groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures/ Or http://sicp.csail.mit.edu/Spring-2007/ SICP OCW 2005 - SICP book online -
link
This answer is marked "community wiki".
Users with 100 karma points or above may edit this wiki. 1
I saw the first lecture and enjoyed it. I've been spoiled by the aiclass however. This lecture did not pass the three-yawn test as it runs over an hour. I kept thinking of where I'd insert quizzes and what they would ask. Just for the sake of completeness: Here's the Youtube link to the lectures again. |
|
I copied this from another thread. I thought it might be a good class to run for ourselves. There's no content here that's different from the original post, I just duplicated it here as a placeholder for us to follow up if there's any interest in doing this (after this round of classes - I'm fully booked). If you already know how to program and are just looking at other languages to fill in concepts, I'd suggest you look at Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages by Bruce A. Tate. I was planning to go through it before I got sucked in to online classes by aiclass.
It's not going to make you an expert in any of them but it sounds like fun/another chance to fry your brain with overwork. http://www.amazon.com/Seven-Languages-Weeks-Programming-Programmers/dp/193435659X I'll second it on this thread to. I have a tentative phone call scheduled with the author of this book tomorrow. Please let me know if there are any questions you'd like me to ask him. I have not read the book yet, so I do not know what to ask. 1
I have not read the book either, but have some thoughts (not sure what the author may have covered in the book or if he has a website for the book). Does he provide suggestions for development environments (anything from heavyweight IDEs to suggesting "just use vi and gcc") for the languages? Development environment to use is a personal decision (and sometimes contentious) but an overview of what is available would be a big help. Does he discuss programming evolution and how the different languages he covers fit in? I'm assuming you will be bringing up the idea of basing an online "class" on his book and seeing how he feels about that. Does he have online code repositories for his book examples? Good luck with your call! Chapter 3 (Io excerpt) and chapter 4 (Prolog excerpt) will give you some deeper idea about the book ... Thanks, I'll read them this evening. 1
@rseiter - it is a grown up book for grown up programmers and grown up programmers don't need people to tell them what IDE to use or how to install the framework on operating system 'x'. He assumes that you can sort all of that out for yourself and if you can't, then you aren't ready for the book - he even has a section in the intro called 'Don't buy this book' The book focuses on key features of the languages and the philosophy of the language. There are a lot of gaps in his syntax explanations, particularly in the basics - it's not a programming reference book, but again, grown up programmers will either be able to fill in those gaps with their own experience, make inferences about syntax from complex examples, or they'll know how to look it up on the internet. It's hardcore. I just wish all programming books were this concise. I read the sample chapter excerpts - @jholyhead is right, it is hardcore. I figure my chances of getting through the whole book would increase dramatically if I was studying it with other people. Sort of the "running-buddy" principle. I'm definitely going to give this a shot after I clear this round of classes. I hope a few more people are interested as well. 1
@jholyhead as someone who has been a professional programmer for over 25 years I will ask that you think hard before making pronouncements about what "grown up programmers" do and don't need (and if you still feel the need to do so please try to be a little bit less insulting, especially when you know little about my background). I am capable of figuring out what I want to use, but when LEARNING A NEW LANGUAGE appreciate suggestions for good environments for that language. It saves me time to not have to chase this down. I've worked in proprietary scripting languages that failed to provide a debugger and believe that few things help productivity (in the real world of large bodies of code much of which I may not have written) as much as a good debugger. I feel this so strongly that when I implemented the scripting environment for a startup company I worked very hard to include debugger support. It made my life and my users lives much easier (guess who got to debug much of their code). For whatever it's worth, you commented in another thread "Simulation software is very very complicated and as a result very very expensive." I'll give you one guess what kind of software I was working on (if you like I can point you to the patents granted). I can certainly use Google to search for something like this, but if you are going to the trouble of writing a book on the topic why not include a page for each language for suggestions/links? 1
Was forced to learn Erlang for a course I took last year, can't say i liked it. There is an official (?) Emacs-plugin for Erlang but since I’m not too fond of Emacs I searched the net for a better choice. Tried one plugin for Netbeans and another for Eclipse, both are in beta and have been so for a long time. None of them were any good but the Eclipse one sucked the least IMHO. Guess that Eclipse has the best overall support for these exotic languages. Doubt you will become an expert in any of these languages just by reading the short introductions in this book. If you just want the ‘hardcore’ information you can get it at the official websites http://www.erlang.org/, www.haskell.org etc and don’t need a 3rd party book like this. To learn Haskell or Erlang a more laid back way try http://learnyouahaskell.com/ or http://learnyousomeerlang.com/ @jimgb thanks for posting the excerpt links. @Ceda, thanks for posting your experiences. I used Eclipse when I started learning Python last fall so that sounds like a good place to start. Have you read the Seven Languages book? I am trying to understand what exactly it adds over just learning the languages individually. 1
@rseiter - The book doesn't get into editor/IDE recommendations much, with a few minor exceptions. For example, in the Ruby section he states "few people are using Ruby from full integrated development environments, but many are happy to use a simple editor with files.My favorite is TextMate, but vi, emacs, and many other popular editors have Ruby plug-ins." He also explicitly states that he tells he "won't be your installation guide" or "your programming reference". I suppose those points are not surprising given the size of the book and the breadth of material (i.e. seven languages) being covered. I have skimmed the book but haven't read it in depth -- though I have read the intro and the hence the authors explanation of the purpose... but like you I find myself asking the benefit of doing this versus tackling a particular language one at a time. Perhaps it is because I have a similar background to you. Thanks @egoots. After reading the excerpts @jimgb posted I can see the author was explicit about what he is not covering--fair enough. The first review on Amazon is pretty detailed. Can you comment on the statement "I wish that the individual chapters went into significantly more depth comparing the motivations for and consequences of each language design."? My big hope for a book like this would be putting each language in a bigger picture context (e.g. he categorizes the languages as functional, OO, etc. but does he follow through and analyze the implications), but that review comment makes me think the book lacks in that area. Again, based on skimming... It seemed to be a matter of depth. Each Language section ended with a summary of the strengths and weakness of the given language so you got some of it there. It also had interview sections with the language designer (or expert) so you tended to get some background on design decisions. Maybe someone who has actually read and worked through the book can be a bit more concrete. 1
@rseiter - you've taken offence where none was intended. I wasn't trying to suggest that you weren't a grown up programmer, I was simply trying to distil the essential attitude of the book - there is no hand holding of any kind. If my tone was excessively combative (bad habit), I apologise. The book's author would consider a page of suggestions/links for IDE's etc a waste of a page that could be better spent exploring the language under study. @rseiter - sry have only browsed the book briefly at the store. Can't give a fair review but got the impression that it show the strength of each language. Being unbiased it also show some of the shortcomings, something you usually don't get in books about a single language. PS. Four of the seven languages in the book are functional; Scala, Clojure, Erlang and Haskell. Much hype about functional languages at the moment. Would like to learn Haskell (pure functional) and maybe some hybrid (more useful?) like Scala or F#. 2
I spoke with Bruce Tate on the phone today. He was incredibly gracious and pointed me towards a few resources that have popped up since the book was published. @rseiter - "Does he discuss programming evolution and how the different languages he covers fit in? I'm assuming you will be bringing up the idea of basing an online "class" on his book and seeing how he feels about that. " In all but one case, he prints a conversation with the inventor of the language discussing its origins, etc. In the one case where he doesn't, he prints a conversation with an early user of the language. He was very positive about the idea of a class. If we decide to do this, maybe we can put together a list of ideas and resources to see what his reaction is. I mentioned the learn-quiz-learn nature of the aiclass and he suggested a few places we could look for quiz material. I'll have more intelligent things to say after I read the book (in my copious free time).
showing 15 of 20
show all
|
|
Blogger Scott Young have taken up the challenge of learning M.I.T’s four-year computer science program on his own in 12 months (?) and chronicling his progress on his blog. Thanks for this, it's a good find. Scott has some interesting things to say. He's setting himself a grueling pace. 33 classes at about 1 per week (from his week 1 video) where MIT estimates 120 hours for the class (I'm guessing this is for a 12 unit class over a 10 week semester) including about 30-40 hours of lectures. I'm interested to hear his thoughts on his current classes. I think 6.002 and 6.003 have caused a number of CS students to reconsider their majors (and 6.013 in his next set is even worse IMHO). 1
I thought this was a good post about studying from Scott. Summary:
|
|
I think if someone is serious about a "bottom-up" free online course, the thing to do would be to start posting short, 2-10 minute videos on specific topics they know about. Someone could be the co-ordinator, and could organise an index page into these by area of study, and by difficulty, then beginning to call for more videos to "fill in the gaps" and give the course a coherent structure. I think a top-down approach is just too hard here. I agree. Along the lines of the aiqus/stackoverflow format I think a db of references to single concept lectures, quiz questions, assignments, notes etc could be assembled, assigned keywords, dependency keywords, and then rated. 1
That may be more ambitious than what we were originally talking about. There is a large body of lectures already recorded. We were considering using those lectures and other materials together as a group, working on a schedule like a normal class. Effectively you take a video lecture (1.0) mix in other resources and group discussion (2.0) and the result is either 1.5 or 3.0 (I'm not sure which). 1
Yep, I'm more interested in having good random seek for refreshing after the class (or picking just the parts I need for a dependent class.) But I don't think the 2 goals need a different solution. For example with Linear algebra, there are at least 2 lecture series (Stang and Khan) and quite a few open text books, etc. The class needs to be an ordered list of topics, perhaps following Stang. For each topic there could be a reference to a Khan youtube video, an offset into a Stang lecture, a section from book1, book2, some related question from book1, book2, etc... If some students are still confused a student may make another youtube video for the topic, etc.. 1
Is there a way to organize it like a tree? I wouldn't necessarily put Strang at the top and link down to Khan and readings but that's one version. Maybe we could chart different paths through the material based upon what kind of education appeals to you. Reading then lecture then test (the classic model) and any others you can think of. I was thinking that meta data on the materials could just be separated out so a description of what to learn could be separated out from how one likes to learn. Ultimately, a class is just a canned list of topics one is supposed to know at the end. I picture gentoo's package system(http://packages.gentoo.org/ ) with very different keywords for slower machines (students) that support different human (and computer) languages instead of architectures and each of which has a fairly random set of packages already installed. I suppose education isn't the only industry selling land without a map. But I've never seen anyone buy $120000 worth of software who wasn't old enough to know what they were getting into. "Ultimately, a class is just a canned list of topics one is supposed to know at the end." This reminds me of the statement made by the president of then Clarkson Collage (now Clarkson University) in 1979 or 1980, "Education is the transfer of data from professors to students," and that his role as a collage president was to "increase the band width." In the same interview he said that books were obsolete that Clarkson was closing its library, since it was no longer needed. To say he took a lot of heat for this would be an understatement. Hmm, I'm saying education is the accumulation of knowledge and ability to use it in students and a perfect source for it for all students on all subjects remains elusive. (Hence the need for a map of topics, sources and metrics.) If you divide up the logic pie chart, I have one side with "there is no perfect solution for every person on every subject" and he shares the other side with an infinite number of other alternative silver bullets for every student on every subject (from "peer tutoring", "from audio lectures in an unfamiliar language", from "watching a master craftsman", "through dance".) |
|
L.A. class has all the solutions included. Challenging part will be not to look at them before you are absolutely sure about your answers. 1
I needed to learn LA for the AI class. I went through the whole Khan Academy Probability and Linear Algebra video sets. I stumbled on the Strang lectures afterwards. I like Strang as a teacher but the lecture I saw felt very 1.0, a guy in a classroom in front of a blackboard. This was recorded in 1999. But the material doesn't really change ;) Linear Algebra was in fact the first class I took when studying maths, ten years ago. I won't watch the videos, but I'll join the discussions. The sad thing is I took the predecessor to that class (18.700, and actually got an A), but the professor was terrible (there were multiple sections and attendance at mine dropped by 3/4 or so in the first few weeks, but I had conflicts with the others) and I never really internalized the material so haven't retained it as well as I would like. @robrambusch, the 18.06 lectures are very 1.0. The question is: can we take that and use it as part of something that results in a better experience? I'm really curious what will turn out to be the important characteristics of a successful online learning program (and how they will vary between students). 1
@rseiter - Well, it's MIT's property so I can't see us chopping it up to insert quiz questions. There's no reason MITx couldn't do something like that though. Working from a script that says "Pause at 3:36 and consider this question" feels hilariously clunky. I guess we could start by assuming everything is technically feasible and coming up with a list of answers descending from "best" to "okay". Then we can go back to see which ones are really doable. 1
I guess I'm not sure the embedded quizzes are an essential component. I find them helpful and think they should be included in new content, but don't think the lack obsoletes old content. Another way of putting this: I would rather read an old style textbook containing a brilliant exposition of a concept (and given that the technology has been around for centuries there are plenty of those) than learn from the most technologically advanced multimedia presentation of a mediocre exposition. Of course the best of all worlds is using the latest technology to make a brilliant exposition even better. As with a traditional class I would consider the choice of textbook and evaluation material as important as the lecturer. To be more concrete, I think following the classic lecture/required exercises model followed by online discussion could work quite well with the 18.06 material. At least until OCW/MITx/someone else does something better. 1
@robrambusch - although the materials are MIT's property, they are released under a Creative Commons by-nc-sa license, thereby allowing their use in derivative works. |
|
There are probably a few around here who could teach. I wish I had the time. What do people want to know? 4
@jimgb - "EVERYTHING!!!" - Well actually everything broken into 6-minute segments with embedded quiz questions. ;-) |
|
It's funny how all classes are named with standardized numbers in the US. We don't have that in Germany. Anyway, the 6.001 lectures are also available on Youtube, of course. I forgot to check, just started an over-night batch-download without much thought. I came to lecture 4a so far, and noticed that it does in fact go well together with the preparatory reading for the NLP class. NLP class starts with regular languages and pattern matching, while Abelson and Sussman start with implementing a pattern matching procedure in order to build an interpreter for Lisp (in Lisp ;) ). MIT is an outlier from the normal US practice. Most colleges in the US name classes more like Stanford (e.g. CS221). How are classes named in Germany? MIT course numbers: Stanford CS course numbers: MIT is also an outlier in how it describes (credit hours vs. units) and grades classes: I noticed introduction to CS most of the time seems to be CS101. German universities pretty much all have their own names for classes, and it is rarely numbers (and even if there is numbers student won't use them). There is some kind of European university credit system to easily accredit and compare classes, which was introduced some years ago when they changed degrees to Bachelor and Master. This annoyed many people in Germany, though, because the system before had a five years 'Magister' or 'Diploma' system was more scientific and less like 'going to school'. The nine biggest technical universities (TU9) are now all offering Diploma again. This also means there is no division between 'Undergraduates' and 'Graduates'. The 101 course number is so common (in many departments) it is often used as a joke. I might say "<something unpleasant=""> is like hitting your thumb with a hammer 101" or use "<something> 101" as a somewhat derogatory phrase meaning an overly simplistic interpretation, or in non-derogatory form as a basic overview (most common). If I understand correctly the 'Magister' or 'Diploma' system has a different teaching style from a 'typical' Bachelors/Masters program. That sounds interesting. Can you elaborate or point me to a reference to learn more? How does the Doctorate fit into all that in Germany? These online classes have gotten me more interested in educational practices. This was an interesting link: http://www.thedailyriff.com/articles/the-finland-phenomenon-inside-the-worlds-most-surprising-school-system-588.php Magister and Diploma are / were full degrees similar to Masters, but without any intermediate degree before that, only some kind of intermediate exam you would take after about two or three years. Regular (minimum) time for finishing was something like five years, but there were not really fixed time constraints, it offered plenty of freedom for choosing your own path, combining different sciences and taking you time. You can do a doctorate afterwards, which is usually at least three years. If you are pretty sure you will do the Ph.D. and your professors agree you can do it, you don't even have to get M.A./Diploma before, and could do everything in one go. Oh, by the way: Apart from some small administrative fees, university education in Germany is free at most places, if you do not exceed the regular time by more than two years ;) Here in Munich, we can extend the MSc till 7 semesters. Failing to achieve all the credits during that period results in expulsion. And even exceeding the 4 semesters the study fees remain the same, as far as i know. @ermalguni: Well, Bavaria and Lower Saxony are the only bundeslaender left where universities charge study fees, luckily ;) At other places universities only charge if you exceed regular time by two years, which usually means something like 13 or 14 half year terms for a full degree. I still got the old Magister degree, without a time limit after the intermediate exams. |
Of course you must check it carefully, here is one "review" I found ... |
Online education has quite an impressive pace of development ;)
Well, I Googled "rseiter" for a picture to give us that "Our Founder" oil painting in the impressive virtual lobby - but no luck. If you skip the bricks-and-mortar, the lawyers, and the committees then you can move things right along ;-)
rseiter??
@jimgb you are correct.
The picture doesn't do you credit ;-)
I read the SICP book about 10 years ago, and loved it, and watched the Gilbert Strang lecture to prep for the AI class, and recomend them highly.