Sailing through a sea of code

Quality Computer Science Education for Free? Yes Please!

Recently I have been following a couple of online courses on Coursera and udacity, and I must say the quality of the material is really good. Browsing through several programming and computer science courses you can notice that the quality of the material is at least as good as many paid physical universities if not better. After all, most of those courses are given by professors from top universities around the world! The number of courses available on the current MOOC websites is increasing year after year which is opening up the doors to new fields of study online.

Computer science, programming and maths courses are widely available on all of the MOOC websites out there. With that many courses available, that gave me the idea to look into devising a complete 4 year curriculum for a free quality Computer Science education. Of course there isn't a "real" degree associated with all that, but after all education is about the knowledge that one attains and not a signed fancy paper.

The suggested curriculum can go over 4 years, each year is divided into 2 semesters and in each semester the student would take 4 required major courses(Computer Science, Programming and Maths) and maybe one liberal arts elective that is not necessarily related to the major.

A typical undergraduate CS program would give the student background in the following areas:

Computer Programming

Data Structures

Object Oriented Programming

Algorithms

Programming Language Theory

Software Engineering

Computer Networking

Human Computer Interaction

Operating Systems

Web Programming

Database Systems

Mathematics

Discrete Mathematics

Calculus

Statistics and Probability

Linear Algebra

The curriculum basically assumes a high school education preferably focused on the sciences. And here it goes:

Single Variable Calculus: Discusses differential and integral calculus, with an emphasis on conceptual understanding and applications to the engineering, physical, and social sciences. An equivalent course is available at MIT Open Course ware

Statistics 1: Comprehensive and friendly introduction to statistics including an introduction to R programming and its applications within statistics.

Year 1, 2nd Semester:

Programming 2(Crafting Quality Code): Focused on writing quality code that runs correctly and efficiently, Teaches how to design, code and validate programs and how to compare programs that are addressing the same task.

Discrete Mathematics: Introduces a collection of mathematical topics that are directly related to theoretical Computer Science, each of which is a domain in mathematics on its own.

Writing in the Sciences: Teaches science students to become more effective writers. Topics include: principles of good writing, tricks for writing faster, the format of a scientific manuscript, and issues in publication and peer review.

Year 2, 1st Semester

Linear Algebra: Learn the concepts and methods of linear algebra, and how to use them to think about computational problems arising in computer science.

Year 2, 2nd Semester

Algorithm Design and Analysis 2: Fundamental principles of advanced algorithm design: greedy algorithms and applications; dynamic programming and applications; NP-completeness and what it means for the algorithm designer; the design and analysis of heuristics; and more.

Year 3, 2nd Semester

Web Development:Teaches the basics of Web Development including building a blog web application from scratch and how to make it scale.

Compilers: Discusses the major ideas used today in the implementation of programming language compilers. You will learn how a program written in a high-level language designed for humans is systematically translated into a program written in low-level assembly more suited to machines.

Introduction to Data Science: Introduce yourself to the basics of data science and leave armed with practical experience extracting value from big data.

And there you have it, a 4 year curriculum for a full Computer Science education that contains a mix of theoretical and practical topics. What I really love about all those courses is that almost all of them focus on discussing where and how to apply the theory you're learning in the real world and in programming. And this in my opinion is what makes such courses really effective in adding value to the learner, and makes them more ready to the job market.

Platforms such as Coursera and Udacity are revolutionizing the way we learn to the better. The age where virtually anyone in the world regardless of their economic status, color, race and gender can have access to a decent free education is already here. Freedom not necessarily in the monetary sense but also freedom in time, choosing topics of interest, and learning speed. Freedom from the handcuffs of classic educational institutions who's main goal is to make profits while delivering a one size fits all education.

What I would really like to see one day is a new style of educational institutions that are affiliated with with MOOC platforms and operate within different areas. For a certain reasonable tuition they'd host the MOOC courses locally and organize them into full undergraduate programs, they provide the students with lecture material to study, and administer the exams. At the end of the curriculum, successful students would receive a degree that is officially approved by the MOOC platform and that is equivalent to a degree from any other classical education institution.

Do you think such model for tech related education(such as applied Computer Science) can really work? Would love to hear your comments.