Are colleges out of step when it comes to their programming language courses?

Thread Starter

Jeff Child

Joined May 18, 2022
2
With a new school year coming up, this is a question that's been nagging me over the years.

When I was in college (over 30 years ago--I'm old), I majored in Electrical Engineering but then changed majors to Computer Science.
At the time, C and C++ were the mainstream programming languages being used in the electronics system design industry in general.
But I remember being annoyed that the college(s) I went to only taught programming languages like Fortran, and that useless "academic" language Pascal.

In recent years, I worked with a lot of Cornell engineering students on project articles---pretty much all Microchip PIC32 based projects--and the programming language they used--- for about 90% of them -- was Python. I don't know how Python ranks these days as a language used in the industry, but I definitely hear a lot of buzz about it.

My question is, have any of you had a similar experiences in college where they didn't offer programming language courses that were in synch with the times? And has that situation gotten better to your knowledge?
 

WBahn

Joined Mar 31, 2012
26,841
What constitutes being "in synch with the times"?

The language du jour varies widely depending on the particular industry or subindustry a person ends up in. Someone doing real-time control is not likely to be using the same language as someone doing web front ends as someone doing database backends as someone doing machine learning data analytics.

The focus of introductory programming classes is not (or at least should not be) in training someone to program in a particular language, but rather how to solve problems systematically and develop algorithmic thinking skills that happen to use a particular language to implement those algorithms. This can be taught using nearly any language, though some languages lend themselves to some aspects of it better than others, with no language that I'm aware of really capturing all of the skills.

It's been a while since I've paid attention to the trends, but I think Python and Java are probably the two most widely used languages in CS0 and CS1 courses. CS0 courses typically target people that are NOT going to be doing a lot of code development in their career or as a friendly teaser to attract people that have never programmed into a CS or engineering major. CS1 courses are intended to be foundational for people pursuing a CS or relative technical degree.
 

WBahn

Joined Mar 31, 2012
26,841
As a follow-up, most Comp Sci programs have, at some point, a course called "Programming Languages" or something similar. The general idea there is to talk about the under-the-hood concepts used by different programming language paradigms. These often involve having to write at least some code in a functional language and often a few others as well. One book that is (or at least was) used in many of these courses was "Seven Languages in Seven Weeks".

Harvard's well-regarded CS50 course has students program for a week in Scratch to get their feed wet, then C for several weeks, then Python and then JavaScript.

Personally, I like C being in the mix because it forces people to think very deliberately about the details of what they are doing. It punishes people quickly for being sloppy. It also makes you think about your algorithms at a very fine level of detail, which makes it much easier to understand how other things, like data structures, work later on. I've seen LOTS of students that have only been exposed to Java or Python and have been allowed to use their extensive libraries from day one completely flounder in their later courses because they can't comprehend how a stack actually works or how the mechanics of how a function is actually called.
 

Thread Starter

Jeff Child

Joined May 18, 2022
2
What constitutes being "in synch with the times"?

The language du jour varies widely depending on the particular industry or subindustry a person ends up in. Someone doing real-time control is not likely to be using the same language as someone doing web front ends as someone doing database backends as someone doing machine learning data analytics.

The focus of introductory programming classes is not (or at least should not be) in training someone to program in a particular language, but rather how to solve problems systematically and develop algorithmic thinking skills that happen to use a particular language to implement those algorithms. ...
That's a good point. Engineers go on to do diverse varieties of work, so maybe learning the important generic programming language concepts should be a priority. Pascal was useful along those lines if I remember.

Agree about Python and Java. Those do seem to be the most widely used today.
 

djsfantasi

Joined Apr 11, 2010
8,443
As a follow-up, most Comp Sci programs have, at some point, a course called "Programming Languages" or something similar.
This approach has been in use since the beginning of CompSci programs.

I took one about 50 years ago, in the first year of Georgia Institute of Technology’s CompSci program.

I agree with @WBahn and his description of the course objectives. I encourage anyone who looks to program seriously, either professionally or as part of their hobby, to try to expose themselves to different programming languages.
 

ErnieM

Joined Apr 24, 2011
8,328
My history starts in 1970 when in HS we were taught to use FOCAL, a DEC language on a PDP-8. Focal has more issues than Basic does. Around 1973 they system was upgraded and we learned true Basic.

College we learned PLAGO, which stands for Polytechnic Load And GO, and was ONLY used by my college.

Most of my career in the test area has depended on Basic (first non then Visual) and that is actually a very good tool when applied properly. My current pay stub comes from a place using Visual Basic V5, and the only drawback I have in using it is the scroll wheel doesn't scroll the code text. (We are stuck with 5 due to the HUGE amount of existing code written in it.)

I've used lots of C in embedded work, did a couple of things in PIC assembler that are still on the market nearly 20 years later.

One fixture had some very simple I/O needs I solved using a Raspberry Pi. Program is in Python, which was partially up to the task, though getting an interactive GUI to work took a huge effort using the tkinter library. Don't use tkinter, trust me.

I could not possibly remember all the languages and dialects I have used. What always remained constant is the ability to think what the computer needs to do to solve some task while defending the result from disaster.
 

MrSalts

Joined Apr 2, 2020
2,043
I never had a formal programming course. I'm self taught in C, C++, C#, Python, Various flavors of Unix/Linux shell scripts, BASIC, VisualBasic, PASCAL, FORTRAN, JavaScript, PHP, SQL, some proprietary scripting languages for various simulation platforms for manufacturing simulations,

All I had to remember is a middle school English class where I was taught how to describe a process - our grade was based on how many of the other students in our group completed the written instructions to make the "product". All programming languages (except sql) are virtually the same - some just have a few extra bells or whistles to simplify some tasks, the goals are all the same. Just learn to think like a process flows and know know how to break the process into logical groupings, decision points, loops to repeat, loops to pause and wait idle for other processes to need it. It's all useful but a new language shouldn't take more than an hour or two to write a hello world.

Python can be the most compact but only if you take hours to find the perfect library - it has its place and the c-compiled modules are super fast so, it's no longer completely interpreted. Pretty cool stuff but scary because so much happens behind the scenes unless you step into each module - but that takes all the convenience away and you may as well write in an sh or bash shell.
 

WBahn

Joined Mar 31, 2012
26,841
My question is, have any of you had a similar experiences in college where they didn't offer programming language courses that were in synch with the times? And has that situation gotten better to your knowledge?
My earlier responses were more aimed at the introductory programming courses. But let me turn a bit toward your question about about "in synch" programming language courses not being offered.

Most CS programs have two to four languages that you MUST become conversant with in order to get the degree. The language used by the CS1 course is usually chosen to that it can serve as the language for as many of the required courses, such as data structures, as possible so that students can focus on the course concepts and less on the language gymnastics. Then, because no one language can meet all of the educational goals well, there are a couple other languages that are required. This might be C (to learn lower-level software design) and a suitable object-oriented programming language. This might be the CS1 language, but the expectation here is to go much deeper into OOP concepts and practices. A fair exposure to assembly language used to be very common, but I think in many programs it has become nothing more than what is required to support a Computer Organization/Architecture course and if often a toy language to boot. Personally, I think this is a shame and would like to see at least one semester of true assembly programming. Perhaps have a couple of flavors to choose from wherein one might be IA64 programming in Linux and Windows while another focused on MCU assembly languages in depth.

Now we get to the other programming languages that are offered, but not necessarily required. I think most CS programs have a smattering of these courses, often offered in support of a larger course objective (such as machine learning or web programming). There appear to be growing calls for making cloud programming and working with big data a required part of a CS program. I don't know that I agree with that, but I think it would be great if a program has a regular elective offering in it. The problem with adding new requirements is that something that's already there has to go -- programs just don't have a realistic path to increase the credits needed for graduation, in fact the opposite is true and many programs are under increasing pressure to decrease them.
 

Ya’akov

Joined Jan 27, 2019
6,260
Working with students enrolled in CSE courses at my university (retired ~5 years ago, so I might be behind) I found that the choice of language was generally practically driven. Developing for a platform was done in the language(s) used by the tools for that platform. This makes sense.

I don’t think it makes much sense, at this point, for colleges to teach programming languages. It is my observation that teaching programming, though, makes a lot of sense. In pursuit of that it seems most expedient to use good specimen languages that offer varied feature sets to show how to apply those features to solving problems—which is the goal of an engineer after all.

To that end a strictly compiled language, like C or C++, a dynamic language like Python, and a functional language like Haskell would provide the tools for the engineer to learn other languages as the need arises. Gone are the days when you will be able to teach programming languages in an engineering program and expect that to benefit the student. Teaching how to use the novel programming languages the student will encounter in real world applications ought to be the goal.

Today, with the wide availability of information on the Internet, the dynamic world of F/OSS, and the regular use of commercial development environments instead of writing from scratch, “knowing” C isn’t early as important as knowing how to use a “strongly typed, compiled, imperative programming language”.

More than ever students need to be taught the elements of auto-didacticism, and how to generalize their knowledge of the particular so it can be applied to other, similar cases. The world of technology is too dynamic and though there will be some jobs for specific skills (C programmer, &c) there will be many more jobs for ”programmers” who are able to be given a new language, learn, and apply it using the heuristics their engineering training should impart.
 

Lo_volt

Joined Apr 3, 2014
272
teaching programming, though, makes a lot of sense.
I'll agree with Ya’akov. Most of the concepts, i.e. defining a process, authoring the code, debugging and testing apply to any language. The best programmers that I know can easily pick up a new language.

As far as schools teaching languages, my experience has been that schools are very reactive and rarely proactive. When I started school, we were taught FORTRAN. I have not used it since. The very next year, the school required students to buy an Apple Macintosh which heavily used Pascal for development. That year, all of the incoming freshmen were taught Pascal on their Macs. In talking with recent graduates they're now taught MATLab and Python. I can't read the minds of the faculty, but, from what I can tell, they often watch industry trends and react accordingly.

I'll also add that Computer Science majors at my school have always had, as part of the curriculum, the requirement to take a course in developing a compiler. This to illustrate the inner workings of commercial compilers, shells and interpreters to the students.
 

MrChips

Joined Oct 2, 2009
26,789
My history starts in 1970 when in HS we were taught to use FOCAL, a DEC language on a PDP-8. Focal has more issues than Basic does. Around 1973 they system was upgraded and we learned true Basic.
We were never taught FOCAL but got to use it on a PDP-15.

Instead, we did have to learn to program a PDP-8 in assembler. We got so good at it that we could program the computer in binary code. There are only so many opcodes on a PDP-8. The bootstrap loader (in octal) is permanently engraved in my head.

My most unrewarding experience was having to program a CDC-6400 in assembler!
 

bidrohini

Joined Jul 29, 2022
66
I graduated in Electrical and Electronics Engineering in 2009. We did C++ in 2nd year. I was satisfied with that. But there was many other things that disappointed me. For example, in microprocessor course we used 8086, which I never came across in my embedded system engineering career. MATLAB was taught with very less importance in my classes even though it was important.
 

Gorbag

Joined Aug 29, 2020
6
MIT in the 70s, and we focused on Scheme (Lisp) and PDP-10 Assembly. I still use Lisp (now Common Lisp) almost daily (in fact am writing a ASL that generates VHDL in it). You can't go wrong with SICP as your foundational coursework. <Mod:link Deleted>

Focus on a language du jour might help you get a job, but won't help with your career, for that you need to understand principles.
 
Last edited by a moderator:

Sourc3

Joined Dec 2, 2021
80
When I was studying, We use HTML 3, I searched a lot more easy solution using HTML5 for a exercise and they reprobe me. They said "You arent working, this is very easy".
 

Sourc3

Joined Dec 2, 2021
80
Another important point is that universities and companies have agreements. And python to give an example is open source and there is no entity that puts money to support it.
 
Top