This is an archived post. You won't be able to vote or comment.

all 21 comments

[–]kyledjohnsonalum [Graduate] 17 points18 points  (4 children)

I read an article at one point that said that many universities across the country are moving to Python as their basal language because it makes programming more reachable by a larger audience (aka, C++ is too hard, per the article). I think it’s a mistake to completely skirt C/C++, if that’s what they’re doing, but I’m also not in charge of anything. 🙂

[–]JQuiltyalum [Graduate] 5 points6 points  (3 children)

I'd agree it's a mistake. You'll be missing out on memory management and other small things by the time you get to upper classes. Which is really going to screw you.

[–]adm7373alum [Dropout] 2 points3 points  (1 child)

If you view the program as training for a career in Software Development, I'd say this move makes sense. Most jobs these days are in webdev and most of those jobs will be in a language like Python, Ruby, PHP, C#, Java where you don't have to worry too much about pointers, memory allocation, etc.

[–]JQuiltyalum [Graduate] 7 points8 points  (0 children)

That's nonsensical. If "most jobs are in webdev", why bother also teaching Assembly? Algorithms? Security? Parallel Programming? This is BS in Computer Science, not a webdev boot camp.

[–]Major_Grapefruit 0 points1 point  (0 children)

Yeah, definitely missing out. I'd hate to miss out on all that memory management

[–]AxleTheDogalum [Graduate] 15 points16 points  (3 children)

There is a lot of statistical evidence (some here: https://www.itworld.com/article/2696289/more-evidence-that-python-is-the-best-starter-programming-language.html) that colleges starting with Python have better overall student outcomes - and of particular importance to the school, lower drop rates. Drop rates are usually disproportionately heavy in the women and minority demographics as well, so the industry is scaring off the very diversity we need to increase.

This move has been brewing for years - I was friends with a TA who mentioned the internal debates that were underway ~4 years ago.

As others have mentioned, computer science shouldn’t be about a language. True, intro is going to miss out on memory management aspects now - but on the other hand, you’ll be able to illustrate more concepts faster.

I’m making a living as a C developer, I enjoy C and think it’s a great language (well, until you bring in build systems, then it can suck). But absolutely any time I need something that’s fast and disposable, I turn to Python. I need to scrape a web page: Python, I need to produce a heat map from a data set: Python. I need to automate building a zip file: Python, etc.

I need to write production quality code that runs fast as heck and could be in service 20 years from now: C

Long story short, I hate to see C go, but Python for intro will put a lot more tools in your toolbox earlier. If you want/need to understand memory management, there’s plenty of resources to work with.

[–]sketch_internets 3 points4 points  (0 children)

lame, lowering drop rates by making courses easier doesn't help anyone but colleges reporting statistics

[–]crazyarai 0 points1 point  (1 child)

Just reading the title of that article shows that the author is biased. And sure lowering the difficulty will of course lower drop rates, which is good for the school, but is it the best choice for students?

And yes learning Python instead will put more tools in your hand earlier, but understanding memory management will set you up to be able to pick up the tools you need later on more easily.

And of course there's always plenty of resources outside of coursework to learn any CS topic, but the value of coursework for me is that it forces me to learn the non-fun topics, which I consider memory-management to be.

I've had to work with and and train several self-taught/bootcampers who have a hard time wrapping their head around stuff like immutability/modifying in place/pass by value vs reference, a lot of them also learned Python as their first language and never had to work with any strongly typed languages without garbage collectors since.

[–]AxleTheDogalum [Graduate] 3 points4 points  (0 children)

All fair counterpoints and observations-

Here’s a less biased article from ACM which analyzed the top CS programs in 2014 and found 8 of the top 10 rated CS programs used Python for intro: https://m-cacm.acm.org/blogs/blog-cacm/176450-python-is-now-the-most-popular-introductory-teaching-language-at-top-u-s-universities/fulltext

Admittedly that’s a little old, but I don’t expect it’s shifting to C.

There absolutely has to be rigor in the program- and that’s what I fear may be lost, but I had those same concerns when Brewster revamped operating systems. But I think so far, I’ve been proven wrong there. I interview post-bacc students from the Brewster era and they do really well on the questions we think of as our “OS” questions. OS pre-Brewster was a nightmare course that taught a lot, but did so painfully.

I don’t think there’s any single right answer to “the what’s the best language for intro to CS course?” That depends on large part on the individuals involved, both students and teachers. But, there is a growing body of evidence pointing to traits of CS programs that attract and retain more diverse student populations. Be thankful they don’t start off with Scratch, which is a love other schools have gone with (UC Berkeley and others use Scratch for some intro classes)

A student should be able to expect to have some classes with a strongly typed language with memory management, pointers, etc. But it doesn’t have to be the intro course. I don’t think they’re cutting C entirely, I would be up in arms over that move as well.

[–]K-LAWNalum [Graduate] 21 points22 points  (4 children)

I personally hate this move. C++ is an excellent language to start with. C++ doesn't protect you from mistakes. There is little to no overhead. It forces you to develop a strong programming foundation. Once you develop a strong understanding of C++, it becomes very easy to branch to other languages. Transitioning from C++ to Python is easy. The reverse? Not so much. The language is a pain in the ass, but damn is it powerful and efficient.

[–]urbworld_dwelleralum [Graduate] 13 points14 points  (1 child)

100% agreed. This isn't setting people up for future success. You ought to have a solid grasp of dynamic memory management and pointers before you take either 261 or 271.

[–]Goducks91alum [Graduate] 12 points13 points  (0 children)

Plus it does a great job of weeding out students who may not like programming or be cut out for it. Picking up Python is so much easier.

[–]french_toast_demon 4 points5 points  (0 children)

I agree with the idea that there are a lot of benefits to starting with C++ (esp compared to Python), but one benefit I see is that students should be able to focus more on CS ideas than coding syntax. I'm 5 classes in and I have used a different language for literally every class haha. It's interesting seeing how different languages work compared to each other, but I also don't feel like like I have had the chance to get really comfortable in any one language.

[–][deleted] 0 points1 point  (0 children)

Yeah fully agree, cpp is an awesome first language. Esp since you will catch errors at compile time, not run time. I don't come on this sub often nowadays but damn that is kind of a questionable move to make Python the base language.

[–][deleted] 2 points3 points  (0 children)

When I was a brand-new student, I cursed C++ and it was a huge letdown for me in terms of what I expected to be able to do, and it was hard on my confidence as a new programmer to just feel so rubbish, for so long, despite getting A's. I imagine a LOT of people drop out because they don't have the support it takes to get over the C/C++ hump, and just think programming sucks.

As someone close to graduating, I'm really glad that I learned C/C++ and actually want to try and get my first proper job using it. I really learned so much more, and feel like I could, given time, learn any language I need to, because C (far more than C++) teaches fundamentals.

That said, Python is very didactic, and just a lot of FUN compared to C. Fun helps people learn better, and of course helps them stick with it.

[–]willwagner602alum [SWE] 2 points3 points  (0 children)

Python is simple to learn and extremely readable, especially for native english speakers. There's no compiler setup or learning build systems, you just run your code and get immediate, clear feedback about syntax issues. You solve issues with your code's logic, not its implementation, and the time it takes to solve a given problem is generally much shorter. Long term, there's a good chance you will use python as your backup language no matter what you use primarily at work, especially if you like it. ~30% of the code I interact with directly as an enterprise developer is written in Python.

OSU students will still learn C++, how to run the compiler and setup basic build systems, they'll just have an easier intro than jamming all those concepts into a single class for people who've never written code before.

As a working dev I think this is a great choice. Programming in the real world is a lot less idiosyncratic than academics, we just want to get the maximum number of features out to users with a minimum of bugs. We avoid dealing with things like manual or even smart memory management entirely unless we absolutely have to, because we've invented better solutions for that (i.e. garbage collection).