Ask HN: What are the most interesting emerging fields in computer science?
Hey HN,
What do you think is the most interesting emerging field in Computer Science? I'm interested in PHD areas, industry work, and movements in free software.
What do you think is the most interesting emerging field in Computer Science? I'm interested in PHD areas, industry work, and movements in free software.
182 comments
[ 3.3 ms ] story [ 233 ms ] threadAnd we are already seeing this being heavily developed in autonomous driving systems and others, but I feel like the biggest computer vision applications will require much more information than a 2d image can offer. Instead, recognising objects when you have 3d information seems much more reasonable to me.
The big changes are happening in engineering (software and hardware).
Many things that were known for decades are now accessible for a broader audience.
I consider type theory and formal verification to be more promising (but more academic). Distributed systems and everything having to do with parallel and/or high-performance systems is a good midway between what the industry likes and what's interesting from an academic point of view.
Formal verification has been around for 40/50 years and we can't say it is a wide success from a industrial point of view. It has some achievements in terms of results/methods and projects checked, but on a daily basis, pretty much no one uses it. We are ages away of having every programmer understanding formal verification and having all programs verified/proved.
Type theory is in a similar situation. Many issues in code could be solved with basic typing algorithms but people and companies favor languages with poor/no typing (python, Javascript).
Is the customer going to be happy with "we've billed $X for a formal spec and that means that we can't make the change that you want, that seems simple without $Y dollars for changes to it and the code." Notice that software methodologies have gone the opposite direction here, with Extreme Programming basically aiming to make all of the programmer's activities revolve around exactly what and only what the customer has actually requested.
I think there is real value in having verified libraries or at least libraries with well defined specs so that interfacing with other code wasn't so tedious. I think this issue is starting to be overcome with regard to the usage of strong type systems. Truly strongly typed languages are finally getting the libraries and communities built up so that they don't seem quite as daunting.
I try to break this barrier a bit with my upcoming book: Gentle Introduction to Dependent Types with Idris.
I am very interested in this area but it is impossible for newcomers to get a grasp of it without too much digging. Logical Foundations was OK but I was still missing the theoretical explanation ("why does this tactic work? it is magic!").
So with accumulated knowledge from IRC, forums I hope to address this.
And as you noted there definitely is a lot of "magic" when it comes to the inner workings of theorem proving tactics. I'm slowly figuring all of that out but like you said it definitely takes time and digging at the moment.
Formal verification is an essential part of mission critical applications. Therefore, even though they might be few in number - their impact is pretty significant and "wide".
Also, JPL released its model-checker Java PathFinder and hosts every year the Nasa Formal Method conference so I'm pretty confident that at least someone at NASA is interested in formal methods =)
Formal verification is used in some niche areas (BAE, Galois). Proof Engineer is a real role some companies are looking to fill.
Recent prog languages have added syntax to avoid issues such as "off by on error" (generator etc...), TDD is slowly becoming a standard everywhere. The next step to improve quality in software is formal verification IMO. There is quite a bit of research in that domain and even some academic program languages integrating it within their syntax.
Maybe not for software but certainly in the hardware world formal verification is common place with mature tools available from multiple vendors.
Of course, the point is not to prove every program correct. But it should be feasible to prove security-critical parts correct, especially for large companies.
The biggest problem is that formal verification is about as un-sexy as it gets, since it has no applications an sich.
No. There are those who do understand blockchain and still don't support it. A great example is professor Jorge Stolfi. He is one of the more prominent detractors, and yet he routinely displays a very thorough understanding of the technology.
I don't claim to contradict that he is against the concept of cryptocurrencies or blockchain in general, but I fail to find evidence that he is against the technology in general.
I do find evidence he is opposed to Bitcoin in specific, or at least warns against it.
Could you point me to English writings where he argues against blockchain/cryptocurrency in general?
Here's his primary English writing on Bitcoin and cryptocurrency in general (not necessarily blockchain), sent to the SEC: https://www.sec.gov/comments/sr-batsbzx-2016-30/batsbzx20163...
This critique of Bitcoin is quite short, and seems directed at Bitcoin in particular, in no way do I conclude that he is against the concepts of blockchain (say non-currency), or perhaps even cryptocurrencies that do not take on some of the Ponzi aspects.
After reading this I can perfectly imagine (but do not claim so) that he might support certain other forms of blockchains and/or cryptocurrency...
https://www.reddit.com/user/jstolfi
He primarily posts in buttcoin, a sub that exists to mock bitcoiners. It's pretty fair to say he thinks all coins are crap, not just bitcoin.
Also, please include me in the "Understands cryptocurrencies and yet doesn't support it" bucket please :)
But they don't know that, so they keep bashing the blockchain without having any knowledge of other good platforms.
[1] https://en.wikipedia.org/wiki/Process_mining
I'm particularly working with the mining of plans (as in Automated Planning) in declarative process models. If I have a chance I'll look into it, thanks for the heads up
It provides automatic visualisation of graphs, analysing of bottlenecks, and lots of analytics. While you only need system logs linked to an id.
Its hard to do and has lots of real world applications.
Science changed a lot in the last decades, moving from a genius in a room looking at the data and coming up with grand theory to have vast amounts of data that no single human can make sense of. The work of the computer scientist is to quickly understand problems from various fields then solve it using tailor-made algorithm that leverage the prior knowledge, the data structure.
One of such interesting fields (which I'm working on), is computational biology. We're working on leveraging sparse experimental data for protein structure prediction. To do that, we end up using algorithms and ideas from different various CS fields, from machine learning, to robotics, to distributed systems. Other people are working on exciting fields like computation protein design, studying drug protein interaction in silico..
Are there particular methods you use to deal with little and sparse data?
And I think this also applies to other fields. I gave the book "Algorithms To Live By" (which is basically an overview of CS algorithms) to a medicine student and he was immediately inspiried and came up with ideas on how to apply these ideas on his research. CS algorithms are just so basically true that I think they should be more universally known.
I recently graduated from law school and now am an intern at a law firm. I have a strong interest for CS, and it bothered me for a long time that I went to law school instead of CS.
I'v overcome those feelings over the years and dedicated myself to become a lawyer. But your post caught my interest.
I'd be glad if you could share some of the story behind you studying cs after getting your law degree.
Some learnings so far: 1) I get great feedback for my decision from other lawyers, who are genereally very interested but not well versed in tech. 2) Legal Tech feels a bit overhyped right now, but eventually it will change the field drastically. Law firms need lawyers who have technical skills. And that doesn't necessarily mean a whole CS degree, some programming skills etc. will already do it.
I personally love tech that much that I don't want to go back to a law firm to practise law, but rather actually develop technology. But for you, if you want to become a lawyer, I can promise you that you will find a fertil ground for your interest. It soon will be one of the most sought after skills for law firms. So if you learn some programming (maybe you already know some), take some online courses (there are great resources for CS online), then the next time your law firm gets offered a (as magic advertised) ML tool or needs to implement a new tech solution which really influcences the workflow, you will be the star of the firm for being a critical but competent colleague. Or if you're starting your own law firm, I think there is great potential for a more automated workflow. In your position, I would be very glad for you CS interest – you in the right field and it is the right time for it!:)
It is really nice to hear that my skills and interest in computers won't go wasted in practicing law. I hope my firm also gets offered an ML tool where I can show my skills. For now I can navigate the document management systems with ease, use some word add-ins (contract companion etc.), I guess that'll change in time and I'll have access to more sophisticated tools.
I'm about to go back to University to study law but I would love to be able to combine Law with technology. Seems like an interesting area.
- Working as a lawyer in a law firm and being the expert/contact person for any tech stuff.
- Working as project mananger for Legal Tech in a law firm (Magic Circle law firms are already having these jobs)
- Being a lawyer specialised in IT/tech/IP laws, which require a domain understanding.
- Working for or founding a Legal Tech start-up.
- Owning a law firm that is having an automated workflow which is specifically engineered.
Right now, there aren't too many jobs on the market. But they will become more. And I can promise you, for most of all people tech is a black box (which is also bothering people), and with it being more and more integraded in our workflows, being tech savy will become more important in virtually any job (including government etc.).
I'm intrigued at what you are referring to by the important questions in law, as they relate to CS algorithms?
I think taking CS and "bouncing it off" of other disciplines is where the real magic happens.
It happens, but far too rarely.
Universities understand silos. Supervisors get nervous when a student wants or needs to work with another department. There are reasons for this: supervision and grading become hard, and funding applications become complex. But this simply uncovers the depth of the silo effect.
Arts departments are at the vanguard here. You'll be far more likely to find a fashion PhD working with a biologist than you would to find a comp sci PhD working with a lawyer. Perhaps medicine gets it too, but even then it's largely the lab-based stuff like image processing. The clinical and public health worlds are only starting to gain exposure.
That's my experience anyway, hopefully others have counter experiences.
Utilizing machine learning to process and analyze historical texts could shine a light on patterns that have gone unnoticed thus far.
I would want something where it doesn't just enabled me use CS tools and algo to apply to works in those fields (a crude example would be: use of some ML also on Shakespeare's works) but also lets me study both that field and CS.
There are probably more but those are the ones off the top of my head.
See: https://www.forbes.com/sites/louiscolumbus/2018/01/12/10-cha... or in general any other marker like NIPS submissions or arXiv preprints on DL.
Of course focus changes, and maybe in the next 2 years it will be on something different than RL. But still, even in Computer Vision it is still a very vibrant field, since its breakthrough in late 2012 (https://www.eff.org/ai/metrics). The majority of more traditional disciplines of CS had their breakthroughs a few decades ago.
The ideal emerging field is one that's so obscure we haven't heard of it yet, but so important that we will. If there are widely disseminated books on Amazon about your field, it's not emerging. If there are hundreds of professionals cranking out papers about your field, it's also not emerging.
Emerging fields are underrated and under-recognized. What are they?
[1] https://news.ycombinator.com/item?id=17696498
"A type of simulation which some experimental evidence suggests we don't live in" https://philpapers.org/archive/ALEATO-6.pdf
Nevertheless, it's an interesting observation that we can now easily do experiments that demonstrate correct behavior of logic to the 10^-15 level. If Descartes were looking for evidence of the fallibility of a daemon creating his sense data, it would have been hard to demonstrate better than 10^-3 or 10^-4.
To borrow from Nick Bostrom: suppose we run two types of simulations. Important simulations and un-important simulations. For the important sims, we use error-correcting codes, we save checkpoint images, etc. For the unimportant sims, we don't do those things, in order to save money. This allows us to run far more unimportant sims than important sims. Thus, if someone is incarnated randomly in one of the sims, it's probably one of the cheap ones (just because there are more cheap sims than important sims, by basic economics). The point is just to show that it is possible for a philosopher to argue against error-correcting codes etc. Indeed, if we leave it to philosophers, we'll probably never make progress.
We need to appeal to the muse of science, that harsh mistress who serves us cold hard facts, every single one of which throws 50% of philosophers out into the darkness where there is wailing and gnashing of teeth :)
Its just a catch phrase, there is no real objective boundary
Arguably Cody Wilson is doing some of this sort of stuff.
Basically 4Chan but far more organised.
Where's my open source, open data, license plate tracking?
Secure execution environments.
Thankfully the online resources around electronics are plentiful and PCBs can be had for under 10$ incl. S&H.
That way I can make all my lighting IoT without having to deal with the garbage of the IoT industry.
What was the most interesting CS field(s) in 2008, 98, 88, etc?
DTP
OO
RISC CPUs
'graphics' (as in render farms)
98:
Linux, Apache, Mozilla, OSS in general
Perceptual audio compression : MP3 (layer3.org, MP3 vs TwinVQ, codecs created during the period before Fraunhofer announced the source code it uploaded to ISO without a license and that people had been working on for free, in fact had a license and everyone owed them 10 grand).
2008:
Cloud
mobile (location in particular). Think Foursquare vs Gowalla vs Burbn, Grindr, other early mobile location-aware apps. App stores for popularised by Apple that same year.
AJAX, Rails
blogging.
OSI network stacks. They were going to replace the 'old' Internet protocols.
Relational Databases, SQL and two phase commit.
Formal methods and verification.
Still emerging.
As a web developer: WebAssembly
As a DevOp: Kubernetes
As a backend engineer: headless (CMS) API systems like Strapi or Wagtail
What is the meaning of headless anyway ?
According to wikipedia, the term "headless" comes from the concept of chopping the "head" (the front-end, i.e. the website) off the "body" (the back-end, i.e. the content repository).
https://www.youtube.com/watch?v=eSi6J-QK1lw
You don't need AI to keep your car's body level. The technology has been around in various forms for over 60 years.
So much of what people believe we need AI for is amenable to classical engineering techniques.