Stack Exchange for Computer Science Educators now in public beta!

TweetSmallA Stack Exchange site for Computer Science Educators went to public beta yesterday. Stack Exchange beta phases last at least 90 days, during which the powers that be keep an eye on key stats to decide if the site shows viability. The Stack Exchange Area 51 site where the stats mentioned below are continuously updated can be found here. Currently some of the stats are very good: 98% of questions answered (90% considered healthy); answer ratio 3.4 (2.5 considered good). However, other stats need some help: 4.1 questions/day (10 is average); 111 visits/day (1,500 considered good). Additionally, the site is in need of users with high Stack Exchange reputations.

It may be summer, but September is, well, you know. Why not spend a few minutes browsing, asking and answering?

Some of the interesting questions currently trending include:

Browse the complete list of questions, or popular tags. Help answer unanswered questions.

A great resource for non-native English speakers studying computing

I have been teaching this semester in Beijing. The language of instruction is English but most of my students are not fluent – improving English is part of the program here. Two of my modules are CS1 and Computer Organization. Early on in this semester in both courses I encouraged students to look up a few terms in the Free Online Dictionary of Computing (foldoc.org). Little did I know then that I would end up referring to FOLDOC almost every week.

Started in 1985 by Denis Howe, FOLDOC is an online, searchable, encyclopedic dictionary, currently containing nearly 15,000 definitions. It also includes cross-references and pointers to related resources elsewhere on the Internet, as well as bibliographical references to paper publications.

What I really like about FOLDOC is its simplicity, and that the definitions are pointedly context-based, specifically describing what words mean in the context of computing. I never really thought about it until recently, but in computing we use many words in ways that can be quite far from their ‘normal’ meanings. Take for instance the word load. Computing people happily abuse this word using it often and with several meanings. The Merriam Webster Dictionary has these ‘simple definitions’ for load:

1. something that is lifted and carried

2. an amount that can be carried at one time : an amount that fills something (such as a truck)

3. the weight that is carried or supported by something

None of the other ‘full definitions’ mention anything like those that FOLDOC gives:

load

1. To copy data (often program code to be run) into memory, possibly parsing it somehow in the process. E.g. “WordPerfect can’t load this RTF file – are you sure it didn’t get corrupted in the download?” Opposite of save.

2. The degree to which a computer, network, or other resource is used, sometimes expressed as a percentage of the maximum available. E.g. “What kind of CPU load does that program give?”, “The network’s constantly running at 100% load”. Sometimes used, by extension, to mean “to increase the level of use of a resource”. E.g. “Loading a spreadsheet really loads the CPU”. See also: load balancing.

3. To install a piece of software onto a system. E.g. “The computer guy is gonna come load Excel on my laptop for me”. This usage is widely considered to be incorrect.

FOLDOC is pretty comprehensive too. Writing this post I hit ‘random’ on the site, and it brought me to the definition of CACM:

Communications of the ACM

(publication) A monthly publication by the Association for Computing Machinery sent to all members. CACM is an influential publication that keeps computer science professionals up to date on developments. Each issue includes articles, case studies, practitioner oriented pieces, regular columns, commentary, departments, the ACM Forum, technical correspondence and advertisements.

http://acm.org/cacm/.

Then I googled CACM. The CACM we know and love is the 5th hit, and unless you know what ACM stands for,  the first page of results isn’t much help if you are looking to find what CACM means or stands for (in a computing context). I wish that someone gave me such a brief synopsis of CACM when I was starting out.

Other good entries for ‘normal’ English words whose computing definitions are not easily found on the net are iteration and volatile:

iteration

(programming)   Repetition of a sequence of instructions. A fundamental part of many algorithms. Iteration is characterised by a set of initial conditions, an iterative step and a termination condition.

A well known example of iteration in mathematics is Newton-Raphson iteration. Iteration in programs is expressed using a loop, e.g. in C:

	new_x = n/2;
	do
	{
	  x = new_x;
	  new_x = 0.5 * (x + n/x);
	} while (abs(new_x-x) > epsilon);

Iteration can be expressed in functional languages using recursion:

	solve x n = if abs(new_x-x) > epsilon
		    then solve new_x n
		    else new_x
		    where new_x = 0.5 * (x + n/x)
        solve n/2 n

volatile

1.   (programming)   volatile variable.

2.   (storage)   See non-volatile storage.

A few more clicks on random brought me to this, proof that those behind FOLDOC also have a great sense of humor:

elephant

Large, grey, four-legged mammal.

 

Update August 3 2016 – Merriam Webster have a learner’s dictionary which could be a valuable resource for those learning English.

 

New Google CS education site

Dr. Chris Stephenson, Google’s Head of Comptuer Science Education Programmes has announced Google’s new CS Education website on Google’s Education Blog  and their Research Blog.

The site aims to make it easier for educators and students to access all of Google’s CS Programs and initiatives, providing fast, easy access to Google grant programs, resources and tools, scholarships and internships. The posts above highlight the CS4All initiative, and cite the known lack of computer science graduates, caused in large part by too few students having the opportunity to study computer science in high school. Google’s research shows that only 25% of U.S. schools currently offer CS with programming or coding, despite the fact that 91% of parents want their children to learn computer science. In addition, schools with higher percentages of students living in households below the poverty line are even less likely to offer rigorous computer science courses.

The post notes that increasing access to computer science for all learners requires tremendous commitment from a wide range of stakeholders, and that Google is striving to be a strong supportive partner of these efforts. The new CS EDU website shows all the ways Google is working to address the need for improved access to high quality computer science learning in formal and informal education. Some current programs you’ll find there include:

  • CS First: providing more than 360,000 middle school students with an opportunity to create technology through free computer science clubs
  • Exploring Computational Thinking: sharing more than 130 lesson plans aligned to international standards for students aged 8 to 18
  • igniteCS: offering support and mentoring to address the retention problem in diverse student populations at the undergraduate level in more than 40 universities and counting
  • Blockly and other programming tools powering Code.org’s Hour of Code (2 million users)
  • Google’s Made with Code: movement that inspires millions of girls to learn to code and to see it as a means to pursue their dream careers (more than 10 million unique visitors)
This is also a fantastic student resource, showcasing significant efforts to improve the accessibility of Computer Science study for all students.