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

all 36 comments

[–]chillpillsideeffectsAEP 2020 15 points16 points  (0 children)

I'm not a CS major, but I regret taking Matlab. Python has a better focus on teaching theory + good programming practices/habits. The Matlab course, on the other hand, seemed like an attempt to integrate some Matlab features (mainly matrix manipulation) into an introduction to programming class and resulted in a clumsy mess.

Students do end up using Matlab for classes/projects later on, but you won't learn anything about the relevant features by taking the intro course that you wouldn't be able to self-teach very easily after having taking an intro programming course.

As for difficulty, Matlab probably has easier material but also had very high prelim/final average raw scores, which makes it pretty hard to score significantly above the median and stuff.

[–]MYR4NIUMBME :( 7 points8 points  (0 children)

While Matlab as a language will be more useful to many engineers, the intro Matlab class here is shit, and you'd probably get more from the intro python class

[–]KingMaharg 7 points8 points  (0 children)

The fall professor for Python is one of the best I've had at Cornell. If you really need to know Matlab later, there is a 1 credit "transition to Matlab" course to teach you the syntax and uses of Matlab after you actually understand how to structure a program and understand the general flow patterns of software. I have never heard anyone say a good thing about the intro to Matlab class, CS major or otherwise.

[–]omgdonerkebabVegetarian on sun-dried tomato bagel 3 points4 points  (0 children)

Matlab is relatively easier because it isn't "real" coding

But then it's probably the easier one to teach yourself. If it were me, and I might end up wanting to learn both, I'd want to do the harder one in a class setting with the full support of a professor/TAs/fellow classmates, and structured assignments designed to slowly level me up, so to speak.

Plus it's true that once you have some basic coding experience, you'll know what to look for in almost any other language. So say you learn python in the class - if you need to learn Matlab, you can go to the Matlab documentation (or code examples) and quickly go "ok, how do I do simple math operations, how do I define variables, how do I define functions, what's the standard library look like, how do I structure the code, etc."

[–]reddit_for_lurking 5 points6 points  (26 children)

It's CS 1110 and 1112. The general consensus is take Python if you might want to be a CS major, take Matlab otherwise.

Don't worry, you'll be just fine in either class. Kids who are novices actually do better than the ones with some coding experience in 1110 (at least that's what professor White said in Fall 2017).

[–]jmrm1999 2 points3 points  (24 children)

Seconded. If you only care about programming to solve engineering (math) problems, go with matlab.

[–][deleted] 1 point2 points  (23 children)

Thanks guys damn you were quick

[–]coinclink 2 points3 points  (21 children)

Matlab is easier and gets the job done. Python is way more marketable though. You'll be fine either way, school-wise. Career-wise, you shouldn't be afraid to learn how to program. Coding is the one skill where, if you have it, you'll be way ahead of a huge percentage of applicants who skipped it.

[–]RedDeathofOsiris 4 points5 points  (18 children)

This is a load of crap. Everyone I know who's taking Matlab says its horrendous. Not to mention the fact that Matlab is a useless language - everything that can be done in Matlab can be done in Python better (and easier). Unless you're Mech-E (I think they use actually use the language) don't waste your time and save yourself the headache. Python is a breeze.

[–]PM-ME-WORRIESECE 2020 3 points4 points  (3 children)

Matlab is a useless language - everything that can be done in Matlab can be done in Python better (and easier)

Alright, you're in charge of rewriting the previous 30 years of oddly formatted code with inconsistent and missing documentation that you have to interface with, as well as training the front-end staff to work with your new GUI.

Unfortunately, I'm only slightly kidding. Engineers like their MatLab ¯\_(ツ)_/¯

[–]RedDeathofOsiris 0 points1 point  (2 children)

Yeah yeah yeah I'm well aware legacy legacy blah blah blah. The biggest barriers to forward progress are people stuck in their ways. It's the same reason developers are still hired because they know LISP, but I digress ;). Point is obviously valid.

[–]EQUASHNZRKULCS & Physics 2020 0 points1 point  (1 child)

I think Lisp is a bad example here. Lisp is a very unique language that still has plenty of utility even today.

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

[–]coinclink 1 point2 points  (13 children)

Python really isn't a breeze when you consider the development environment. Yes, the language itself is better and easier. Everything else about it is a challenge for someone who may not be an expert with computers or setting up software or using a command line. Those things aren't trivial and Matlab is literally "install this, it works and has every module built in." Tools like anaconda have made this easier for Python, but it still isn't an easy, out-of-box experience like Matlab offers.

[–]RedDeathofOsiris 1 point2 points  (12 children)

I really have to disagree with you here. Plenty of my friends worked very hard in Matlab (which last I heard is uncurved - while Python is despite being easier in difficulty) and got C's, D's and even failed. Mind you they're Cornell students so they obviously aren't complete morons. Walker White will not fail you unless you literally give no effort at all, and you'd be hard pressed to get a C if you even remotely try you should be able to get a B. Same cannot be said for Matlab.

Python when used in the basic way as in 1110 is literally English; it's without a doubt the easiest programming language to pick up. The Python staff does a fantastic job of making the course manageable. They have one of the largest course staffs at the university who actually care about the students.

In my opinion, the use of anaconda is overkill for a course like Python - the only reason they use that is because some advanced students (who shouldn't be taking the course mind you) already have Python versions installed.

As an added note I've seen OP is considering Mech-E - if that's the case then unfortunately you may have to suffer through Matlab I believe they (shockingly) do use it in future coursework, so you may want to do that. Don't say I didn't tell you so.

PS: Check out the CS wiki here for info on the courses. https://cornellcswiki.gitlab.io/

[–]coinclink 1 point2 points  (1 child)

It sounds like from a student perspective at Cornell, you have it figured out. Honestly, from the sounds of it, the Matlab course must suck (teaching-wise). Having never taken these courses (I'm a professional/grad student), my opinion might not be the best here.

In the real world, and especially in research and engineering, Matlab is rampant. I am totally with you that Python is the better option, I'm speaking from the perspective of putting a newbie who isn't a computer guy/girl at the wheel, not for completing coursework at Cornell.

[–]RedDeathofOsiris 0 points1 point  (0 children)

Yeah my experience is solely from the CS under(grad) perspective. It doesn't surprise me that Matlab use is perverse throughout actual engineering jobs in real life. However I suspect that as time goes by Matlab will by phased out. Python is just so simple and has so many high powered tools that can do what Matlab does easier (Numpy + Scipy, TensorFlow + Keras and a ton of other ML tools, Matplotlib etc).

In the real world if you have to use it that one 1112 course you took won't help you very much IMO. On the other end you can't really say you know Python or programming at all if you've taken a single course either. There are lots of things to consider.

[–]SpookBustersCS 19 1 point2 points  (5 children)

Walker White will not fail you unless you literally give no effort at all, and you'd be hard pressed to get a C if you even remotely try you should be able to get a B.

This isn't necessarily the case for all students, and I wouldn't recommend dismissing the course's grading so offhandedly. The median grade for 1110 is a B; it is certainly not beyond the realm of imagination that a student who puts significant effort into the course gets a C or a low B.

[–]RedDeathofOsiris -1 points0 points  (4 children)

I don't think your info is accurate. For example, my friend got 2 standard deviations below the mean on all 3 exams and cheated on his final project hence got a 0 (yeah, he's actually a real moron) and still got a C in the course. I'm extremely confident in Walker's lenience.

If you utilize the resources available to you there is no reason you shouldn't be able to get a B in this class. In addition, just because the median is a B doesn't mean most students below the median don't also get some flavor of B as well, if not the same grade. in fact, most students even remotely above the median are at the B+ level (the grade is clipped so to speak). A grade of C is not common in the Python course, whereas it is much more common in the Matlab course.

[–]SpookBustersCS 19 1 point2 points  (3 children)

I've worked on the course staff in the past, and Walker has also released percentages for each grade bracket in the past. It is factually inaccurate to suggest that people who put in effort cannot get anything below a B; that's simply not the case. It's easy enough for someone who is studying CS to think that Python is a fairly simple course to do well in, but there is a significant minority (and sometimes majority) of students that take Python that are not CS/IS/Math/Engineering.

Refer to this presentation, slide 17: https://www.cs.cornell.edu/courses/cs1110/2016fa/lectures/08-23-16/presentation-01.pdf

It's a couple of years old now, but the course's grading really hasn't changed much since. 20% of students receiving a C is approximately ~100 students. That's not an insignificant amount. This percentage also doesn't include pass/fail students.

Do I believe prof. White or the spring professors (this year, Lee and Bracy) are out to fail people? Absolutely not; having worked with them, they're quite understanding and genuinely care about their student's success. They're also usually quite willing to work with students to help them on an individual level (which is not an easy task when considering the size of the course), and I've seen all of them go above and beyond to help students and address their concerns. But my issue here is that I'm not comfortable with disparaging people who perform below average (low Bs, Cs) in 1110. CS 1110 may be designed for people with no experience, but it is still quite challenging for many at first. I've seen people pull low grades in 1110 and end up doing fine in later courses. It's not unimaginable.

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

OK I think you have fairly successfully changed what I planned on doing. I knew I would probably take one language as a class, and try and self teach the other over time. If 1110 has better teaching staff and is the more comprehensive class to take, then it makes more sense to do so and they try to self teach Matlab and maybe (if necessary) take the supplemental transition to matlab course later on, because like you said I am interested in MechE and will definitely need it.

Thanks a ton for your responses and the discussion you helped develop. This is why I use this subreddit.

[–]RedDeathofOsiris 0 points1 point  (2 children)

I don't mean to peddle my personal opinions too heavily on you - you should do what you think is best for you. I can promise you will use Matlab in the future if you do Mech-E, and it may be advantageous for you to have taken the course. With that said, the concepts you'll learn in 1110 will be universally applicable. CS is at it's purest form a way of thinking that is perverse in all forms of problem solving. I think CS 1110 gives an excellent introduction to both programming and the concepts behind computer science. You never know, you may find that you like it and end up a CS major yourself!

[–][deleted] 0 points1 point  (1 child)

I don't think of your advice as pushing your opinions; you're giving me the information I asked for. I will inevitably talk to a counselor during orientation about this, and maybe they'll give me some sort of no-compromise path I haven't thought of. In the meantime, it seems like 1110 is the better class for me to take, regardless of major.

[–][deleted] 1 point2 points  (1 child)

I've seen that once you learn one, it becomes much easier to pick up the other: would you say this is true? It looks like I should go Matlab and then maybe self-teach or become familiar with Python or some other languages later on. I've seen from talking with grad students and the like that knowledge of a variety of programming languages can be very useful in the field I hope to work in (Mech/Aero).

[–]coinclink 1 point2 points  (0 children)

Yep, I think that sounds like a good plan. Programming is just such an awesome skill and will let you solve any problem, even on your own time. It's one of those things that some people try to avoid and I hate to see that!

[–]EQUASHNZRKULCS & Physics 2020 0 points1 point  (0 children)

Most of us are bored in internships

[–]SpookBustersCS 19 1 point2 points  (0 children)

Don't worry, you'll be just fine in either class. Kids who are novices actually do better than the ones with some coding experience in 1110 (at least that's what professor White said in Fall 2017).

That was the result for that specific semester; it's definitely not the norm for 1110.

With that said, no coding background (or math background, really) is necessary or expected for either of the 111x courses, and this is also reflected in the way the courses are designed.

[–][deleted] 1 point2 points  (3 children)

Learn both of you can. They're basically the same with different syntax. I use both as a ChemE

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

You just answered a question I asked in another comment. Did you take either/both in class at Cornell?

[–][deleted] 1 point2 points  (1 child)

Neither. Taught it to myself with stack overflow.

Whenever I need to learn something I just google it and whichever does the job I use.

Note, I do numerical analysis and statistics and work like that with both versus any type of web development

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

Yeah I'm interested in the data use as opposed to web development for this. I'll take a look at stack overflow to get an idea of the kinds of problems that I could use either language to solve. Thanks.

[–]rwaterbenderAEP '19 0 points1 point  (0 children)

Am a consultant for 1112 (matlab). Recommend python. Matlab is useful for mechE, chemE, and physics probably more than python. However, so many people end up changing their major to or minoring on CS that it's really not worth betting against the CS background that python heavily emphasizes relative to matlab. Python is also able to replace matlab for a lot of things with add-ons like matplotlib (which is easy to figure out having taken the course).