background preloader

Get a College-Level Computer Science Education with These Free Courses

Get a College-Level Computer Science Education with These Free Courses
Related:  Programming

Online Learning: A Bachelor's Level Computer Science Program Curriculum (Updated) 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. Yet, this does not mean that all the necessary elements for such a curriculum are not freely accessible. Introductory Courses

Map / Reduce – A visual explanation Map/Reduce is a term commonly thrown about these days, in essence, it is just a way to take a big task and divide it into discrete tasks that can be done in parallel. A common use case for Map/Reduce is in document database, which is why I found myself thinking deeply about this. Let us say that we have a set of documents with the following form: And we want to answer a question over more than a single document. That sort of operation requires us to use aggregation, and over large amount of data, that is best done using Map/Reduce, to split the work. Map / Reduce is just a pair of functions, operating over a list of data. from post in docs.posts select new { post.blog_id, comments_length = comments.length }; from agg in results group agg by agg.key into g select new { agg.blog_id, comments_length = g.Sum(x=>x.comments_length) }; There are a couple of things to note here: The first query is the map query, it maps the input document into the final format. And the final step is:

The Programmers Idea Book – 200 Software Project Ideas and Tips to Developing Them – Ebook : The Coders Lexicon Based on the popular web board thread, created by Martyr2 and viewed by over 350,000 visitors, this new eBook contains hundreds of platform independent programming projects, tips and more. It features: 200 programming project ideas for all skill levels 10 different project categories Over 100 pages of project ideas Expert tips for tackling each programming project Projects for any programming language (platform independent) Programs that you can get started on in minutes! What is this ebook all about? This new ebook is chock-full of programming project ideas with each project idea featuring a difficulty level (from 1 – 10), detailed description of the project, expert tips for how to think about tackling the project in a general non-platform specific way and suggestions for making the project more advanced. The Coding Survival Guide: Habits and Pitfalls Included FREE Do you know when to use an abstract class vs an interface? In these ebooks you get: About The Author

Interpreted Languages: Perl, PHP, Python, Ruby (Sheet One) - Hyperpolyglot a side-by-side reference sheet sheet one: version | grammar and execution | variables and expressions | arithmetic and logic | strings | regexes | dates and time | arrays | dictionaries | functions | execution control | exceptions | threads sheet two: streams | asynchronous events | files | file formats | directories | processes and environment | option parsing | libraries and namespaces | objects | inheritance and polymorphism | reflection | net and web | gui | databases | unit tests | logging | debugging sheet two: streams | asynchronous events | files | directories | processes and environment | option parsing | libraries and namespaces | objects | inheritance and polymorphism | reflection | net and web | gui | databases | unit tests | logging | debugging version used The versions used for testing code in the reference sheet. show version How to get the version. php: The function phpversion() will return the version number as a string. python: import platform platform.python_version() ruby: <? pad

SORTING Game Maven from Crunchzilla <h2>Game Maven from Crunchzilla is an interactive tutorial that lets anyone experiment with coding and write a few games.<p> Game Maven from Crunchzilla uses Javascript. Please enable Javascript if you want to play with Game Maven. Hello, I'm Game Maven! Hello and Getting Started Lesson 1 BACK How to Play | Lesson Sections | About | FAQ | Terms of Use | Privacy | Contact | © 2015 How to Play Game Maven from Crunchzilla is the third and most advanced programming tutorial in the Crunchzilla series. It's easy to play. Click on the Reset button if you really mess up your code and want to start over on a lesson. Game Maven saves what lesson you are on, so feel free to stop at any time and come back later. If you haven't done Code Maven from Crunchzilla yet, you probably should do that first unless you already have a lot of programming experience. Have fun! Frequently Asked Questions What is the c in things like c.save()? var c = document.getElementById('pane').getContext('2d'); Sure! About Oh my.

Coding for SSDs – Part 1: Introduction and Table of Contents | Code Capsule Introduction I want to make solid-state drives (SSDs) the optimal storage solution for my key-value store project. For that reason, I had to make sure I fully understood how SSDs work, so that I can optimize my hash table implementation to suit their internal characteristics. There is a lot of incomplete and contradictory information out there, and finding trustworthy information about SSDs was not an easy task. I had to do some substantial reading to find the proper publications and benchmarks in order to convince myself that, if I had to be coding for SSDs, I would know what I was doing. Then I figured that since I had done all the research, it would be useful to share the conclusions I had reached. The most remarkable contribution is Part 6, a summary of the whole “Coding for SSDs” article series, that I am sure programmers who are in a rush will appreciate. My only regret is not to have produced any code of my own to prove that the access patterns I recommend are actually the best.

Raspberry Pi - Daily Deviations Picture Frame I have been following the progress of the Raspberry Pi with keen interest for a while now and I’ve finally got one of my own to play with. Over the past couple of weeks I’ve been tinkering with it in the evenings and I’m absolutely blown away by this little device. With a $35 dollar price tag, the RPi is a surprisingly capable computer. You obviously won’t be doing some of the CPU intensive tasks you would be used to on your PC, but its a great way to tinker and learn and maybe find a great practical use for it along the way. After a little trial and error I’ve found an interesting application for it that I wanted to share. I’ve seen a few people contemplating using the Raspberry Pi to power a photo frame for the living room. I would just like to clarify a few things first. What it does What I used Raspberry Pi Model B 8GB SD Card Rapbian Wheezy How it works After you have a fresh install of raspbian wheezy on your SD Card, pop it into your RPi and boot it up.

firstround Andrea Goulet and her business partner sat in her living room, casually reviewing their strategic plan, when an episode of This Old House came on television. It was one of those moments where ideas collide to create something new. They’d been looking for a way to communicate their value proposition — cleaning up legacy code and technical debt for other companies. “We realized that what we were doing transcended clearing out old code, we were actually remodeling software the way you would remodel a house to make it last longer, run better, do more,” says Goulet. Today, she’s CEO of Corgibytes — a consulting firm that re-architects and modernizes apps. The most popular definition of legacy code comes from Michael Feathers, author of the aptly titled Working Effectively with Legacy Code: It's code without test coverage. This means code that isn’t written cleanly, that lacks explanation, that contains zero artifacts of your ideas and decision-making processes. The most important artifact?

exercism.io Naming is a process, not a single step « Arlo Being Bloody Stupid Many people try to come up with a great name all at once. This is hard and rarely works well. The problem is that naming is design: it is picking the correct place for each thing and creating the right abstraction. Doing that perfectly the first time is unlikely. This post is the first in an 8-part blog series. The easiest approach I’ve yet found for finding good names is to progress along a series of regular steps. (click for larger image) MissingNonsenseHonestHonest and CompleteDoes the Right ThingIntentDomain Abstraction At each step, I look at one part of the code, understand one kind of thing that is happening, have an insight, and write it down. Working effectively with indebted code Those of you who are reading ahead will wonder why I am focusing on names. The answer to that question lies at the heart of understanding, preventing, and paying off technical debt. The source of all technical debt Indebted code is any code that is hard to scan. Mine is. Working effectively with any code

Naming as a Process Archives - Deep Roots We all know naming is a pain in the ass and you can’t trust the names in your code. But it doesn’t have to be that way. Many people try to come up with a great name all at once. The two most terrible kinds of names are also the most common: Names that mislead you Important things that are just a part of something else, so they don’t even have a name. We have a thing with a name. I need to make my name fully describe everything this method does. Congratulations on having a completely honest name! Every improvement in our name until now has focused on what our class/method/variable does. Finally we are ready for the most important step in naming. Is your naming process effective for working with others?

Related: