Local Police Deploy Secret Military Grade Electronic Warfare Devices Against Citizenry

Cities and counties around the country continue to use funds from DHS to further militarize local police and ramp up the Democratic and Republican parties' ongoing war on basic constitutional rights and liberties. In the present case, police won't even reveal the nature of the electronic warfare devices being deployed against the people. From the Pontiac Tribune:
‘HailStorm’ is a new device obtained by the Oakland County [MI] Sheriff with monies from a U.S. Homeland Security Grant and so far, there isn’t much information available on what exactly it can and cannot do.  There were no questions asked when Oakland County commissioners unanimously approved the use of this cellphone tracking device previously used by the US military in Iraq.
Undersheriff Michael McCabe told The Detroit News that the federal Homeland Security Act bars him from discussing the Hailstorm device.
Many privacy advocates are questioning why one of the safest counties in Michigan needs the very powerful, super-secretive military device called ‘Hailstorm’. The Detroit News sought basic information about Hailstorm and the county denied their Freedom of Information Act request.
The Oakland County Sheriff’s Office, located here in Pontiac, is the only police department in the state of Michigan(that we know of?) currently using the military technology. If you think this is an invasion of privacy, you are not alone.

FCC Caves to Corporate Masters of the Democratic and Republican Parties

Anyone who expected a group of Democrats and Republicans to do anything other than continue to carry water for their corporate overlords on this issue, as with all other issues, seriously needs to have their head examined. From the Washington Post:
The Federal Communications Commission on Thursday voted in favor of advancing a proposal that could dramatically reshape the way consumers experience the Internet, opening the possibility of Internet service providers charging Web sites for higher-quality delivery of their content to American consumers.
The plan, approved in a three-to-two vote along party lines, could unleash a new economy on the Web where an Internet service provider such as Verizon would charge a Web site such as Netflix for the guarantee of flawless video streaming.
The proposal is not a final rule, but the vote on Thursday is a significant step forward on a controversial idea that has invited fierce opposition from consumer advocates, Silicon Valley heavyweights, and Democratic lawmakers. The FCC will now open the proposal to a total 120 days of public comment. Final rules, aimed for the end of the year, could be rewritten after the agency reviews the public comments.
Again, supporting the Democratic or Republican parties in any way, shape or form is effectively tantamount to declaring oneself in active opposition to the most basic interests, rights and liberties of the people of the United States. 

Unintended Consequences of the Snowden Leak

In the aftermath of the Snowden NSA leak last year, supporters of the National Security Police State and Surveillance Society in the Republican and Democratic parties quickly ran to the media arguing that the leak represented a grave threat to national security because it would potentially reveal sensitive intelligence sources and methods.  It is now being reported by the WSJ that, in response to the Snowden leaks, Al Qaeda have changed up their crypto protocols and rolled their own encryption software.  And the uninformed  responses from the professional hysterics in the media and blogosphere are not hard to find.  Take some guy named Bob Cesca at the Daily Banter, for example. He writes:
So this is just peachy. I’ve always been very, very cautious to not over-emphasize the general scope of the terrorist threat, but this has more to do with stupidly and recklessly helping the ones that are out there, and it appears as if Snowden & Company have done precisely that.
What this reveals is that Bob Cesca doesn't know the first thing about the basic tenets of cryptography. One of the first things anyone learns when doing the most rudimentary study of cryptography and cryptanalysis is that "home-brewed," closed source  cryptographic software is essentially broken by definition, since by definition it cannot be subjected to rigorous review.  This makes it easier to break.  So, ironically, by switching up their crypto, Al Qaeda are likely providing new attack vectors for intelligence agencies the world over.  And this is in fact the view of at least one actual expert in cryptography, Bruce Schneier, as opposed to the uninformed reactions of professional political whiners.  He writes:
The Web intelligence company Recorded Future is reporting -- picked up by the Wall Street Journal -- that al Qaeda is using new encryption software in the wake of the Snowden stories. I've been fielding press queries, asking me how this will adversely affect US intelligence efforts.
I think the reverse is true. I think this will help US intelligence efforts. Cryptography is hard, and the odds that a home-brew encryption product is better than a well-studied open-source tool is slight. Last fall, Matt Blaze said to me that he thought that the Snowden documents will usher in a new dark age of cryptography, as people abandon good algorithms and software for snake oil of their own devising. My guess is that this an example of that.

Issue Complexity and Corporate Conflicts of Interest Lead to Media Silence on Net Neutrality

From Esquire:
The FCC is holding a chat on Twitter today about its new “Net Neutrality rules” proposed by Chairman Tom Wheeler. We implore you to let them hear it. The hashtag to do so is #FCCNetNeutrality, and the chat starts at 2 p.m.
Here’s why it’s a big deal: FCC Commissioner and former telecom lobbyist Tom Wheeler proposed rules two weeks ago that would permit for a “Fast Lane” for those willing to pay for it on the web, relegating the rest of Internet traffic to a slow lane unless a toll is paid to an Internet service provider. That means, yes, Netflix might slow down if Comcast is at odds with the company. But it also means companies like Netflix, in the future, might not be allowed to created — because the toll to start and maintain an Internet business early on would be too heavy.
The new rules have been met with radio silence on television, likely because of the complexity of the issue and because, as David Carr points out, parent companies of cable nets like CNN (TimeWarner) and MSNBC (Comcast) have a rooting interest in keeping the big cable/Internet bundle in place. [Emphasis added.]
This might pass for an artist's rendition of our mainstream press corpse at work, except for the fact that the monkey would eventually come up with the complete works of Shakespeare if given enough time:

Ancient Game Continues to Confound Modern Computing

Wired has a lengthy article on the ancient game of Go and how it continues to confound modern programmers.  Excerpt:
In 1994, machines took the checkers crown, when a program called Chinook beat the top human. Then, three years later, they topped the chess world, IBM’s Deep Blue supercomputer besting world champion Garry Kasparov. Now, computers match or surpass top humans in a wide variety of games: Othello, Scrabble, backgammon, poker, even Jeopardy. But not Go. It’s the one classic game where wetware still dominates hardware. 
But when computers lose at go, at least they don't go completely insane! Here's an infamous old pic of a Go game gone wrong:

 
If you're interested in learning more about Go, definitely head over to Sensei's Library, which is one of the best resources for the game on the web.

Online Learning: A Bachelor's Level Computer Science Program Curriculum (Updated - Dec 2020)

Introduction
[Update: See also the follow-up post to this piece, An Intensive Bachelor's Level Computer Science Curriculum Program.]

A few months back we took an in-depth look at MIT’s free online Introduction to Computer Science course, and laid out a self-study time table to complete the class within four months, along with a companion post providing learning benchmarks to chart your progress. In the present article, I'll step back and take a much more broad look at com-sci course offerings available for free on the internet, in order to answer a deceptively straightforward question: is it possible to complete the equivalent of a college bachelor’s degree in computer science through college and university courses that are freely available online? And if so, how does one do so?

The former question is more difficult to answer than it may at first appear. There are, of course, tons of resources relating to computer science and engineering, computer programming, software engineering, etc. that can easily be found online with a few simple searches. However, despite this fact, it is very unlikely that you would find a free, basic computer science curriculum offered in one complete package from any given academic source. The reason for this is fairly obvious. Why pay $50,000 a year to go to Harvard, for example, if you could take all the exact same courses online for free?

Yet, this does not mean that all the necessary elements for such a curriculum are not freely accessible. Indeed, today there are undoubtedly more such resources available at the click of a button than any person could get through even in an entire lifetime of study.  The problem is that organizing a series of random lecture courses you find on the internet into a coherent curriculum is actually rather difficult, especially when those courses are offered by different institutions for different reasons and for considerably different programs of study, and so on. Indeed, colleges themselves require massive advisory bureaucracies to help students navigate their way through complicated degree requirements, even though those programs already form a coherent curriculum and course of study. But, still, it’s not impossible to do it yourself, with a little bit of help perhaps.

The present article will therefore attempt to sketch out a generic bachelor’s level curriculum in computer science on the basis of program requirements distilled from a number of different computer science departments at top universities from around the country.  I will then provide links to a set of specific college and university courses that are freely available online which, if taken together, would satisfy the requirements of our generic computer science curriculum.

A Hypothetical Curriculum
So, what are the requirements of our hypothetical computer science program?  Despite overarching similarities, there are actually many differences between courses of study offered at different colleges and universities, especially in computer science.  Some programs are more geared toward electrical engineering and robotics, others toward software development and programming, or toward computer architecture and hardware design, or mathematics and cryptography, or networking and applications, and on and on.  Our curriculum will attempt to integrate courses that would be common to all such programs, while also providing a selection of electives that could function as an introduction to those various concentrations. 

There are essentially four major parts to any bachelor’s level course of study, in any given field: pre-requisites, core requirements, concentration requirements and electives. 

Pre-requisites are what you need to know before you even begin. For many courses of study, there are no pre-requisites, and no specialized prior knowledge is required or presumed on the part of the student, since the introductory core requirements themselves provide students with the requisite knowledge and skills. 

Core requirements are courses that anyone in a given field is required to take, no matter what their specialization or specific areas of interest within the field may be.  These sorts of classes provide a general base-level knowledge of the field that can then be built upon in the study of more advanced and specialized topics.

Concentration requirements are classes that are required as part of a given concentration, focus or specialization within an overall curriculum.  For example, all students who major in computer science at a given university may be required to take two general introductory courses in the field, but students who decide to concentrate on cryptography may be required to take more math classes, while students interested in electrical engineering may take required courses on robotics, while others interested in software development may be required to study programming methodologies and so on.

Finally, electives are courses within the overall curriculum that individuals may decide to take at will, in accordance with their own particular interests.  Some people may prefer to take electives which reenforce sub-fields related to their concentration, while others may elect to sign on for courses that may only be tangentially related to their concentration.

Our hypothetical curriculum will simplify this model. We will assume no prerequisites are necessary other than an interest in learning the material and a basic high school education.  Our curriculum will also not offer any concentration tracks in the traditional sense, as that would require specialized resources that are not within the scope of our current domain.  Instead, our planned curriculum shall provide for introductory courses, general core requirements, and a choice of electives that may also serve as a basis for further concentration studies.

Basic Requirements
A quick survey of curricular requirements for programs in computer science at a number of the country’s top colleges and universities reveals a wide spectrum of possibilities for our proposed curriculum, from a ten course minor in computer science to a twenty-five course intensive major in the field along with an interdisciplinary concentration. (See, for example, MIT, Carnegie Mellon, Berkeley, Stanford and Columbia, or the comp-sci page for a college or university near you.) 

Our proposed curriculum will attempt to stake out a space between those two poles, and aim for a program that consists of about 15 courses: 3 introductory classes, 7 core classes and 5 electives. The required topics and themes of a generic computer science degree program are fairly easy to distill from the comparison: introduction to the field, data structures, algorithms, programming languages, operating systems, networking, data communications, systems engineering, software development, and so on.  Our program will consist of university or college level courses from around the world that cover our basic requirements and are freely available in full online.

Note: I have, unfortunately, not watched every single video from all of the courses below.  However, I have completed three of them in full, viewed a handful lectures from a number of the other courses, and spot checked the videos from the rest for quality. 


Introductory Courses 

Intro to Computer Science, pick two of three:
Basic mathematics, pick one of two:

Core Courses 

Data Structures and Algorithms, pick one of two:
Operating Systems:
Programming Languages and Methodologies:
Computer Architecture:
Networking:
Data Communications:
Cryptography and Security:

Electives

Web Development:
Data Structures:
Systems:
Programming Languages:
Security:
Cryptography:
App Development:
Artificial Intelligence:
Graphics:
Math:
Leave any suggestions for improvements or additions in the comments!

UPDATE: There has been a ton of great feedback on this post, with suggestions for additions, critiques of the overall form, identification of "glaring holes" and more.  Thanks everyone!  However, rather than address them one by one in the comments, or include them all into an update of some sort, I think I may just begin work on a new version of the piece which provides a more intensive track of study and tries to incorporate as many of those suggestions as possible, assuming that examples of such courses are available for free in full online from a college or university.  So be sure to check back in future!

UPDATE II:  See also the companion post to this piece, An Intensive Bachelor's Level Computer Science Curriculum Program.

Duck-Duck-Go Unveils Redesign

From the DuckDuckGo Blog:
Over the past year, as our userbase and community have grown substantially, we've heard great feedback from new and long-term users. Now, we'd like to show you how we've incorporated your feedback with a reimagined and redesigned DuckDuckGo:

https://next.duckduckgo.com/

This next version of DuckDuckGo focuses on smarter answers and a more refined look. We've also added many new features you've been requesting like images, auto-suggest, places and more. Of course, your privacy is protected as well!