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!

White House and Congress Seek to Provide Further Immunity to Telecoms for Participation in Unconstitutional Wiretapping Programs

According to recent reports, the Democrats and Republicans in the White House and Congress are, once again, crafting legislation to provide immunity to telecommunications corporations that conspire with government agencies to undermine the Constitutional rights of US citizens.  If this story sounds familiar, that's because it is. The White House and Congress did the same thing back in 2008 to protect companies that were facilitating the government's illegal and unconstitutional warrantless wiretapping programs. Now the degenerates in the Democratic and Republican parties are seeking to do the same for companies that conspire with the NSA to undermine the security of all our persons, houses, papers and effects.  From The Guardian:
The White House has asked legislators crafting competing reforms of the National Security Agency to provide legal immunity for telecommunications firms that provide the government with customer data, the Guardian has learned.

In a statement of principles privately delivered to lawmakers some weeks ago to guide surveillance reforms, the White House said it wanted legislation protecting “any person who complies in good faith with an order to produce records” from legal liability for complying with court orders for phone records to the government once the NSA no longer collects the data in bulk.

Toward the Meshnet

From Wired:
Compared to the “normal” internet — which is based on a few centralized access points or internet service providers (ISPs) — mesh networks have many benefits, from architectural to political. Yet they haven’t really taken off, even though they have been around for some time. I believe it’s time to reconsider their potential, and make mesh networking a reality. Not just because of its obvious benefits, but also because it provides an internet-native model for building community and governance.
But first, the basics: An ad hoc network infrastructure that can be set up by anyone, mesh networks wirelessly connect computers and devices directly to each other without passing through any central authority or centralized organization (like a phone company or an ISP). They can automatically reconfigure themselves according to the availability and proximity of bandwidth, storage, and so on; this is what makes them resistant to disaster and other interference. Dynamic connections between nodes enable packets to use multiple routes to travel through the network, which makes these networks more robust.
Compared to more centralized network architectures, the only way to shut down a mesh network is to shut down every single node in the network.
That’s the vital feature, and what makes it stronger in some ways than the regular internet.

You Can Run, But You Can't Hide from the Big Data Snoops

An expecting mother and sociologist reports on her attempt to hide her pregnancy from the data mining corporations that increasingly have greater and greater access to more and more of the details of all our lives.  From TIME:
This week, the President is expected to release a report on big data, the result of a 90-day study that brought together experts and the public to weigh in on the opportunities and pitfalls of the collection and use of personal information in government, academia, and industry. Many people say that the solution to this discomforting level of personal data collection is simple: if you don’t like it, just opt out. But as my experience shows, it’s not as simple as that. And it may leave you feeling like a criminal. . . . .
No one should have to act like a criminal just to have some privacy from marketers and tech giants. But the data-driven path we are currently on, paved with heartwarming rhetoric of openness, sharing and connectivity, actually undermines civic values, and circumvents checks and balances. The President’s report can’t come soon enough. When it comes to our personal data, we need better choices than either “leave if you don’t like it” or no choice at all. It’s time for a frank public discussion about how to make personal information privacy not just a series of check boxes but a basic human right, both online and off.
An infographic from ZDNET: