Showing posts with label computer science education. Show all posts
Showing posts with label computer science education. Show all posts

Monday, March 26, 2012

Think Complexity by Allen B. Downey


Yesterday I picked up a physical copy of Allen Downey's new Python book Think Complexity.  Allen does a great job on both fronts in this book, presenting key topics in Complexity Science and also clear Python code.  

Last year some students and I worked on a Genetic Algorithms case study that was inspired by Melanie Mitchell's book Complexity.  Our work on the case study was NOT for any course and NOT for pay or credit in any way.  It was "just for fun", and we learned a lot together.  But... since Allen is looking for Case Study submissions, we just may be resurrecting the Python code we wrote and submitting a new chapter for the next edition of this great little book.

Monday, January 30, 2012

Silicon Valley's Secret in the Modern Classroom

Just read this great article, and now I'm simply making a note of this as something to consider for implementation in the classroom.

Might work for some of my CS classes.

Friday, June 24, 2011

The HTML5 Canvas in Education




















I've been playing around with the HTML5 canvas element lately. In fact, I even got a whole book on the canvas element and it has been fun to see how similar this element is to the Processing language. It was nice to be able to wrap up Processing sketches into applets and post them for the world to see.

Applets, though, are sooooo 1990s. Sure, I've played around with processing.js and it works pretty well. Still, it removes you one more step from the real thing. Now I'm not saying I'd like to go back to programming assembly, but sometimes it's hard to find the core language that you're using when it's wrapped in so many levels of libraries, conversions, etc.

Reminds me of  a past staff meeting that failed miserably because teachers were expected to access a shared Google document for collaboration's sake. Oh boy, what a mistake. Teachers make horrible students, for the most part.

Anyway, the Google docs collaboration activity failed when many of the teachers present were asked to visit a specific Google docs url.  About half the class was lost there, for various reasons.  Some made typos in the url.  Many simply used the default Internet Explorer, which has never been known to play nicely with internet standards.

I helped as many as I could, as did a few other tech-savy teachers.  During the chaos, one of the other helping teachers had a little laugh with me.  Apparently a teacher she was helping had not only used IE, but had done so via connecting to her Citrix thin client because that was the only way she ever used her laptop.  We had fun trying to describe just how strange that was--what a convoluted process to simply visit a web address.  The first thing that popped into my mind was:


That's like kissing a robot that then goes over and kisses your lover, rather than you doing the kissing yourself!


Made sense to me at the time.

So anyway, you can see the result in the image, but why not see the real thing: Link to the HTML5 File. Please, use Chrome or Firefox or Safari or Opera to view this--and not through some kissing robot proxy!

Thursday, April 28, 2011

Homebrew to the rescue--part two



Been having a terrible time lately with Text Wrangler in my Python class.  For some reason, Text Wrangler is causing a ton of problems handling whitespace correctly.  Of course we already Googled the heck out of the issue, set the expand tabs, etc....  The problem, however, is that TW is simply not that great if you've ever used Geany.

So now I at least have Geany on my MacBook.  Testing it for the lab.

Hard to blame students for being frustrated with a ton of "unexpected indent" errors.

Saturday, March 19, 2011

A-mazing we will go.


Have been goofing around a lot lately with recursion, cellular automata, and Pygame.  Working with students to develop a floor-plan generator for dungeons and mazes has led to some fun programs.  The image above is from a Python program that creates a depth-first search maze, and then attempts to solve it using a slightly different algorithm.  The beginning square is the far upper left, and the ending is the far lower right.  White corridors have never been visited.  The pink ones were visited but led to dead ends.  The green path, however, is the correct solution.

Currently working on a version that goes beyond mazes to dungeon-like floor plans.  The program will print out the data to a text file to be used by other programs and other languages.

Monday, December 6, 2010

New For Skyline Next Semester: Screencasts!



In the past I underestimated how important the multi-media aspects of a computer are to teaching computer science.  Whereas in the past it seemed like the instruction in my lab was happening in human space, all the programming was done on the screen.  Those lines are starting to blur, though, as more and more instruction can be done via the computers themselves. 

In the past Linux was easily my preferred programming environment--still is.  However, I'm a teacher, and I need to do more than just write code.  I never imagined the Mac lab to be so far ahead of anything else I've ever used when it comes to making my teaching more effective. 

This coming Spring students and I will be making screencasts for future students (and for present students that need a review)--ranging from the basics of programming (how to use the unix terminal, text editors, etc), to other particular skills.  I can think of no more efficient way to capture knowledge than to just record examples in realtime. 

Friday, August 20, 2010

The Simple Hello Instructor Assignment

I teach a full schedule of computer science courses, and one section of Geometry that utilizes Geogebra.  The very first assignment I give is exceedingly simple, but tells me more about a student than nearly any other type of icebreaker on the first day: I have them send me an email with a particular subject field (like, for example, "B5 hello"), and have them introduce themselves.

Working at a school progressive enough to use Google Apps Education is a dream come true.  I receive those emails and can do a subject search for the particular subject ("B5 hello").  I see how many students sent an email with that exact subject heading.  Then, I look around for the rest, that usually have slight differences like "B5hello," or "B5 Hello."  I give them credit, but we do discuss how syntax errors occur in text editors when you use "Print()" instead of "print()", for example.

Then I deal with the students that didn't send an email.  Many times there are English Language Learners, and getting a quick handle on their level of English development is pretty important. 

Of course you also quickly find out which students have not had their accounts set up for them yet, and so on....

Wednesday, April 14, 2010

Meng the Finisher!


Sometimes it pays to just let things go for awhile. 

Last week I showed my students a program I was working on in Processing: a simple RGB color tool that allowed you to alter the Red, Green, and Blue values to choose that perfect shade of ... well, for me it's usually purple.

Anyway, I had the prototype user interface and showed it to my students.  It was all there--except the sliders didn't work.  So basically I had painted a pretty, but non-functional, picture.  I told my students that I would get to the sliders soon and post the whole thing--source code included, of course--on our Processing Playground page.  Unfortunately I've had to spend a lot of time lately catching up on four plus pages of emails (most of them completely irrelevant--despite being marked as "high importance!"), so I haven't had much time to write any code.  When I have written code, it usually amounts to simple demos or other small snippets of code to aid some of my students with their Spring 2010 projects.

So I was pretty happy today when Meng showed me his completed RGB slider application.  How nice to see an idea reach fruition via the self-determination and "just for fun" motivation of one of the few students in the US that will graduate high school knowing how to write some serious code.

Step by step.  Paso a paso....

Saturday, February 20, 2010

The Short Answer

 
 When people ask me what the goals of a high school computer science department are, I have a supply of various answers that range from vague and obscure to complex and convoluted.  It's much easier to just distract them by walking them through a typical class and asking them to talk to the students one on one.  To learn computer science is to experience computer science, and explaining that to an outsider can be a challenge.

Ever notice how computer science has been applied to nearly every aspect of human life?  Even domains that are the most blatantly "human" in nature, like linguistics, have proven to be fertile ground for computer science.  Computers, ironically, seem to be crucial in our quest to fully understand what it means to be human.

Today I spent some time developing a simple pong application using Processing.  With each new version of the program, I decided to heavily comment my code and hopefully make it clear to my students why certain choices were made.  Basically it goes from a simple paddle and ball to a game with obstacles, a scoring system, and an evolving complexity that is typical for even the simplest programming projects.  

Little things like using variables rather than hard coding coordinates throughout the code are covered, but so is the much larger picture that can only be clarified by the application of Object Oriented Programming principles.  It didn't take long, really, and my simple little pong application was seriously crying out for better design.  

Having students learn that while actually programming their own creations is reason for celebration.  I have seen it many times since moving over to computer science from teaching math full time.  I spend a lot of time developing curriculum, but fully realize that those moments are simply not the result of a particular curriculum.  Rather, they result only after a lot of time is spent nurturing the student through the cold and impersonal early days, when syntax errors and debugging can really take their toll on a student.   I think I draw on my years of teaching middle school most when I am helping beginners learn programming.  You simply can not be the "expert at the front of the room," or you will lose them forever.  You have to deal every day with the fact that your actions will prevent the inevitable from happening: a small proportion of your class (often boys) will soon be seen as "having it", while all the rest will be forever defeated at the thought of exposing themselves to the humility of writing code from scratch.
How do I do this?  I visit with my students every day.  I try to find those that are the least likely to approach me, and I sit down next to them and talk to them while they program.  I look to pair up students as much as possible for support.  In short, I throw a lot of the old wisdom of teaching out the window, and focus much more on human feelings than on programming skills.  If students taste some early success on programs of their own choosing, the stage is set for the learning of computer science principles that will form a foundation for exponential growth that can be witnessed in few other domains of education.  It's hard to explain that to someone outside of the computer science education, but the same way a simple application like, say, pong can develop from a ball and a paddle to a major time-sucking, addictive game--well, you soon realize that same exponential growth in your students, as they threaten to leave you behind as they become more and more fluent in their command of a computer and computer languages.

So, that, blog reader, is the goal of our computer science department.  In time we will develop official standards that basically say the same thing, but for now, this will have to serve as the short answer to the question.

Saturday, February 13, 2010

Processing

 

Every once in a while you discover something that you can hardly believe exists.  For me, that would be Processing.  Spawned at M.I.T., Processing offers users a powerful way to create visual and sonic digital art.  The fact that this is a free and open source project makes it an easy choice for supplementing a high school computer science curriculum.  Visit the exhibition pages and you can easily see why my students and I are pretty excited about Processing.

Our school has always had a top notch visual and performing arts program.  We also have a very diverse student population.  In our district, we easily have the most minority students, English Language Learners (ELL), and students that qualify for free and/or reduced lunch.  We have our challenges, certainly, but we also have one of the best kept secrets in our district: our school truly values the individual student and encourages students to think for themselves.  
I've read the data on the miserable state of women in computer science.  I think of that every day.  I get praised for having a relatively large number of female students.  I have also reached out to our Special Education department to encourage their students to take my classes.  Being certified in ELL instruction, I am pretty much assured that all of our ELL students will take my classes.  If you are serious about tacking the access and gender issues in computer science, you fight the battle daily.

Processing will help me fight the battle.  I think of Joanna, in my intermediate programming class.  She works her butt off learning Python, and still deals with syntax errors and bugs that have an annoying way of appearing just before she makes a breakthrough in her programming skills.  When she does complete a program, her work paints the screen with a style and grace that is all her own.  Still, I wonder if she would ever choose to do this "for fun."

So this weekend I am changing horses in midstream and developing some starter units using Processing.  We will have to run it off flash drives for a while, as it is not installed in our lab, but I know it will be worth it.  

I got a surprising email this week from a former student that I had lost track of.  She wanted to tell me that she is now attending Carnegie Mellon University on a scholarship and has every intention to pursue a career in computer science.  She wanted to thank me for teaching her how to program in a little computer club I used to run back when she was in the sixth grade.  Suddenly all the stress and frustrations of teaching seemed insignificant.  What more could I ever hope for than to have one of my students serving as a role model for women in computer science?  I could die now and not be unhappy in my handful of accomplishments.  :-)