Wednesday, October 16, 2013

Course within a course

Because it's time I did something new, because I am/was worried that my programming "skills" from the late 90s need updating. Because...
I finally did it. I'm finally using Coursera! I had worried about the video format (my internet plan allows only a few gigabytes of data monthly, so I don't use a lot of video online; then also the speeds could be frustrating, in the tens of kB/sec often, but on good days in the hundreds.)

The thing to do is to start anyway, and I have started, and I am impressed with Coursera so far.

The impetus for this experiment with online learning was my sizable teaching load.  I have some large classes with about 100 students and had to split them into two or three groups to get any chance of doing a good job.  For now, it's not understood in my country that you can teach a course in sections, so if there are 500 1st year students who need to take Physics, you fit them in an auditorium for Physics 101, you should by no means create 5 or 10 groups of Physics 101.  They say it's because of cost, but I think it's because of inertia/habit. 
Doll within a doll: Matryoshka dolls

Anyhow, I needed to get more time away from stressful, low-yield teaching tasks that don't scale well, and still get the students to learn more through fun, interactive methods. So I recommended two Coursera courses as a required part of my "Internet and Web Applications Technology" course this semester. They are: "Internet History, Technology, and Security" which is shaping up to be really exciting, and "Introduction to Programming for Musicians and Digital Artists" which I hope will take the perceived dryness out of programming and be cool enough to get the whole class programming.

Because there is a Certificate of sorts from Coursera for doing the work to a reasonable level, I can give course credit for it: about 30% of course credit for taking these two easy courses.

Using the MOOCs is an amazing teaching solution for many reasons.
First, Charles Severance and team know a bit more internet history than I do, so why not let them do the job?
Second, it's not so easy to cheat/copy in these courses, compared with homework I assign. I mean, it takes almost as much effort to copy as to do the work. And anyhow, they will experience significant pushback against their attempts to plagiarize.  Note, my kids are not bad people, it's just that copying seems to be part of national culture.
Third, I can spend class time doing other things (including taking my own online courses and theirs)
Fourth, they can interact with a global classroom; ask and answer questions, assure themselves that they're learning at a world standard, etc.
It costs a bit to get internet, but hey, if I can afford it, so can they; they can definitely watch in groups to cut the cost.

Besides Coursera, I've also used Khan Academy, with good results. At my present school, most of my engineering students somehow arrive in the third year with poor basic math skills. So I start off each course by assigning a massive precalculus/calculus assignment (functions, trigonometry, complex numbers, derivatives) in Khan.  I would like to assign integral calculus as well, but it seems the problem sets stop at derivatives for now.

One good thing about Khan is that it's very hard to cheat with the randomized questions, so they find they might as well do the work.  I think Coursera might have randomized questions too - not sure - but they should consider that.    Also, the coach/instructor can monitor all their work in the backend of the site and - yippee - assign course credit, since for many students, course credit is the main thing that would cause them to do the work.
Whatever happened to just learning for fun? ? 

It's a busy month, but I'll be back later with more analyses of games, and more on prime numbers.  


  1. Oops. It seemed I assigned a little too much work to my Internet class. They have complained that it is very hard to get reliable internet access; yeah, I understand. They appear to be really happy to be working hard at something fun.

    I noticed that the Digital Music programming course is quite involved, not much less time-consuming than the Python/Game programming course. But one reason I chose music over games for my class was the estimated workload: 2-4hours versus 7-10 hours. I haven't timed exactly, but definitely spent more than 4 hours on week one of ChucK. First you have to watch the videos (nominally 1-2 hours but you have to load more than a few times with the internet quality and on-and-off power around here, really stressful, watching then waiting). Then you play with the demos and make music on the side, do the assignments, and of course make out time for peer grading.

    And my poor kids still have the Internet History course, on which you would spend the estimated 2-4 hours a week. It's easier, more passive, just watch the videos, do the quizzes. :) :) It's really interesting material, can't wait for week four.

    Altogether I think the time for these two courses within my course is 10 hours a week, well over the six hours that a 2-unit course should take. In addition I'd planned little tasks every other week, so will just have to make those tasks very little. Make them group assignments instead of individual. Make them reaaaallly easy and short and sweet.
    On the bright side, the students have one another - they collaborate well :) Also on the bright side, they are not being asked to ace the courses, just to do enough to earn the certificate(s) - about 70%. So if they miss a week or two, they'll still be ok, especially in the Internet History module.

    Meanwhile - don't tell anyone - I'm "this" close to dropping out of the Python class. Week one was fun, but it covered pretty much what a half-semester of programming might for a beginner. So week two is a little different in syntax from what I'm used to, but I was travelling and having fun (haha) and just came to week two in week three. Missed deadlines etc. Excuses.

    1. The weekly video lessons in ChucK got shorter, yaaay!
      I did a sequencer - I think it's called - double yayyy.
      Next time I definitely want to put in more beat, drums, African-sounding stuff.

  2. Week Four was fun. The video problems have got a lot worse - the internet speed is rubbish, especially when it rains, the power supply is worse...anyway, the videos keep failing, they'd stop after a minute or so, and because you're just trying to load video while doing other things you don't notice in time...and then you try to restart the video or continue where it stopped and it just won't go. Tried different browsers, switched flash / luck. Youtube works, so you watch in youtube, which means no in-video quizzes. It's been hell. At least doubles the time needed to watch these videos.

    The worse thing is the programming videos, again because they're not just story-telling bits, you actually want to follow along with the demos and such. And unlike the internet course, they don't have different options - download, watch on youtube, or just give up on video and read the transcripts. And I still think the homework is a bit hectic. Remember I'm having to work at night (overnight) to get any kind of good speed to use the site, or to just get lucky and catch good internet one morning. But with so many hours of video, plus another visit - separate day, likely - for assignments, plus a separate visit days later to do peer-grading, it's really becoming impossible to handle.

    Hey, this is all for fun, right? So I'll hang in there, even though I'm probably failing Python, (definitely passing the internet history one), and well, if I can get organized I may pass the ChucK music one.

    Last week, I took my computer to work. LOL. The so-called internet was horrendous. It wouldn't even send email most of the time. Hahaha. I'm tired.

    1. For the record, the first paragraph in the comment above "Week Four was fun..." referred to the Internet History, Technology, and Security course.
      In a separate comment, see below, I discussed my week four experience in Python.
      I also just did week two of ChucK (digital music programming), which started two weeks after the others.

      It's all not so bad, as long as the internet works. It may not even be 10 hours a week (for internet history and chucK) if you're not going for perfection. I'm learning to skip seconds of video, relax while I watch sometimes, ... all that is possible when the internet works :) Like today :)

  3. Life is good, and Python is fun. After about 24 hours straight without electricity, we're back in business with the internet firing away at 300-900Kbps.
    Main take-away lessons from the Python class so far:
    1. Python may be as easy to use as Mathematica.
    I've often said I liked Maple and Mathematica because of the detailed documentation files such that you basically have to copy and paste single lines to get things done. You don't have to cram syntax, unlike, I don't know, BASIC, C++, or Matlab. Well, it seems the Python class after week one is really a veiled walkthrough of the Docs files. Sweet. It's not so hard to use after all.
    1b. As a bonus, there is nothing to buy, and no messy installations. With their CodeSkulptor app sitting in the cloud, you don't have to download anything to run a Python program. No Linux command line preassembly, no genius or even geek skills required. You can just use their whiteboard and their servers. It's right there at a user's fingertips. I may actually use this thing someday.
    2. I may actually use this thing someday. I once used Perl, another programming language, for bioinformatics. It was considered good at handling strings, like DNA sequences. Of course I don't remember jack about the specifics of Perl, that experience mostly taught me that I could hack anything in any language if it was absolutely necessary. Python so far seems to have at least as much string handling capability. In fact, it would seem I wrote too much code in Perl - either because I was ignorant of the shortcuts, or because such shortcuts weren't there. Anyhow, it seems like one could screw around with DNA sequences in Python reasonably easily. Although I would first want to search for even more purpose-built applications online, you know, stuff where you'd need even less labour to test out what you need.

    I'm still in Python. Just for fun.

    1. This was written while taking Python week three (late, in week four).
      I think I did the quizzes, but I didn't attempt the miniproject.


    Ha, we're learning Python in a fun way, by building games weekly in the mini-projects.
    So far, the key lessons have been
    -- stuff like variables, control structures, print commands, basic syntax
    This is easy if you've done any programming-like activity before
    -- drawing and the things called handlers
    I hadn't used handlers before. Never really programmed using attributes I think they're called, although such is everywhere, like Java I think, with the this.that and this_that everywhere. The simpleGUI canvas is probably the teachers' own innovation for this class. It's nifty, cool, probably my first GUI-programming.
    -- Applications e.g. motion
    If you're an engineer, and you have the first pieces and nice documentation, you can hack this by yourself as the needs arise.

    So, hmm, how would I use this in a course?
    -- For someone who has never programmed before, sure, take the course, watch everything, do all the assignments. It is A VERY GOOD COURSE.
    -- For people who have taken one or two programming courses before, watch and do the quizzes and assignments in the first couple of weeks. Then maybe challenge yourself to programme one or two of the games in the later weeks, using the documentation and some video lessons to help you. But of course, if you are entertained by the video demonstrations, feel free to watch them all. I am getting attached to the geek-god guys from Rice : Rixner and co, lol.
    -- For people who programme a lot, like everyday, in any language, em, maybe there's a specific topic you want to learn, like how to use the event handlers in Python, sure go ahead.

    Now I've taken a few programming courses in different languages, some covering topic by topic, some just throwing problems at you to hack at. I wonder why I'm still not good enough of a programmer to breeze through this course? Like I always think I'm "not a programmer" but "can hack anything." Should it really be that hard to get fluid at programming? Maybe I just need more time :)
    Definitely one issue was the awareness that I didn't know the "modern" programming languages - at one time 15 years ago it was VisualBASIC but I had taken BASIC five years before. One time people talked about Java, JavaScript, C#, but I had only just done C++. Then I had to do a VHDL project from Fortran code. Then I learned to play with Mathematica from, well, the documentation, and the memories of Maple.
    Today I'm aware that I don't know CSS - which might help me get under the hood of my blogs - but do I really need to when the standards keep changing - I remember when it would have been HTML that one wanted to know.

    So my judgement about these things is right: unless you're in the business, just pick up the tools when you have to. I mean, take a first programming course (and the Python on Coursera is a nice, modern, example of such a course) and learn the basic skills, but don't expect the technology to remain the same as the months and years advance.
    You become an expert by spending time gaining experience solving various problems, but if you don't have reason to invest all that time, then hey, why do it? Why not just solve the problem when you get to it?

    I sometimes say that the biggest lesson I learned in 5 years of graduate school was: to ask google. The answers are out there. Similarly, my biggest programming lesson is : get help. H-E-L-P. The answers are in the documentation. Sometimes, the exact line of code is there in the help section of the program. Programming is not about cramming/memorizing commands and syntax, it's about throwing down a one-line command that gets the desired result or in the worst-case building up a machine constructed of several modules or commands. That's all.

    1. This was written in the middle of Python week four.
      Will I do the week's miniproject (a game of pong?) - that's the question. I'm doing the quizzes. I'll check the miniproject deadline to see if I can go for it. It would be only the second (the first was the rock paper scissors miniproject in Week One; because I even missed the deadline for Week Zero's easy miniproject: printing "we want... a shrubbery")

  5. This comment has been removed by the author.

  6. Student (in my internet class) phoned me about some admin matters; at the end I asked "how is Coursera? is it a little tough?" , well you know me, I want to know the truth, right? Student replied something along the lines of they were working on their programming, working on it. I noted, wow, basically not going for tough as the operating word, but something they were working on together. They do love group work :) even if it was assigned as individual work.
    Then I said "Is it a bit fun?" , ahaa!
    Student answers "yes" adding how how when they listen to the music produced by others in the class (worldwide, yeah?) , it motivates them to try and learn the arrays and such (programming concepts).

    This happened just now. I can die happy.

  7. Just submitted assignment four in chucK (digital music)
    It feels great.
    You know how I wanted to beat beat beat a bit more this week? Yeah, totally made something with lots of drumming, learned a lot too, got stuck a lot, like had to abandon some of my designs for things that I could actually make work, ... in other words I can see how the students must enjoy this too, but they probably don't have the time to labour over the assignments for so long. I must have spent six hours on this assignment. Hope it doesn't get harder :)
    Hey, I should sell an album, all my ChucKy sounds. LOL. We're doing it.

    On the Python class, it's safe to say I've abandoned it for now. I'll visit for a few minutes now (till my laptop battery dies) , but maybe not going back after...give myself a Igoni Barrett's short stories, sleep off whatever's been bugging my nose/throat/strength since last week (probably side effects of the medicine I took, getting very dehydrated) . Should I go to church? Ooops, it's 12 o'clock now. Next week, I guess. I want to check out the third MAJORLY HUGE church in my neighbourhood.

    The DrChuck internet history course is nice and easy and cool. No major comments there. I did the 2nd essay, should look out to see how it was graded and any feedback. Noticed later that there were typos, oh well. I enjoyed peer-grading those essays actually. One of the quizzes (maybe last week's) was tough-ish, so I repeated it a few times till I got a 10 - yipppeee! In all, good fun stuff in that course. Thanks Dr. ChucK.

  8. December 7th update:
    Did the final exam for IHTS. Will miss the course. It was a good choice for my class.
    Less than two weeks left in Digital Music programming. Also a very good choice for my class. In future though, one, not both would make for a fairer courseload.
    Dropped out of Python Game programming early on. May try again later (or not.) The class was very high quality, so I highly recommend. But the number of hours spent per week will easily exceed 10, so it may be suitable for a 4-credit course or even five.

    Registered for new courses.
    Just started Constitutional Struggles in the Muslim World.
    I will likely take Functional Analysis in early 2014 - a great opportunity to attempt advanced maths again.
    and so on.
    And I may take a course with edX too - another MOOC company.

    1. Also likely to take:
      -Critical Thinking in Global Challenges (at least for a few weeks, well it's only five weeks long - that's promising!) by Coursera/Edinburgh
      *Was Alexander Great? (on edX: Louvain)
      -International Human Rights (on edX: Wellesley)
      -and maybe a look at Linear Algebra Foundations to Frontiers (on edX: UT)
      in addition to
      *Constitutional Struggles in the Muslim World (Coursera/Copenhagen)
      *Functional Analysis (Coursera / ECParis)
      all in the first three months of 2014.
      * means serious, - means cursory participation, likely.

      Meanwhile, just submitted my final project in ChucK Music programming , and final exam in Internet History Tech and Sec. NICE.

  9. My latest Course Within A Course experiments:
    For 'Introduction to ICT' this semester, students completed Web Application Architectures (Univ. of New Mexico/Coursera, taught by Greg Heileman) and Text Retrieval and Search Engines (Univ. of Illinois Urbana-Champaign/Coursera, taught by ChengXiang Zhai). The first is wonderful because we learned and used Ruby on Rails (yippee, finally) as well as lots of vocab and ideas around modern web applications and software development. The second is also pretty cool because it painstakingly constructed the steps involved in making search happen, what ideas/algorithms might one design or did engineers design. I think it helps instill that analytical thinking and can-do (must-do) orientation that we want in our engineers. We build infrastructure, the web, search engines, are infrastructure. I hope they got the message.

    In 2014, we did
    MusicTech in the course Signals and Systems (EEE309),
    Easy intro Python Programming + Internet History (IHTS, repeat) in Internet and Web Application Technology,
    a tiny selection of topics from Networks (Princeton) in Introduction to ICT (CEN 302)

    At this point, the idea is established that you can (and probably should) use a Coursera module in your teaching. Personally, I'm planning to leave academia/university teaching for a few years, so y'all remember what we've learned here, ok? :D

    My teaching pages (course outlines)
    More course-within-a-course blog posts

  10. Looking for the Best Dating Website? Join and find your perfect match.

  11. COBIT 5 online training delivery is a specialty of Consultants Factory. We’re among the best to offer it. We’ve trained 5000+ candidates across India, UAE & Saudi Arabia.
    COBIT 5 online training

  12. please see
    Consultants Factory provides high quality SIAM Certification trainings online. Our trainers are accredited to deliver SIAM courses
    service integration and management

    service integration and management siam management SIAM Certification program service management courses service integration and management courses


Blog Archive

My Other Blogs

About Me