3 answers

Why most college's CS department don't teach students how to run a functional program?

Updated Irving, Texas

3 answers

Dhairya’s Answer

Updated Boston, Massachusetts
I'm sure I understand the question. Is it: why are CS programs less focused on teaching student how develop a complete application (e.g. a twitter clone) say using a full stack? There is a distinction between software engineering and computer science. There is a significant overlap in concepts and both also do involve computer programming. But most computer science programs are designed to teach students to think about computational problems and how to solve them. The solutions involve understanding algorithms, developing mathematical proofs to show why a given algorithmic solution is optimal, and thinking about how to solve computational problems at different scales. A fundamental part of computer science is understanding classes of problems, that is problems that can grouped together based on common features and solutions, trying to derive more efficient solutions, which in the real world can save computational resources, memory limitations, and money. On the flip side, software engineering is actually writing code as an implementation of solution. Say you want to make a mobile app that is say the next Uber. As a software engineer you want to use existing software tools and libraries to build the application. Software engineers can conceptualize what the application design and work with other engineers to build it out. Depending on what the application is they are building, they'll often implement solutions from computer science to solve real world problems. In the Uber example, a software engineer may implement the latest matching algorithm that can match drivers to riders more efficiently. Computer science graduates will often become software engineers and developers. The ones that have strong algorithm and data structures backgrounds are often sought by Google, Amazon, and other tech companies because they have experience solving hard computational problems. Finally, the reason the other reason why CS programs don't often focus on teaching students full stack languages is that computer languages and tools change radically. 10 years ago the most popular language in programming was Java. Today its Python and Ruby. 10 years ago a LAMP (Linux, Apache, MySQL, and PHP) was considered full stack and today its (Node.js, JQuery, python, cloud [AWS, Heroku, etc], CSS ...etc). The point is that languages and tools evolve over time, however computational science approaches tend to stable and more universal. A solid computer scientist can pick up new languages and tools to solve problems but can rely on their fundamental computer science knowledge .

Zahur’s Answer

Updated Irvine, California

I do not know if this is necessarily an accurate assumption. There is a difference between functional software vs. software that can be applied to common real world scenarios. In school, the purpose of developing software is to help a student learn, while in business, you are focusing on solving problems. There are positives and negatives to both experiences, but they can be very complimentary when you are developing your skills as a software engineer.

Kathleen’s Answer

Updated Chandler, Arizona

I agree with the previous answers!

At my college, we had distinctive software engineering and computer science majors. I studied computer science, and the primary focus was on algorithms and knowing how to develop solutions. Although we had a basic programming course, programming projects was more used as a method for showing our thinking and solution development for problems as opposed to our actual technical programming prowess. This gave me the fundamentals for thinking about problems and a designs in a conceptual way.

If you are more interested in just coding, I would recommend a software engineering major instead!