PDA

View Full Version : Designing a CS/ICS/CIS Independent-Study Curriculum


Mogura
02-15-2009, 03:48 AM
Say you wanted to gain an education and experience in CS/ICS/CIS equivalent to that gained in a university undergraduate degree, but you wanted to do so without formally enrolling in a college/university degree program. In other words, you decide that you want to gain all of the knowledge through independent study (i.e., cracking the books on your own terms).

As someone with a formal undergraduate degree and experience in the field (and the hindsight of knowing which courses were valuable to a career vs. which are not), how would you go about designing this independent study curriculum? In other words, if you were to compile a reading list of suggested books/texts (titles, authors) that are essential to such an independent study program, what would be your suggestions?

Obviously books/texts that are conducive to independent study would be ideal (e.g., not those that are a cure for insomnia), as well as those that get straight to the point and don't go into esoteric bits of knowledge you may use once every 3 lifetimes.

What do you say? Anyone interested in contributing to this project? We could break things down the way in which an actual undergraduate degree program is broken down. For example, what would be your suggestion for CS101 (Introduction to Programming) to start?

ReasoningMind
02-15-2009, 04:46 AM
I would like to join in the quest!
I studied some physics, calculus and programming till now.

Stanford has some online video classes and stuff, called engineering everywhere; as well as MIT open courseware I have heard, would you consider these as well? Maybe as a starting point or foundation to build on?

HackerX
02-15-2009, 05:11 AM
There's an inherent problem with this.

a) You don't have the piece of paper at the end &
b) In a CS degree, you don't "learn" anything technical. You are practically expected to know a large majority of programming details. University/College isn't about learning those details, it's about learning "how to learn", how to work as a team, getting all the non technical skills up.

As somebody who works in the industry, I couldn't care less about any old 1 trick programmer. It's pretty paramount that a programmer (working in my job) is able to basically slot into any language. Being a competent analyst is far more important, and ultimately the language you work with just doesn't matter.

Any books discussing design patterns is probably worth having. Websites discussing bad practices and why they're bad are good too.

Note: I have a Bachelor of Information Technology, majoring in Software Engineering. I'm told (and from what I've seen) it's the equivalent of your CS degrees.

foobar
02-15-2009, 07:47 AM
HackerX's degree sounds like a mostly theoretical course to me (Software Engineering is more about designing software and planning how the bits will fit together in theory -- though that's an over-simplification).

Pure CS degrees in the UK usually have both technical and theoretical sides. You will definitely be expected to know how to code by the end of the course, and you'll have to do a "major software project". If you are really interested in CS, I suggest you start by learning how to write simple programs first -- I recommend Python (To view links or images in this forum your post count must be 2 or greater. You currently have 0 posts.), which should indirectly teach you some of the theoretical stuff as well.

Also, you could get involved in Open-Source (not necessarily development; there's bound to be something you can help with).

There must be more material about CS online than for any other subject, and I'm sure one can become a better computer scientist through self-study than any CS degree can make them. The only problem is as HackerX said -- will you be able to market yourself?
With the current economic crisis where so many fully-qualified people are losing their jobs, you don't really have much of a chance I don't think...

If you really are serious about this, and are willing to budget for it, but can't afford going to a proper uni, you could consider the Open University To view links or images in this forum your post count must be 2 or greater. You currently have 0 posts. .

nacht
02-15-2009, 08:24 AM
Say you wanted to gain an education and experience in CS/ICS/CIS equivalent to that gained in a university undergraduate degree, but you wanted to do so without formally enrolling in a college/university degree program. In other words, you decide that you want to gain all of the knowledge through independent study (i.e., cracking the books on your own terms).

As someone with a formal undergraduate degree and experience in the field (and the hindsight of knowing which courses were valuable to a career vs. which are not), how would you go about designing this independent study curriculum? In other words, if you were to compile a reading list of suggested books/texts (titles, authors) that are essential to such an independent study program, what would be your suggestions?

Obviously books/texts that are conducive to independent study would be ideal (e.g., not those that are a cure for insomnia), as well as those that get straight to the point and don't go into esoteric bits of knowledge you may use once every 3 lifetimes.

What do you say? Anyone interested in contributing to this project? We could break things down the way in which an actual undergraduate degree program is broken down. For example, what would be your suggestion for CS101 (Introduction to Programming) to start?

I agree completely with HackerX, I am a professional software engineer and work at a senior level. People who can't learn and can't do analysis are useless to me, people who don't know a technology but can learn and can do analysis I can work with in just about any capacity.

Introduction to Programming is the least important class you will ever take. Math classes are probably some of the most important, because they teach you how to reason and how to think about systems. How to abstract them, how to understand them, how to work with them and prove them. These skills are some of the most valuable.

Now, some cautions: Don't conflate CIS, SE, IT, and CS. CS is about theoretical programming, SE is about architecture and design in real-world systems, CIS is about the business side, IT is about getting things working. Don't get caught up in the language of the month (To view links or images in this forum your post count must be 2 or greater. You currently have 0 posts.).

It is also necessary to have some scope of the problem, to have tried to apply yourself to areas outside of SE/CS.

I have an old piece I put together for aspiring programmers that I'll try and find, in the meantime:

This is a sample curriculum (To view links or images in this forum your post count must be 2 or greater. You currently have 0 posts.):
- Calc I-III
- Physics I-II
- Chemistry I-II + Quantitative Chemistry
- Earth and Environmental Systems
- Engineering Ethics
- Programming Concepts (2xx level, not 1xx level)
- Principles of Economics
- Engineering Design I-II
- Data Structures
- Differential Equations
- Linear Algebra
- Software Engineering
- Probability and Statistics
- Machine Organization and Assembly
- Discrete Math and Algebraic Structures
- Design and Analysis of Algorithms
- Introduction to Scientific Computing
- Operating Systems
- Principles of Programming Languages

+ An area of special interest + Electives

For examples of how these classes can break down, start with OCW (To view links or images in this forum your post count must be 2 or greater. You currently have 0 posts.).

In terms of languages I'll second that a good one to work with to start is Python (To view links or images in this forum your post count must be 2 or greater. You currently have 0 posts.). It will let you do everything from the very basic things without much fanfare to some extremely complex things.

Which books and authors I recommend depend on which class.

Monte314
02-15-2009, 12:08 PM
Dr. Larry Holt and I put together the CS curriculum used by Rollins College (Winter Park Florida) using the curriculum guidelines developed by the Association of Computing Machinery:

To view links or images in this forum your post count must be 2 or greater. You currently have 0 posts.

mcyhon
02-15-2009, 12:11 PM
There's an inherent problem with this.

a) You don't have the piece of paper at the end &
b) In a CS degree, you don't "learn" anything technical. You are practically expected to know a large majority of programming details. University/College isn't about learning those details, it's about learning "how to learn", how to work as a team, getting all the non technical skills up.

As somebody who works in the industry, I couldn't care less about any old 1 trick programmer. It's pretty paramount that a programmer (working in my job) is able to basically slot into any language. Being a competent analyst is far more important, and ultimately the language you work with just doesn't matter.

Any books discussing design patterns is probably worth having. Websites discussing bad practices and why they're bad are good too.

Note: I have a Bachelor of Information Technology, majoring in Software Engineering. I'm told (and from what I've seen) it's the equivalent of your CS degrees.

That is interesting... Being a competent analyst is far more important. That's good to know... I am still a student, a 4th year student in IT management, focusing in database, but i won't just focus on that entirely.

HackerX
02-15-2009, 05:29 PM
Now, some cautions: Don't conflate CIS, SE, IT, and CS. CS is about theoretical programming, SE is about architecture and design in real-world systems, CIS is about the business side, IT is about getting things working. Don't get caught up in the language of the month (To view links or images in this forum your post count must be 2 or greater. You currently have 0 posts.).


Well, there is no "CS" course offered over here. SE (It's called SA now, software architecture) covers both your theoretical and your "practical". On top of your basic SE classes, there is essentially 1+ years worth a electives allowing you to specialise in different areas (Either more CS type subjects, or by crossing majors into the IS (normally anyway)).