Announcement: How to Think Like a Computer Scientist -- Interactive Edition
Hello, As part of my Sabbatical this past year I've been working on a new edition of How to Think Like a Computer Scientist (by Elkner et. al) with my colleague David Ranum. The idea behind this new edition is to make it interactive, to encourage students to learn by doing and to explore. The three main features we've added to previous editions are: Videos: Each section has (or will have) a 5-10 minute screencast explaining the written concepts verbally. Interactive Python interpreter. Using Skulpt -- an open source javascript implementation of Python. Codelens code visualizer -- Based on the Online Python Tutor by Philip Guo this element allows students to step forward and backward through the code and to see the values of variables To make it easy to add these features I wrote 3 new sphinx directives, so adding the interactive code features is not onerous. When we finish our last pass through the book, we'll make all the code available on bitbucket. We'll be using this book in our introductory course this fall at Luther, and adding more videos as we move through the semester. You can take a look at our work here: http://thinkcspy.appspot.com You'll need a gmail account to access the book. You'll also need a modern browser that supports html5, the interactive features rely heavily on Javascript and the canvas element. (Safari, Firefox 6, Chrome) The reason is that the interactive code allows you to save your changes and reload them again later. I've added an administrative back-end to the book so that we can have students do homework right in the browser. I'd love to hear your feedback and ideas for other interactive features. Brad -- Brad Miller Associate Professor, Computer Science Luther College
Looks good. Nice work. How about exercises in a similar style to codingbat.com? That would be really valuable I think. Cheers, Carl. On 27 August 2011 02:23, Brad Miller <millbr02@luther.edu> wrote:
Hello,
As part of my Sabbatical this past year I've been working on a new edition of How to Think Like a Computer Scientist (by Elkner et. al) with my colleague David Ranum. The idea behind this new edition is to make it interactive, to encourage students to learn by doing and to explore. The three main features we've added to previous editions are:
- Videos: Each section has (or will have) a 5-10 minute screencast explaining the written concepts verbally. - Interactive Python interpreter. Using Skulpt -- an open source javascript implementation of Python. - Codelens code visualizer -- Based on the Online Python Tutor by Philip Guo this element allows students to step forward and backward through the code and to see the values of variables
To make it easy to add these features I wrote 3 new sphinx directives, so adding the interactive code features is not onerous. When we finish our last pass through the book, we'll make all the code available on bitbucket.
We'll be using this book in our introductory course this fall at Luther, and adding more videos as we move through the semester.
You can take a look at our work here: http://thinkcspy.appspot.com
You'll need a gmail account to access the book. You'll also need a modern browser that supports html5, the interactive features rely heavily on Javascript and the canvas element. (Safari, Firefox 6, Chrome) The reason is that the interactive code allows you to save your changes and reload them again later. I've added an administrative back-end to the book so that we can have students do homework right in the browser. I'd love to hear your feedback and ideas for other interactive features.
Brad
-- Brad Miller Associate Professor, Computer Science Luther College
_______________________________________________ Edu-sig mailing list Edu-sig@python.org http://mail.python.org/mailman/listinfo/edu-sig
On Fri, Aug 26, 2011 at 7:07 PM, Carl Cerecke <carl@free.org.nz> wrote:
Looks good. Nice work.
+1 Blogged a link: http://worldgame.blogspot.com/2011/08/how-to-think-like-computer-scientist.h... Great contribution to computer lit. Kirby
Hello, As part of my Sabbatical this past year I've been working on a new edition of How to Think Like a Computer Scientist (by Elkner et. al) with my colleague David Ranum. The idea behind this new edition is to make it interactive, to encourage students to learn by doing and to explore. The three main features we've added to previous editions are:
Hi Carl, I am a master's student, and for my project I am building an interactive Python tutor system, hopefully with 150-250 problems, as well as embedded video. Some of my inspirations have been the Khan Academy and codingbat. I'm beta testing the tutor in a course I teach over MIT's IAP period (January term) and I hope to be releasing it as a free product through MIT's Open CourseWare by next summer. Currently the problems are for Python 2.7.x, as that's what we use in the EECS department here. If it seems like more people are transitioning to Python 3, I can potentially release a second version of the tutor that uses a Python 3 interpreter. Regards, Sarina On Fri, Aug 26, 2011 at 10:07 PM, Carl Cerecke <carl@free.org.nz> wrote:
Looks good. Nice work.
How about exercises in a similar style to codingbat.com? That would be really valuable I think.
Cheers, Carl.
On 27 August 2011 02:23, Brad Miller <millbr02@luther.edu> wrote:
Hello,
As part of my Sabbatical this past year I've been working on a new edition of How to Think Like a Computer Scientist (by Elkner et. al) with my colleague David Ranum. The idea behind this new edition is to make it interactive, to encourage students to learn by doing and to explore. The three main features we've added to previous editions are:
- Videos: Each section has (or will have) a 5-10 minute screencast explaining the written concepts verbally. - Interactive Python interpreter. Using Skulpt -- an open source javascript implementation of Python. - Codelens code visualizer -- Based on the Online Python Tutor by Philip Guo this element allows students to step forward and backward through the code and to see the values of variables
To make it easy to add these features I wrote 3 new sphinx directives, so adding the interactive code features is not onerous. When we finish our last pass through the book, we'll make all the code available on bitbucket.
We'll be using this book in our introductory course this fall at Luther, and adding more videos as we move through the semester.
You can take a look at our work here: http://thinkcspy.appspot.com
You'll need a gmail account to access the book. You'll also need a modern browser that supports html5, the interactive features rely heavily on Javascript and the canvas element. (Safari, Firefox 6, Chrome) The reason is that the interactive code allows you to save your changes and reload them again later. I've added an administrative back-end to the book so that we can have students do homework right in the browser. I'd love to hear your feedback and ideas for other interactive features.
Brad
-- Brad Miller Associate Professor, Computer Science Luther College
_______________________________________________ Edu-sig mailing list Edu-sig@python.org http://mail.python.org/mailman/listinfo/edu-sig
_______________________________________________ Edu-sig mailing list Edu-sig@python.org http://mail.python.org/mailman/listinfo/edu-sig
-- Sarina Canelake MIT EECS
On Sat, Aug 27, 2011 at 8:31 AM, Sarina Canelake <sarina@mit.edu> wrote:
Hi Carl,
I am a master's student, and for my project I am building an interactive Python tutor system, hopefully with 150-250 problems, as well as embedded video. Some of my inspirations have been the Khan Academy and codingbat.
Heads up re talk at OSCON this year by Scott Gray (full disclosure: I work for the guy) ranting against several categories of interactive courseware, but namely "watch a video then play the match game with canned quiz show type questions". There's no "making with tools", no "apprenticeship". Anyway, just saying there's a spectrum. This isn't about passing judgment on any particular system, either. Our Python Track has lots of "no brainer" quiz questions for student reinforcement. It's not like this doesn't feel like a school (though more asynchronous and with less emphasis on externally imposed deadlines). The projects tend to be Python modules, or pairs, with one unit testing the other. Teachers provide feedback. Any time you see complete automation on the back end, I say you have a competitive edge if you add a human touch. Our testing instruments are all hand graded, and projects come with real advisers, albeit not in real time (it's an asynchronous UI). Kirby
Hi Kirby, Thanks for the feedback. I've enjoyed reading your posts on the list, and the specific concerns you address are well worth considering. If you don't mind, I'd like to give some background on my project. The tutor system is being developed for use in conjunction with - not as a substitute for - a few MIT courses. I am a TA for 6.00 (ref: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-00-...) which is Python geared for non-EECS majors; I'm testing the system with 6.189, a course I've developed for January term (ref: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-189...). 6.01, "Introduction to EECS", is already utilizing a beta version of the tutor. I think the tutor will work best in conjunction with a class, primarily for students who feel left behind by the instruction. I became a CS major late in the game - my junior year of college - and I struggled with the coursework, as I felt there weren't enough practice problems at the introductory level. The given homework problems often tested advanced understanding of the material, while I struggled to understand the basics. Like I said, this is being developed for internal MIT use, but I believe that if I spend effort developing this that it should be released openly. Yes, the tutor we have developed is entirely automated. I have spent the summer primarily working on the problems, but as the fall progresses and we work towards developing a partnership with OCW, I hope it will be possible to make the system adaptable for educator use. Perhaps we will be able to enable administrative accounts, or allow educators to mirror the system fully so they can add problems (including non-auto graded ones, which would enable input of open-ended essay or coding questions) as they please, as well as view their students' solutions. I don't know the technical limitations of OCW as of yet, so I can't say what we'll do. At the very least, I hope to provide practice problems to my students who feel left behind, who often email me desperately asking me for places they can go for simple problems to practice their Python before exams. One thing I hope to do with videos is to provide ones that, after a solution is submitted for a problem, walks through a few different ways of approaching it. I notice that my students often lack a good way of approaching a problem, but when we work through it a second time, they have an easier time grasping what they *ought *to have looked for and anticipated. I notice students who are willing to spend the time to reconsider their work on an earlier problem often become better, more analytical programmers. Finally, I fully recognize that everyone learns differently. I have minor dyslexia and thus have a tough time self-teaching from books. If the system I develop helps even a handful of kids, I'll be pretty happy to have made a difference. Thanks again, Sarina On Sun, Aug 28, 2011 at 1:23 AM, Kirby Urner <kurner@oreillyschool.com>wrote:
On Sat, Aug 27, 2011 at 8:31 AM, Sarina Canelake <sarina@mit.edu> wrote:
Hi Carl,
I am a master's student, and for my project I am building an interactive Python tutor system, hopefully with 150-250 problems, as well as embedded video. Some of my inspirations have been the Khan Academy and codingbat.
Heads up re talk at OSCON this year by Scott Gray (full disclosure: I work for the guy) ranting against several categories of interactive courseware, but namely "watch a video then play the match game with canned quiz show type questions". There's no "making with tools", no "apprenticeship". Anyway, just saying there's a spectrum.
This isn't about passing judgment on any particular system, either. Our Python Track has lots of "no brainer" quiz questions for student reinforcement. It's not like this doesn't feel like a school (though more asynchronous and with less emphasis on externally imposed deadlines). The projects tend to be Python modules, or pairs, with one unit testing the other. Teachers provide feedback.
Any time you see complete automation on the back end, I say you have a competitive edge if you add a human touch. Our testing instruments are all hand graded, and projects come with real advisers, albeit not in real time (it's an asynchronous UI).
Kirby
_______________________________________________ Edu-sig mailing list Edu-sig@python.org http://mail.python.org/mailman/listinfo/edu-sig
-- Sarina Canelake MIT EECS
On Sat, Aug 27, 2011 at 11:20 PM, Sarina Canelake <sarina@mit.edu> wrote:
Hi Kirby, Thanks for the feedback. I've enjoyed reading your posts on the list, and the specific concerns you address are well worth considering. If you don't mind, I'd like to give some background on my project.
I'm glad you found your way to this list Sarina as it's definitely an apropos place to archive details about your project, the thinking behind it and so forth. Python got a big boost when MIT started to become more Python-centric in its courseware, some of which is free and open source. Speaking for myself (not any of my co-workers) I have no objections to automated grading / scoring as an option. The Python interpreter is itself automatic and a great source of impersonal (non-judgmental) feedback. Some students respond better in anonymous automatic situations as they do not feel judged by another human who might know them (an invasion of privacy). The thing Scott wants to combat is too much passivity in the culture. It's a generic problem with a lot of schooling, when it becomes an extension of spectator sports, with the learner the passive spectator. No one technology or learning experience can be singled out. Even television may inspire lots of activity -- especially if you make it, don't just watch it. That sense of "hard fun" where you struggle with a program, and don't just have to fill in the blanks or do multiple choice, has to be developed somewhere. Automated feedback services have their role. The mathematics curriculum I write about and implement / field test where feasible (quite a few opportunities) has people actually biking around town hauling vegetables in trailers. Down the road, our work will involve the placement of sensors, environmental monitors, here there and everywhere, again using bikes sometimes (sometimes going on foot, sometimes kayaks or canoes). MIT has been an inspiration for some of this thinking. This web site for example: http://web.mit.edu/newsoffice/2010/landman-report.html Also the movie 'Gasland'. Kirby
Carl, I just added another sphinx extension that takes a step in the direction you are talking about. I created an exercise extension. At a minimum it creates an editor with controls to run, save and load. You can see these in place for chapters 1-3 now. Optionally you can provide the student with some scaffolding code. For example in a temperature conversion problem The exercise might open up with the following code already in place. def c2f(degC): # your code here assert c2f(0) == 32 assert c2f(100) == 212 You could also make use of the simple test function provided in the original book as well rather than rely on assert. It doesn't have the nice graphics of codebat for giving you feedback, but that could all be added down the road. Brad -- Brad Miller Associate Professor, Computer Science Luther College On Friday, August 26, 2011 at 9:07 PM, Carl Cerecke wrote:
Looks good. Nice work.
How about exercises in a similar style to codingbat.com (http://codingbat.com)? That would be really valuable I think.
Cheers, Carl.
On 27 August 2011 02:23, Brad Miller <millbr02@luther.edu (mailto:millbr02@luther.edu)> wrote:
Hello,
As part of my Sabbatical this past year I've been working on a new edition of How to Think Like a Computer Scientist (by Elkner et. al) with my colleague David Ranum. The idea behind this new edition is to make it interactive, to encourage students to learn by doing and to explore. The three main features we've added to previous editions are: Videos: Each section has (or will have) a 5-10 minute screencast explaining the written concepts verbally. Interactive Python interpreter. Using Skulpt -- an open source javascript implementation of Python. Codelens code visualizer -- Based on the Online Python Tutor by Philip Guo this element allows students to step forward and backward through the code and to see the values of variables
To make it easy to add these features I wrote 3 new sphinx directives, so adding the interactive code features is not onerous. When we finish our last pass through the book, we'll make all the code available on bitbucket.
We'll be using this book in our introductory course this fall at Luther, and adding more videos as we move through the semester.
You can take a look at our work here: http://thinkcspy.appspot.com
You'll need a gmail account to access the book. You'll also need a modern browser that supports html5, the interactive features rely heavily on Javascript and the canvas element. (Safari, Firefox 6, Chrome) The reason is that the interactive code allows you to save your changes and reload them again later. I've added an administrative back-end to the book so that we can have students do homework right in the browser. I'd love to hear your feedback and ideas for other interactive features.
Brad
-- Brad Miller Associate Professor, Computer Science Luther College
_______________________________________________ Edu-sig mailing list Edu-sig@python.org (mailto:Edu-sig@python.org) http://mail.python.org/mailman/listinfo/edu-sig
participants (5)
-
Brad Miller
-
Carl Cerecke
-
kirby urner
-
Kirby Urner
-
Sarina Canelake