Join 3,432 readers in helping fund MetaFilter (Hide)

Which of these CS courses should I take?
October 31, 2012 9:28 PM   Subscribe

Which introductory computer science course should I take? (I am a very special snowflake.)

I'm going to graduate college in Fall '13, and have a hole in my schedule. I would like to get hired to work in recruiting for a start-up in the Bay Area in about a year. To that end, I think it would be really beneficial for me to get some background in programming so that I can at least tell a good programmer from a bad one. I also just want some CS background so that I don't become a 30 year-old with no understanding of how modern society works.

My college doesn't offer CS courses, but we're in a consortium with schools that do. (Those schools are very clear on the point that they don't want prospective cross-enrollment students emailing professors about classes they might want to take, hence why I'm asking here. Also, my academic adviser is a Roman poetry scholar and not very helpful with this issue.)

My options for an intro programming course next semester are:
- 4-credit Java-based Intro to Computer Science for majors at a nearby highly-ranked university that isn't even remotely known for CS.
- 2-credit Python-based course targeted toward "non-majors and majors who want to learn a new language in a structured environment" at the same school. It won't fulfill any prereqs if I want to take more CS courses. If I took this, it'd be on top of a full courseload; otherwise I'd have trouble graduating on time.
- 3-credit Intro to Computing, which doesn't really have much of a description, but is offered at a top engineering school, so it's probably reasonably rigorous/modern. (Also, it might impress people a little if I did well here.) Getting there and back would be a strain compared to the other university, though. I guess this is intended for majors, but it's not very clear.

I don't really have much background in programming, though I've gotten slightly past the "Hello, World" level with both Java and Python before, and I'm trying to carve out a little time to work on it again. I tend to get a little intimidated by programming, I guess. I want to learn a fair amount of theory because it's interesting to me, and I don't think there's much of that in the Python course. However, I would like to be able to play with certain open-source projects eventually, and most of the ones that interest me are Python-based.

Other considerations: I want to go to law school 3-5 years from now, so I do care a little about whether this course will be a GPA killer. I might eventually want to take the patent bar, and I'm not a hard science or engineering major, so I'll need about 20 more credits than I currently have in hard sciences/engineering/CS in order to qualify. It's my understanding that the Python course probably wouldn't count toward those credits.

So, which course should I take? Thanks for any help!
posted by lemonadeheretic to Education (13 answers total) 3 users marked this as a favorite
I would definitely go for the Java course.

Intro to Computing might not even be programming focused.

It sounds like the Python course is for people who already understand programming fundamentals, which it sounds like you do not.
posted by seesom at 9:38 PM on October 31, 2012

The Python course description does specifically say that it's a good course for beginners with no experience in programming; sorry if that was ambiguous.
posted by lemonadeheretic at 9:41 PM on October 31, 2012

Can you link course descriptions or possibly course websites? "Intro to Computing" can mean a lot of different things.
posted by town of cats at 9:46 PM on October 31, 2012

This would be easier to answer if you didn't obscure the actual names of the courses and schools in question. I don't think it is possible to give a good answer based on the information provided in the question.

On preview: Agree with town of cats.
posted by phoenixy at 9:49 PM on October 31, 2012

I would like to get hired to work in recruiting for a start-up in the Bay Area in about a year.
As a software engineer, I have a hard time believing that an intro to CS class will make you a better tech recruiter. It might make you stand out from other tech recruiters and increase the chances of you getting a job, but I'm not sure it will actually help you do your job. Instead, listen carefully to your hiring managers, and ask them to repeat or explain themselves when the things they are asking for in a candidate make no sense to you. You'd be surprised how few recruiters do this. Or maybe you wouldn't, if you know how much pressure tech recruiters are operating under.
My options for an intro programming course next semester are [...]
I'd go with the Python course. Java is good if you want to do corporate work, but it isn't a particularly elegant or fun language to work in. The language itself isn't hard to learn, but it can seem a little verbose at times. The library is incredibly verbose, and that might be frustrating as you are getting started.

Python is a beautiful language. It might be a bit obtuse at times, but every effort you make to learn it will expand and exercise your brain. There are great online resources for learning more about Python. Python is also a much hotter language these days than Java. There may be more overall demand for Java programmers, but there is nothing cool about Java.

Intro to Computing doesn't really sound like it is rigorous to me. I went to a top engineering school, and took a bunch of the core computer engineering classes (even though I ultimately went for the CS major). The engineering classes were things like Intro to Computer Architecture, Digital Circuits, and Intro to Microprocessors. Those are seriously hardcore classes and will kick your ass if you don't have the right prerequisites down. I'd worry that "Intro to Computing" is a continuing-education refresher course for people who have been living under a rock for a few decades. I could be wrong, but that's my gut feeling.
I tend to get a little intimidated by programming, I guess. I want to learn a fair amount of theory because it's interesting to me, and I don't think there's much of that in the Python course.
CS theory and programming are two very different things. I have a master's degree in CS in part because I randomly took a hardcore theory class early on as an elective. It was mind bending, but intensely fun for me. The closest thing to programming that class was regular expressions, but we mostly approached them via finite state diagrams.
Other considerations: I want to go to law school 3-5 years from now, so I do care a little about whether this course will be a GPA killer.
When I did my CS degree in the '90s, the intro classes were all about gatekeeping. People who weren't in it for the long haul dropped the class or took a poor grade on their record. I managed to weasel my way out of the intro classes, and took crazy grad courses instead (I passed an entrance exam which allowed me to arbitrarily replace undergrad classes with the corresponding grad versions). Demand for software engineers has only gone up since then, so I doubt that an intro to CS course designed for CS majors is safe given your objectives. However, there has also been a corresponding uptick in interest in programming from people who just want to add that to their set of skills. Look for a programming class that isn't targeted at CS majors.

Edit: The secret to succeess in CS is having fun. The work is hard. It bends your mind in strange ways. It isn't like studying chemistry or English. The only way to survive is to do stuff that you are going to enjoy.
posted by b1tr0t at 9:49 PM on October 31, 2012 [5 favorites]

I second everything b1tr0t said. Python is the way to go, especially if you're more interested in startups than established "enterprise" companies.
posted by zsazsa at 11:54 PM on October 31, 2012

Software developer hiring manager here, and I'd advise you to take the 4-credit Java class if you can. Not because Java is a lingua franca or the hottest thing on the block, but because that class sounds like it would impart the most understanding of what CS majors are expected to know and it's accessible as an into programming course. The skills you'd learn would help you evaluate where recruits are coming from even if their background is in Python, Ruby, Javascript, C#, C, C++, etc. The reverse is not true - Python is so abstract that it's not very valuable as a sole language IMO.

I hire software developers quite often and I wish I could more often work with recruiters who take the time to understand their candidate's skills.
posted by SakuraK at 11:58 PM on October 31, 2012

> I think it would be really beneficial for me to get some background in programming so that I can at least tell a good programmer from a bad one.

That's a laudable, but unreasonable goal. Would you expect to be able to tell a good structural engineer from a bad one after taking intro to physics? You'll gain a lot from these classes, but the ability to winnow wheat from chaff will need to be developed elsewhere.

It sounds like the Python course is more in line with your personal interests, and Python is far more pedagogically friendly. Moreover, Python is definitely more "in vogue," especially with startups and fun, approachable open source projects. This seems especially valuable given your (totally reasonable) feeling of intimidation with regard to programming.

Java, on the other hand, has way more cachet with large, established businesses. However, the Java community tends to fetishize complexity, which doesn't seem like a great fit for your needs.

If you go the Python route, I'd also encourage you to search for a local "Python User Group" and regularly attend its monthly meetings. Not only is it a great way to develop a feel for the community and what good developers look like, but it's also an extremely fertile ground for recruiting, so long as you take the time to first build a strong, personal connection to the group.
posted by SemiSophos at 12:18 AM on November 1, 2012 [1 favorite]

My husband is a scientist, not a developer, but his work is heavily computational. When asked what language he would recommend for someone who has never before been exposed to computer science or programming, he will reply, "Python," without any hesitation. He himself finds it an incredibly useful language for writing wrappers, tools, and scripts.

I know a 4-credit Java course would look impressive on your transcript, but it will take up a lot of your time and energy and will likely move very fast. Taking it primarily to fill a hole in your schedule is probably NOT a good idea, especially if you have final requirements to fulfill in your actual major that might suffer if you're spending all your time trying to get an A in Java. If you're applying to grad programs, this could really pull down your GPA and damage your future plans.

I suspect most software startups would probably be somewhat impressed that you had any sort of programming knowledge at all, as a nonprogrammer, especially if you've done well and express a strong interest in getting into more complex programming languages in the future. And even though it can't be used as a prerequisite, it WILL make taking a more challenging course in the future that much less grueling (and even more enjoyable). It will give you an introduction to the basics of good programming, which is the most important thing.
posted by tully_monster at 6:10 AM on November 1, 2012

If you're just starting out, why not look to see if the school offers "Business Programming?"

These are generally much softer introductions to the trade as it is caters towards those who are majoring in other fields like Business, Accounting, etc. Normally the INFO/ISMN class is focused around Visual Basic. You'll learn a lot of the same concepts along the way too, just won't go in as deep into the math and "science" from the start. (things like variables, constants, scope resolution, if/then/while/for, object inheritance, passing by reference/value, functions, procedures, etc)

However that's not to say a CS class is not worth it. Within CS you'll learn more about program efficiency (Big-O notation, pointers, dynamic memory allocation, etc)

Being that you're interested in a start-up, I'm assuming you're also already familiar with a MBA, which the business programming kind of class would definitely compliment if offered. If you then want to delve deeper, it should be relatively easy to use the same learned concepts to C++, Java, Python, etc. Other than syntax, most programming languages are fairly similar.
posted by samsara at 6:31 AM on November 1, 2012

Python class. Sounds like it's low-commitment, and it's teaching you a skill that you're more likely to use in the future than Java. I think it's a great idea to learn something that will give you some background on the tech startups that you want to work at and help you understand the business, even if it doesn't directly translate to being better at recruiting/hiring. And while I agree with others that it won't help you separate good from bad programmers, it will help you speak the programmers' language more than you do now.

I would NOT take a course meant primarily for CS majors unless you want it to consume your life.

Regarding law school and the patent bar, 20 (!) more credits in hard sciences is a lot and will take you a long time. But since you said you "might" want to take the patent bar, I wouldn't worry about that now. There are LOTS of other paths than being a patent lawyer... but every patent lawyer I know has a very solid science/engineering background. (For context, I was a CS major in college and am now a technology-focused corporate lawyer, and decided not to be a patent lawyer because I can't stomach a lot of software patents.)
posted by chickenmagazine at 7:44 AM on November 1, 2012

To that end, I think it would be really beneficial for me to get some background in programming so that I can at least tell a good programmer from a bad one.

As mentioned above you're probably not going to get this out of any intro-level programming course. I was a CS major at a university with a good CS program, and I took one in-major intro-level programming course, one business major intro-level programming course, and helped other students taking an intro-level programming course for general non-CS majors. In each case they are almost entirely about teaching you the basics of how to write code in that particular programming language, the same that you would get from reading a "Learn Some Programming Language in Some Number of Days" book. The CS one probably had the best material in terms of covering best practices and giving you some grounding in theory, but it barely got past the point of describing what a linked list is, all of the real theory was in other courses including an intro-level CS theory course that I took in the same semester.

Personally I would probably go with the Python course. If this was architecture instead of computer science we were talking about, the course you are taking might be called Intro to DIY and you would be learning about hammers and 2x4s. Python is much more a DIY language than Java is, so getting just enough knowledge in Python to work on hobby projects can be useful because most of the resources around Python are geared towards those kinds of projects rather than huge structured enterprise systems.
posted by burnmp3s at 7:50 AM on November 1, 2012 [1 favorite]

If the Intro to CS course is at Stanford, MIT, or CMU, then take that. If it's at one of a few other schools that are strong in computer science like University of Washington, Berkeley, Cal Tech, UMass, or University of Illinois Champaign, then you should strongly consider it. Otherwise I'd recommend the Python course.
posted by A dead Quaker at 10:13 PM on November 2, 2012

« Older I'd like suggestions for assem...   |  For those better at recognizin... Newer »
This thread is closed to new comments.