MSU will be piloting an online section of CSE 231: Introduction to Programming. I have been looking into ways that the class could be delivered, since it will have no physical classroom component. The major problems I see are outlined below, as are the solutions I have been finding for each issue.
Traditionally, CSE 231 meets twice a week for an hour each time. These lectures consist of some 200 students and one MSU professor.
Now, what are some of the options for an alternative to classroom lecture?
MIT’s Open Courseware initiative delivers online courses to students anywhere for free. Compared to Lynda tutorials, which deliver professionally developed lectures and screencasts at a semesterly cost, MIT Open Courseware publishes real MIT lectures for anyone to view at any time. I find this free-knowledge distribution approach to be incredibly refreshing, and in line with the open source software development ideas which MSU promotes by its use of Python.
Further, MIT Open Courseware releases all lectures on iTunes U, an interface which allows educators to distribute their coursework easily over all Apple products.
I think the best way to approach looking into how these lectures are being distributed is just to view an example: MIT’s Introduction to Computer Science and Programming. Specifically, the first lesson is here – see “Lecture 1: Introduction to 6.00” for the first video lecture. And, here are the podcast versions of the lectures, which you can download for free in iTunes and watch later.
Interesting side notes here are that the lecture is not strictly a video. The course website for each lecture also includes lecture slides, any accompanying code, several “check yourself” questions (with appropriate answers), problems sets, and a section dedicated to links to further study.
In my opinion, every class, online or classroom-based, should have a website like this. We are in the information age, and the benefit of having these materials so readily available online to students is clear.
What questions does this raise for MSU’s course? Well, this website is (probably) a template hosted by MIT. As far as I can tell, it is not a template provided to the school and hosted elsewhere. That means that we at MSU need to make our own template. Currently, courses have websites designed by professors (if they so choose). For example, here is the course website for our classroom-based CSE 231 currently.
One of the most effective features of MIT’s open courseware, I believe, is the chronological layout. Similar to a blog in timeline presentation, the course is presented one module at a time, with “previous” and “next” buttons leading to other lessons. Unlike our current website set-up at MSU, this layout makes the progression through the course very linear and clear for any student.
My remaining question in: is there a resource online that already provides this template for educators, so that MSU won’t have to develop its own template? We are going to take a look at Edublogs later in this post, and I think that they may be modifiable to suit our purposes.
Another problem faced by online courses is the question of how to promote student and class discussions without a physical classroom. Questions here are – Is it necessary to have everyone in the same virtual space at the same time? What are communication modes that students could use that are most likely available to all students?
Building off of the MIT Open Courseware model, let’s first take a look at Open Study. Open Study is a sort of online forum where students can post their questions and other students (or professors) can answer. An example of a student struggling with code can be seen here below:
Open Study seems to work well for the open online course, but I don’t know if it identifies between student and professor users. Further, it doesn’t appear to have any sort of moderation.
In my opinion, Piazza might be a better approach. Piazza is the forum-based online discussion helproom that we currently use at MSU for many CSE classes. Students can post questions, but there are strict rules about not posting your code in its entirety, which is enforced by the presence of “instructor” users. Students can answer each other’s questions, and then instructors can endorse student answers that are correct, as well as post their own instructor response. Piazza also allows for private posts between students and instructors, where students are allowed to post their code directly.
As long as a school can provide the manpower to moderate a Piazza course forum, I find it to be a *very* effective resource for teaching. Most interestingly, Piazza allows instructors to see all the activity of course members. You can see who has been online, how many times, how many questions they have posted, and how many questions they have answered. This feature makes a possible “participation” grade a real option for the course.
Where do students submit (or publish?) their work? Is it a good idea to publicly release solutions to problems?
In courses at MSU, it is common to use Angel and Handin as ways for students to submit assignments. Handin is a simple interface that restricts the time that students can submit their projects/homework, and then places all the student project files in a place where instructors (usually TA’s) can access them for grading. Angel allows professors to create a dropbox for assignments, but also allows for professors to post extensive descriptions of the task students must face. Unfortunately, Angel is extremely glitchy, and I would not recommend its use. Below is a screenshot of a course I am enrolled in which uses Angel as a pre-discussion location for every classroom lecture:
Alternatives that I have seen – which offer almost the exact same features for posting assignments and allowed students to submit work – are Blackboard and Moodle. In my opinion, Moodle’s interface is not as visually pleasing (or easy to follow) as Angel, but it is not nearly as likely to stop working randomly. Blackboard is probably the most clear and reliable of the resources of this type that I have reviewed, but I think it costs money (to the university) to use.
Note that all of these interfaces (except Handin) provide a place for professors to post student grades, and where students can view their results.
An entirely different approach to tracking student work is to have students create some sort of portfolio. Throughout the semester, the students would create a compilation of their work, thoughts, and opinions on each course topic. One approach is the RosE Portfolio, which allows students to develop a formal online representation of their work throughout the semester.
Perhaps more useful, however, is the Edublog site, which allows professors to host a blog for a course. Then, students can spawn sub-blogs of their own, where they post their own ideas and responses to course material. In my opinion, a successful model would require students to post at least three times a week to their own blog, with concrete ideas of their own linked to course material. Perhaps they could post code on these sites, but I think it would be best to limit code posting until after the date a project is due (so that students aren’t copying code). For ideas on how to encourage student blogging, read The Edublogger.
Finally, how do we grade students? Some of this is covered in the student work section – ie, exams could be issued via Blackboard (and I have taken this type of exam in the past). Problems faced here are: How do we discourage cheating? How do we account for glitchy systems (like, if a student is taking an exam and loses their internet connection mid-exam, are the results persistant)? I don’t have any good answers for the assessment problem here, except possibly the idea of take-home exams graded by TA’s via Handin.
This section specifically is something I plan to discuss with Professor Mark Urban-Lurain here at MSU some time during this week, as he is currently working on research related to automated evaluation of student short-answer problems.