Additional profile information on Alfred Thompson at Google+
If you are involved in K-12 computer science education you really owe it to yourself to join the Computer Science Teachers Association (CSTA) And if you are a member of CSTA than you received this announcement in the last week or so. But just in case you are not a CSTA member (yet right?) I thought I should post this CSTA Blast for your information.
ACM's SIGCSE (Special Interest Group for Computer Science Education) has a small grants program (up to $5000) for member projects in CS education, and that this is a good time to think about it. Almost any material development, study, or other work likely to be of interest to the SIGCSE community is eligible for consideration. You can see examples of past projects, as well as details of the proposal process, at http://www.sigcse.org/programs/special/ The next round of proposal reviews is slated for mid-August, so if you have something in mind this is the time to start fleshing out a proposal (on your way home from ITiCSE, but before you start writing your Symposium papers :-). Submit proposals via email to email@example.com; anything received by August 15 will be reviewed in the mid-August round.
ACM's SIGCSE (Special Interest Group for Computer Science Education) has a small grants program (up to $5000) for member projects in CS education, and that this is a good time to think about it.
Almost any material development, study, or other work likely to be of interest to the SIGCSE community is eligible for consideration.
You can see examples of past projects, as well as details of the proposal process, at http://www.sigcse.org/programs/special/
The next round of proposal reviews is slated for mid-August, so if you have something in mind this is the time to start fleshing out a proposal (on your way home from ITiCSE, but before you start writing your Symposium papers :-). Submit proposals via email to firstname.lastname@example.org; anything received by August 15 will be reviewed in the mid-August round.
My good friend Sam Stokes posted an introduction to Encapsulation not long ago. Not that I am competitive mind you but I thought I could do better. And since I had some vacation time in which to think and write I have given it a try. I’ll let you judge if I succeed or not.
So what is Encapsulation? Encapsulation is an important part of object oriented programming. It is part of what makes OOP “safer” and more easy to use. Briefly stated Encapsulation is the hiding of implementation details of a class. Specifically you include the data storage as private data and create methods that interact with that data. The implementation of these methods is not visible to the programmer who uses the class. Nor is the internal representation of the data. Everything is in this software capsule – this “black box” that just works. One fun example is a die class (Die being the singular of dice in this case. Nothing to do with first person shooter actions)
Of the several benefits of encapsulation are that data cannot be directly manipulated by code that calls/uses the object and that the way methods work can be changed without negative impact on other code that uses the class/object. Let’s take a look at this in code with the first part of a very simple Die class (This example is in Visual Basic but the concepts are the same in other programming languages)
Public Class Die
Private sides As Integer
Private face As Integer
Private rnd As Random
Public Sub New(ByVal s As Integer)
If s < 2 Then
Throw New Exception("Sides must be greater than or equal to 2")
sides = s
rnd = New Random
face = rnd.Next(1, sides + 1)
Public Sub New()
Public Function Roll() As Integer
face = rnd.Next(1, sides + 1)
Public ReadOnly Property FaceValue() As Integer
Public Overrides Function ToString() As String
In this example we only allow the user to get (and change in a protected fashion) the face value of the Die. The property FaceValue is read only – we do not want the user code changing that to some value of its own choosing. In fact the only way to change the value is to call the Roll function/.method which uses random values that are (theoretically at least) outside the user’s control. The ToString method is likewise only a way to get the face value.
In our example there is no way to retrieve the number of sides the Die has and fixing that would probably be a good edition. Like FaceValue that would be done as a read-only Property.
In our example we could substitute any algorithm for changing the face value of our Die that we wanted to as long as it returned an Integer value within the range expected by the user code. While we are probably not going to write our own random number routine we could and it would not require any changes in code that used this Class. In other applications being able to change the algorithm used in a method without having to change code that uses it could be a valuable option. It would allow us to test various algorithms for performance, accuracy, or other values quickly and easily. In a payroll program we could make changes in the calculations for bonuses, overtime or any number of things within a single class without having any negative impact on programs that used that class. That’s a big win in ease of testing and debugging. It’s all made possible by encapsulation.
I was on vacation last week. I had no Internet or cell phone access for a week. It was wonderful as I really needed the break. Don’t we all need a break now and again? Yes there were posts all week I wrote them in advance so people who were bored would have something to read. This week I will be headed out to Redmond (yes, the travel continues for a bit longer) where I will be part of the 2011 U.S. Partners in Learning Innovative Education Forum (IEF). I am excited about this for a number of reasons. One is to meet all of the wonderful and innovative teachers who are coming from around the US. Only a very few of them have I met in person already. Also in attendance as judges will be my friends Vicki Davis, Pat Yongpradit, and Steve Dembo. Vicki Davis is the award winning teacher behind the Flat Classroom Projects, the Cool Cat Teacher blog and more. Pat is an outstanding computer science teacher who won the world wide Innovative Educator award last year. Steve writes the great Teach 42 blog and works for Discovery Education. But mostly they are really great people who care about education. In the mean time my co-workers at the partners in learning group have been blogging in advance of this event. A couple of recent posts are listed below and they will be blogging the event at the Teacher Tech blog.
Well in spite of being on vacation last week I do have a few more links to share. So here they are:
Mark (@guzdial) Guzdial writes about “Why does CS count towards high school graduation in Georgia?” An interesting story about graduation requirements, college admissions requirements, some politics and some good solid activism.
Computational Tales CS concepts written as fairy tales.
I highly recommend Doug (@dougpete ) Peterson’s CS & IT wrap up post.
Interesting post by Lee Stott Have you seen .NET Gadgeteer really cool fun for making serious gadgets. I’ve seen Gadgeteer and it really does look like it has huge potential in education.