• C++ Programming for Financial Engineering
    Highly recommended by thousands of MFE students. Covers essential C++ topics with applications to financial engineering. Learn more Join!
    Python for Finance with Intro to Data Science
    Gain practical understanding of Python to read, understand, and write professional Python code for your first day on the job. Learn more Join!
    An Intuition-Based Options Primer for FE
    Ideal for entry level positions interviews and graduate studies, specializing in options trading arbitrage and options valuation models. Learn more Join!

Why Computer Scientists find it hard to get jobs

Kings College students/victims told me that they do operating system internals in Java
WOW. JUST WOW. I'm a high school student... and I find that fucked up...

Now I really appreciate US "crappy" education... haha.

And if I say, no Dominic, you're not an old git, you're young handsome, and not a git, does that give me a boost in future networking ability xD

If you haven’t trashed your computer while doing something
questionable, then you’re not a computer scientist – you’re just
an arts grad who didn’t get laid
Genius. ^^^
 
Dominic - not sure if it is still the case but Hallam University in Sheffield used to teach on their Software Engineering course:

C++
SQL (Oracle)
Java
HTML/CSS/JS
Boolean Algebra/Z Spec

Amongst many other things.

This obviously contrasts with some of the courses mentioned above and Hallam is an ex-Poly.
 
At CCNY they were testing using Python as their first language in the Introductory Computing course, instead of C++ last year. It was just a couple sections, but I got into quite an argumentwith them about it, as the people from the class were in a following Data Sturctures class I was in.

Python is a fine language, but so much of everything as done for you, I don't feel it's a good first course in programming, it's too easy. If you are trying to be an actual CS major in an engineering school, you should be doing c++ and have courses on several languages. In the following Data Structures (in C++) the Python people had no idea how to translate well, several concepts were very foreign to them, like memory management. Don't get me wrong, like Python, but I think it's something you chose to use because it's fast and powerful, but you understand what it's doing because you've done other languages. What next? Eventually programming is going to be a visual interface of boxes with simple keywords to get things done? What happens when what you want to do is HARD and none of it is covered in your standard library?! Better call tech support, or start searching google stat.

I think schools are bending to the fact that many engineering courses require 1 programming course, and they want to make it easier for those people that will never program again, I think it's a mistake. Have a programming course for non-CS majors, and do that. I just felt if they went that route no-one would really learn anything deeply, or be inspired to write their own language, or even question the way we program today, as Dominic's article highlights.
 
At CCNY they were testing using Python as their first language in the Introductory Computing course, instead of C++ last year. It was just a couple sections, but I got into quite an argumentwith them about it, as the people from the class were in a following Data Sturctures class I was in.

Python is a fine language, but so much of everything as done for you, I don't feel it's a good first course in programming, it's too easy.

Languages like Python and Ruby serve as good introductions to programming for those who have no prior background precisely because one doesn't have to worry about things like memory management, multiple inheritance, and pointers. One can concentrate on basic programming ideas (like looping, arrays, methods, functions, classes, instantiation, and simple inheritance). I know of at least two programming texts designed for comp sci majors that use Python. Come to think of it, C# and Java don't allow multiple inheritance either, circumvent the use of pointers, and take care of memory management.

Should comp sci students start with C++? In an ideal world, where they had already been exposed to programming in high school, sure.
 
MIT already switched to Python from Schema. There are various interviews with Sussman about this decision.

For example, you can find it here:
Why MIT now uses python instead of scheme for its undergraduate CS program | cemerick

The world isn’t like that anymore. At some point along the way (he may have referred to the 1990’s specifically), the systems that were being built and the libraries and components that one had available to build systems were so large, that it was impossible for any one programmer to be aware of all of the individual pieces, never mind understand them ... Robotics is a primary example of the combination of these two factors. Robots are magnificently complicated and messy, with physical parts in the physical world ... Why did they choose python? Who knows, it’s probably because python has a good standard library for interacting with the robot.
However there is no single word about C++, pointers, recursion etc.
Sussman provides completely different reasons from what you can read on Spolky's site where he rants about "JavaSchools".
 
A fair point.

After finishing school at 16 in England (back in the 90's) I did a Btec as part of my studies before going to Uni.
The course lasted two years and included COBOL, Assembly and Pascal (amongst some other very interesting subjects).

Part of our final year project was three applications that had to be developed in the above three languages. I can't imagine A level CS courses even begin to touch on these subjects now.


Should comp sci students start with C++? In an ideal world, where they had already been exposed to programming in high school, sure.
 
my 2+ cents.

- C++ is not a good language to start with. Memory management is a huge pain that people should not be subjected to and multiple inheritance was a bad idea from the get go. To the point that all compilers out there do different things when it comes to multiple inheritance.

- The implementation of SQL in Oracle was not very standard last time I checked. The most compliant implementation was DB2.

- Python is very clean and readable. That's why I think it's great for beginners. It also has a huge library.

- LISP/Scheme and its dialects, on the other hand, are beautiful (or ugly - if you don't like parenthesis). They force you to really think about your solutions. That's how you should spend your time, thinking about the solution, not writing the solution.
 
- LISP/Scheme and its dialects, on the other hand, are beautiful (or ugly - if you don't like parenthesis). They force you to really think about your solutions. That's how you should spend your time, thinking about the solution, not writing the solution.
LISP stands for Lots of Irritating Stupid Parentheses.

Caltech moved from Scheme to Python for its Intro to CS course within my 4 years there. I took the Scheme version and it was certainly intellectually challenging. Interesting if I wanted to be a CS major. However, everybody complained that it was a "useless" language. If there's enough functional programming/lambda calculus in Python, I'd be all for it. That is really the heart of a Scheme based intro class. If you can do that with Python, you've taught what you've needed to teach while also running in a very useful language. I remember our profs would write Python scripts to check our C programs.

The next required CS course though was in Java. I'm not sure about the rest.
 
I really don't care what your introductory lanaguage was. My own sons started witch Scratch & Alice and their first 'code' language was VBA. If some school choses Python, Java, or Lsip, it matters not.
I have a big issue with those that only use one language, and sadly often that is Java.

I also don't care about standards all that much. Oracle SQL is not standard, but there's a lot of it about. But even that is not the issue. I genuinely don't care what SQL you learn, just so long as you do the harder stuff in DBs like different types of join, referential integrity, locking etc.

There is a difference between can't program in C++ and doesn't program in C++

If you can't master C++ to a base level of competence than you shouldn't be writing software.

You may of course hate the syntax, the entertaining issues you can have with pointers, etc and decide thaty another language is more productive or lucrative. That is a good decision, even if I would make a different one sometimes.

But if the concepts in C++ scare you, then I have to question whether you are someone who does things to computers or in fact someone that computers do things to.
 
But if the concepts in C++ scare you, then I have to question whether you are someone who does things to computers or in fact someone that computers do things to.
That's a good point. I always took the concept of a pointer for granted. Yet my parents, who programmed VB for a long time, always referred to pointers as the hardest thing to master in C/C++.

It amazes me when other people fail to understand this concept; the name is so suggestive! A pointer POINTS to a memory location...

OO concepts too... they are not difficult. Yes there are many details to attend to and design patterns to learn, but ideas like inheritance and virtual methods are not that hard to figure out...
 
But if the concepts in C++ scare you, then I have to question whether you are someone who does things to computers or in fact someone that computers do things to.

That's my point, they need to separate who is serious and who is not. For those that have already done some programming in high school, they should be able to pursue an advanced track.

If you're just doing one course and never doing it again, fine, but if you're trying to make it a career it should be a lot more intense than what I've seen.
 
"OO concepts too... they are not difficult. Yes there are many details to attend to and design patterns to learn, but ideas like inheritance and virtual methods are not that hard to figure out... "

I agree.

That's why so many class hierarchies are semantically wrong. Classes are context-sensitive and unstable (well known in cognitive science).

Just because it is easy does not mean that it is corrrect.

There is a trend in C++ these days: less inheritance, more templates and compile-time behaviour.

Example; How to model - let's say - a frog in OO. I bet there can be zillions of answers.<!-- / message --><!-- sig -->
 
Back
Top