Sunday, March 04, 2012

An update on high school math education

A while ago, I commented on official year 2000 stats that showed 75% of high school kids cannot use math in real life problems. Obviously this is bad. So what happened since then? I found a convenient 2009 data set in the 2010 education statistics digest published by the US government. You can see the table here.

There have been some changes since 2000. In the current table, math students are graded in 6 levels of proficiency, as opposed to 4 in the earlier tables. Here is a description of the levels, and some summarizing I did on my own.

Level 1: Able to answer questions involving familiar contexts where all relevant information is present and the questions are clearly defined.

There doesn't seem to be anything extraordinary here.

Level 2: Able to interpret and recognize situations in contexts that require no more than direct inference; extract relevant information from a single source; employ basic algorithms, formulae, procedures, or conventions; and employ direct reasoning for literal interpretations of results.

There is nothing interesting here either. Actually it reminds me of rote and training as opposed to education.

Level 3: Able to execute clearly described procedures, select and apply simple problem solving strategies, interpret and use representations based on different information sources, and develop short communications reporting one's interpretations, results, and reasoning.

It feels as if we are getting there, but note people at level 3 tend to follow instructions and do, at most, simple decisions. This is not very good.

Level 4: Able to work effectively with explicit models for complex concrete situations that may involve constraints or call for making assumptions, select and integrate different representations, reason with some insight, and construct and communicate explanations and arguments based on one's interpretations and actions.

Finally, students are expected to reason with some insight about constraints and assumptions. This might be enough proficiency to attempt thinking more or less independently.

Level 5: Able to develop and work with models for complex situations, select and evaluate appropriate problem solving strategies, work strategically using broad, well-developed thinking and reasoning skills, and communicate one's interpretations and reasoning.

We have wait until level 5 to see the first call for "well-developed thinking and reasoning skills". So, under level 5, you do not have well-developed thinking and reasoning skills. Ouch.

Level 6: Able to conceptualize, generalize, and utilize information; link different information sources and representations; perform advanced mathematical thinking and reasoning; develop new approaches and strategies for attacking novel situations; and formulate and precisely communicate actions and reflections regarding findings and interpretations.

And level 6, students can think of solutions on their own. A true independent thinker.

So now, with these levels in mind, let's go over the table. First of all, if you go through the digest you will find several tables that assign scores to students. Looking at the scores alone, you'd think the US is doing pretty well because it scores ~265 of 300. But how do you know the tests actually measure something relevant? That is why we look at actual proficiency.

In the US, level 4 and above are still at about 25% of the students. In other words, 75% of students cannot reason with any insight about constraints and assumptions. Things like "can I buy and pay for house X, with the constraint that I have salary Y, and assuming I'm employed along the lines of Z?" are outside the reach of level 3 and below. They need to be told the procedure, they cannot figure it out for themselves. Are we surprised about the results?

But how does the US compare to other countries? First, some countries that are not doing very well. According to the tables, level 4 and above constitute less than 5% in Argentina. Peru for example, has 2.6% for level 4 and above, and 47.6% are below level 1. In Colombia, there's only 38.8% under level 1 so it seems comparatively better, but level 4 and above is only 1.7%. Brazil and Panama are about the same. Uruguay and Trinidad and Tobago are doing a bit better.

Well so much with Latin America. How about Qatar? Aren't they full of oil? Well yes, but it looks like they are having some challenges of their own because 51% are below level 1, and only 6% are at level 4 or above. Dubai is doing better. Other countries look similar to the US, like the UK, the Czech Republic, the Slovak Republic, Italy, Hungary, Portugal and Spain.

Ok, how about some serious competition? Let's see... in Australia, level 4 and above is close to 40%. Canada's level 4 and above is a bit over 40%. Something similar happens with Belgium, Germany, Japan, the Netherlands, New Zealand, Macao-China, etc.

There is a higher tier as well. Finland, for example, has about 50% at level 4 or above. Switzerland is close to 48%. Liechtenstein has about 49%. Chinese Taipei has about 50%. The Republic of Korea weighs in at about 52%. Hong Kong's level 4 or above is over 55%. Singapore has 58%.

The countries that are doing comparatively well (at least ~40% at level 4 or above) are just a roundup of the usual suspects. But who tops the list? According to the table, Shanghai-China has over 70%. In fact, their level 6 population is larger than that of any other level.

So, it could be done right in the US if we wanted to, but effectively we don't. For all we want to "have an intelligent discussion about our problems", exactly what are we going to propose without putting in the time to understand things first? We are the ones who spend an average of 30 hours a week in front of the TV and Angry Birds, so why don't we start putting in the time where it counts?

None of this should be surprising. In fact, it is well deserved.

Monday, February 20, 2012

Call for Submission on Special issue on "Advances in Dynamic Languages"

Special issue on "Advances in Dynamic Languages"


Special issue of Elsevier's Science of Computer Programming (SCICO)


Context

Over recent years we have seen an increased interest in dynamic programming languages such as Smalltalk, Lisp, Scheme, PHP, JavaScript, Self, Python, Ruby, and so on. These languages have taken a prominent role in teaching, web development, scripting, rapid prototyping, tool building, language engineering, and many other domains.

For this special issue we invite high-quality papers that focus on novel research related to dynamic programming languages and applications of these languages.

We are interested in research that uses dynamic languages in the context of, but not restricted to:

- Aspects, aspect Languages and applications.
- Ambient intelligence, ubiquitous / pervasive computing and embedded systems.
- Compilation technology, optimization, virtual machines.
- Language engineering, extensions.
- Model-driven engineering / development.
- Meta-modeling, reflection and meta-programming.
- Programming in the large; design, architectures and components.
- Programming environments, browsers, user interfaces, UI frameworks.
- Source-code analysis and manipulation (static analysis, refactoring, type inference, metrics).
- Testing, eXtreme Programming / practices.
- Web services, internet applications, event-driven programming.
- Experience reports.

The special issue is associated with the Smalltalks 2011 conference. The Smalltalks series of conferences (www.fast.org.ar) is a lively forum on Smalltalk-based software technologies that brings together more than 200 people from both academia and industry for a period of three days.

Submission Guidelines

Papers should be written in English, in PDF-format and should not exceed 25 pages (including references and figures), using the Elsevier journal format. The LaTeX template for this format can be found at http://www.elsevier.com/wps/find/authorsview.authors/latex

Papers must be submitted through the EES submission system located at http://ees.elsevier.com/scico/default.asp. When reaching the "Article type" step in the submission process, it is important to select "Special issue: Advances in Dynamic Languages".

Each paper will be reviewed by at least 3 experts within the domain. The accepted papers will be published in a special edition of Elsevier's Science of Computer Programming.

Papers submitted must not have been previously published (at least 30% new material) and must not be under review for publication elsewhere. Papers must strictly adhere to submission guidelines. If you have questions, please send an e-mail to Jannik Laval (jlaval@labri.fr) and Andy Kellens (akellens@vub.ac.be).


Important dates (tentatively)

- Submission round 1: March 16, 2012
- Feedback round 1: May 17, 2012
- Submission round 2: June 29, 2012
- Feedback round 2 (final notification): August 17, 2012
- Camera ready version: September 14, 2012

Guest editors

- Andy Kellens (Vrije Universiteit Brussel, Belgium)
- Jannik Laval (LaBRI Bordeaux, France)

Saturday, February 04, 2012

Update on Fundamentals vol 2

I rewrote all I had written for chapter 7, and finished off a chunk that I had not had a chance to complete earlier. The draft is now 178 pages.

Update on scavenger work

Ok, so now we put in another set of cleanups that deleted another ~400 LOC. The total code deletion from the scavenger work is now close to 1000 LOC. And note that this figure does not reveal what truly happened because I had to add a significant amount of code to fix problems that will no longer occur...

Thursday, January 12, 2012

From the strange source code department

Download this source code, compile and execute. Betcha you didn't expect that result.

Friday, January 06, 2012

Update on the scavenger

Back in October I made some comments about the coming work on Cincom Smalltalk's new space generational scavenger. Today, the bulk of the work got integrated into our development branches. Here are some highlights.

  • The generational scavenger is essentially rewritten. Major wins include a net code loss of about 10% for the scavenger alone, elimination of all sorts of weird edge cases, and generally more efficient operation.
  • For 64 bit platforms, we now have a completely new, significantly better and far more concise class table management mechanism for the scavenger.
  • These changes come with about 1850 new VM tests.

In addition, we fixed several smaller bugs that will just never come back to bother us. There are also some performance and stability improvements for the GC / IGC in particular, and the memory manager in general. I still have a list of pending cleanup items, and we still have the opportunity to delete more code and extract more efficiency out of the code.

Moving along!

A couple Smalltalk apps on the web

Via German Arduino, check these two Smalltalk powered websites: Get It Made, and Airflowing. They look really nice, don't they?

Update... these three Smalltalk powered websites: Objectfusion.

Thursday, December 29, 2011

Happy new year from the book publishing department

My first book, A Mentoring Course on Smalltalk, is now available in PDF format. You can get it here (plus all my books are listed here). Enjoy!

Friday, December 16, 2011

Firefox 8 data cache cleaning

By default, my installation of Firefox uses up to 1 gb for file caching. Firefox uses a nice 16x256 (or similar) directory structure so that not all files are stored in the same directory. This is nice! However, when you ask Firefox to clear the cache, Firefox deletes files from this directory structure in (apparently) random order. This is Bad(TM):

  • That's a lot of directories! Using du -sh ? at the root cache directory will show that progress is made in a random fashion. Moreover, if you keep doing du -sh ? on the command line, then directories stay mostly cached and you can see progress is fast (meaning: slow, but not frozen molasses slow). If you wait a while, then directories don't stay cached and progress becomes (frozen molasses) slow again.
  • For some reason, it looks like OS X won't do write combining anywhere as efficiently if you delete files at random from the directory structure. The activity monitor showed about 4mb / sec disk writes throughout. However, the result was super slow deleting.

After about an hour, Firefox still had to delete about 700 mb of files. So I decided to help, and run commands such as rm `find F -type f -print` at the root of the cache directory. Apparently Firefox doesn't mind not finding files it wants to delete, and rm keeps going if it can't find a file to delete, so things went well. The rm command deletes files sequentially in the same directories, so I expected it to run faster. And yes indeed, it was quicker by a lot. I was done deleting the rest of the files in no time. I should also point out that, even though at times there were effectively two rm threads (Firefox, and the command line), actual disk i/o throughput was not higher and remained at about 4 mb / sec. Nevertheless, actual deleting performance was way faster.

Firefox developers: please delete cache files sequentially, yes? Also, Memshrink is awesome and it makes a huge difference, please keep going!

Sunday, December 11, 2011

Windows 7 32 bit install freeze while "Completing installation..."

On a Macbook Pro, installing Windows 7 32 bits on the boot camp partition may freeze after the first successful reboot at the "Completing installation..." phase. Also, when you kill the computer to unfreeze it, your installation is trashed and you have to start over again. There are a multitude of suggestions on how to deal with this problem on the web. This is a summary of what I figured out.

After the first reboot, I told the installer to boot into safe mode. This stops the installation from proceeding and trashing the install when it crashes. With e.g.: shift+f10, open a command prompt and then execute compmgmtlauncher. This brings up the computer management console. Look under the device manager and browse through the devices. In my case, I could freeze the computer just by looking at the ethernet controller. Interesting...

But how to work around it? Disabling the device didn't help because the installer crashed anyway. So I took out memory from the machine and left it with 2 gb of RAM (and no, the memory is not bad). At this point, the device manager didn't hang anymore after browsing the ethernet controller. When I rebooted and let the installation proceed, this time it completed successfully. Note that the installer recognized and installed the ethernet controller drivers correctly. Once Windows 7 was installed, I restored the memory back to what it was before. Everything seems to work fine so far.

From this experience, it looks like device recognition during the installation may induce failures when you have more than 2 gb of RAM. How bothersome :(.