Fog Creek Software
Discussion Board

Where to study Computer Science online?


I´ve learned on my own to code using a simple tool like RealBasic. I want to study online, to give my knowledge a formal foundation. I have time and I´m not in a hurry. I´m 35 and I don´t code for a living, but I´d like to learn the right way.

Anybody knows about a good source of online courses? Also, I´m not sure if I should study "programming" or "computer science". I plan to learn in a 5 year period. My desire is to be able to apply for a programming job if I want to in the future.

thanks a lot, if you know something useful please email me.


Juan Pablo Garcia
Saturday, January 10, 2004

You'd better think about it as full-time. Most BSCS (Bachelor of Science, Computer Science) students take between 4 and 5 years to complete their degree program, and even then they're far underqualified when they actually graduate.

I'm not saying you can't do it in 5 years, as per your goal, I'm saying please don't underestimate the task at hand.

I got a BSCS in 4 and a half years. I coded, read, studied, researched, attended classes, lectures, labs, etc. for roughly 10 hours a day, 6 days a week. It ain't easy to pack 75 years of computing fundamentals into a 5 year program.

Be prepared for a lot of work.

Sgt. Sausage
Saturday, January 10, 2004

developed offshore too

Tom Vu
Saturday, January 10, 2004

Sounds like you are not looking to get a CS degree, so don't worry about packing it into five years. You will not be learning the equivalent of a CS degree on your own (Language, History classes are not required for personal study).

Keep in mind what your goals are. Are you looking to get a job doing this, or is it that you want to find out everything you can about computers to fulfill a passion. You can focus on some modern languages, say C# or Java and then combine that with the fundamentals of writing effective software. You can also spend a lot of time in theory-land.

MIT has some courses online. Another place to look is Joel's book recommendation (particularly Code Craftsmanship and I Wanna Be a Programmer). Ultimately if you are looking to add languages to your toolset, nothing beets time and a good book.

Also, start looking for jobs in testing or other jobs that get you close to the programming world.

Good luck!

Saturday, January 10, 2004

I don't understand why people harp on that OpenCourseware site. It's not that impressive, and it's really just a lot of clerical work to get syllabi and some PDFs posted on a web site. At least, that's all I saw for the classes I checked out.

The courses at are really nice, and there's video. The <a href="">SICP</a> class is particularly good. I've watched most of those lectures.

Robert Sayre
Saturday, January 10, 2004

Thanks for the comments so far. I agree that I can get by without a full program and that I must take it easy because it is a hard effort to do.

I´m talking about coding work, and my fear is that I´m used to think about something and then doing it, but I never follow the established rules and things get harder as I find myself reinventing the wheel. I´d like to learn how to do things right. But, if i get an interesting book about good practices, they all supose that I´m a programmer, but I lack a lot of common programmer knowledge in math, etc.

I´ve learned a LOT on my own, starting form scratch with a book and now I know the basics about OOP. I feel like I can accomplish everything I want to do but I´m sure I will do it the incorrect way :-)

I´ve found that I love to solve problems and that I can do it, so I dream with becoming a "real" programmer someday. I put a lot of passion daily in a software product I´ve made, and my beta testers use and love it, but I´m not prepared to join a team working on anything because of my lack of knowledge. Today, if I must pay with sleepless nights my ignorance, it´s my own problem, but I want to change that in the future.

thanks again,


Juan Pablo Garcia
Saturday, January 10, 2004

Saturday, January 10, 2004

JP - At the end of the day, what counts is solving a problem for your customer as a programmer. If you are a consultant, employee or anything in between, your end goal is to meet the requirements of the person paying you. Often, the person paying you doesn't give a hoot about whether your code is "correct" by the standards of the experts. Be sure that in this profession you will constantly be improving your abilities and methodologies. The best way to get good at solving problems is by solving problems. As with any skill, we get embaressed by our early attempts, but improvement is what comes with time. Don't feel as if the variable police will swoop in and inspect your variable naming convention or anything. The only person who will ever look at your code besides you is other programmers - and let me tell you, they don't like anything but their own code.

Happy Coding!

Saturday, January 10, 2004

Well, I know that users don´t weight the quality of code, but sure they ask for fixes and improvements that can be better done if well started and maintained.
I don´t want to learn because of them or anybody snooping at my code, but because I suspect that if people uses 5 or 6 years studying what I have learnt from a book or two, they should know more stuff (and usefull one) than me.

Suppose I must hire helping people, I will spend 10 years for a seasoned programmer to understand my code, although my users are happier everyday and they don´t mind that I´m here at 3:30 AM fixing a bug...

And, if I want to work for someone coding, he will expect me to solve problems at the end of one day, not one week.

I´ve been looking at courses, and they are fine. I will study them but will continue searching something formal that gives credits, and on target for my possibilities.

I thank the help of you all but I don´t want to search books or references in Google as I have lots of them, I want a formal course with a schedule online. Does this exist?



Juan Pablo Garcia
Saturday, January 10, 2004

Arsdigita had a kind of university for a while. They still have streaming video of their lectures online:

You can get the lot on an 80gig harddrive too if you send them $160 or something.

Matthew Lock
Sunday, January 11, 2004

I highly recommend a university education if you're in the position to afford it....

But having said that, I am self-taught in a lot of respects for CSC(caveat, I did get a BS in Electrical Engineering). The internet is AWESOME for learning really deep things and getting better. There is a burgeoning movement for "open source textbooks". Basically, professors and students alike are getting tired of the price gouging of publishers coupled with a lack of quality.

I have been trying to collect a list of all the free high quality sources that are out there onto my webpage. Most of the links on it are free online books, but some are not.

Yeah, there are links, opinions, and grammar on my site that are worthy of a lot of criticism, but oh well. If you're serious, most of the stuff on there should be a good start.

Sunday, January 11, 2004

Oh Thanks!
I´ll give it a try to your links, and if I get engaged, I´ll keep doing what I´ve been the last 20 years of my life...learning by myself.



Juan Pablo Garcia
Sunday, January 11, 2004

Robert and Matthew, thanks for the great links to Arsdigita.  I hadn't heard of this before, and it looks great -- like what the OpenCourseware site ought to be.  I'm thinking about springing for that hard drive collection.

Robert Jacobson
Sunday, January 11, 2004

I don't know if studying on the Internet is such a good idea. I mean, it might be acceptable for finding information, but it just seems to me that the Internet is about moving around quickly -- it's an ADD-driven clickfest. Boom, boom, boom. That's why I think ebooks will never be big.

Computer science requires a lot of concentration and thought. It's very hard. :(

Warren Henning
Sunday, January 11, 2004

To Juan: Hey, if you enjoy those links let me know, and if you find some stuff not on my page, let me know about those too.

As to studying on the internet and "ebooks". The "ebooks" I link to are PDF's, and frankly, its a lot simpler to print them out. The better ones I take to a print shop and have bound.

And to the internet being for ADD people only, you should check the aid to researchers such things as the ACM Digital Library and Citeseer are doing. The ACM DL has EVERY paper published in an ACM Journal. Citeseer indexes bibliographies of research papers forward and backward. Its really great once you find a cool paper and want to see what's been done since. Citeseer usually has the full text as well. The adfest crap you talk about is usually from commerical sites, researchers and professors writing text books and putting notes online are usually doing it to do what they ALWAYS have: sharing their research(sometimes out of the goodness of their, sometimes because they want the "fame" that comes from it.
(unfortunately, you have to have a subscription to this one, but many universities have them, like mine :).

Sunday, January 11, 2004

Well, Strucutre and Interpretation of Computer Programs: is an excellent online book that introduces the reader to the concepts of modular programming through the Scheme language.

For learning Perl online you can refer to:

Perl is a very useful and enlightening language.

After you have learned some high-level languages, you should learn C, because it is low-level and would make you understand better how a computer works. (I learned C from books and experience so I cannot recommend a good online resource).

Finally, a better way to learn is to experience in things. By contributing to an open-source project, you can get practical experience in programming. You can find a great deal of open source projects in Freshmeat ( ), SourceForge ( ) and other places. You can contact me (shlomif(at) and I can give you some work to do on some of my projects. (albeit you can choose others if mine don't interest you too much).

There may be local computer clubs in your residence that give regular presentations. Things like Linux User Groups, Perl Mongers, etc.

I may comment on this further, but I have to go now.

Shlomi Fish
Monday, January 12, 2004

Hi Titivillus, you make me remember about what a friend of mine says about internet users: some of them are surfers, as they go propelled by waves and go over the top of waters. Others are divers, as they go deeper and deeper looking for interesting stuff they share with others. Perhaps my friend has borrowed that concept, but I´ve read it from him first.

Sidenote: as I try to thank Titivillus and the other person, I don´t have his text cited here, so I find that this forum about software design could be improved with a little work. Am I wrong?

So for you "other person whose email ends with .il", sorry but I can´t remember your name now (I will find out hitting back in the browser in a minute): thanks a lot for your advice, and I will get in contact with you soon.

One of my wishes is to learn Objective C, but I have not so much time because I´m developing an application in RealBasic that eats all of my free hours.



Juan Pablo Garcia
Monday, January 12, 2004

*  Recent Topics

*  Fog Creek Home