The main advantage of typing is, for me, IDE showing errors as you type and better autocomplete, and they serve as documentation also (Of course you should read docs but types are helpful as quick reminder.)
Maybe I am just more absent minded than most dynamic programmers, but live IDE diagnostics and autocomplete are very important for me.
It's not as accurate or satisfactory in my experience. For example I get errors after running in python, which could be detected in statically typed languages while typing in IDE. Autocomplete is also less than optimal. As for autocomplete intellij IDEs > LSPs for typed languages > Untyped languages IME.
Modern java is pretty nice though. I tried MLs and Haskells but was put off by not-so-mature tooling. (I know some of you do very well with it but I am used to some hand holding). With an IDE like intelliJ, modern java is pretty good. When I use python even with a linter/LSP many errors go undetected, whereas Java is much strict about this. (IIRC Java 9+ has local variable type inference, streams and lambdas were introduced in Java 8. It's not perfect but much expressive than old java.
Modern Java is getting really close to MLs, with records, pattern matching, sealed classes, lambdas, type inference, streams, optionals. I don't know if the ecosystem has adopted that way of developing though.
That's true, but having seen (non-IIT) Indian colleges, I am not surprised if 80%+ students they see are like that. Moreover, intelligent ones less commonly opt for masters degrees because they get good offers in campus placements, especially those from middle class or rural areas are already doing undergrad on loans.
In india, the engineering curriculum includes lot of subjects that are not useful for the students but only there because some fat belly officer thought it would be "Interdisciplinary".
Can you imagine teaching biology as a subject for engineers? waste of money and not what we have come to learn, or interested in. But colleges in India do that.
Those subjects are not there for any meaningful purpose. Imagine having a CS degree program and teaching chemistry, physics, biology and a bunch of even lesser subjects is blatant and ignorant waste of students' money.
open book exams with serious thinking questions is the answer.
I had such a numerical methods exam, I had a python script ready for it. No regrets on automating something that should be automated. I understood how the method works and wrote code for it.
> I understood how the method works and wrote code for it
We were allowed (and encouraged) to write cheatsheets for most of our exams at university. However, they had to be a single sheet and handwritten.
The reasoning was that in the process of creating a cheatsheet, students would reinforce their learning. The handwriting requirement was to encourage us to write them ourselves, instead of just printing one off, and the size requirement was so that we had to think about how to distill a semester of learning instead of just trying to copy the entire textbook by hand.
I really liked the system, and I feel like it did help more than just allowing open book exams. I remember of the few exams that were open book (some even allowed us to use the internet, but with a ban on communicating with others), I usually got a worse grade, as I ended up putting less effort into studying.