Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

People are incredulous when I tell them I use 90% of the stuff learned while getting my CS degree.

Stuff I've done in the real world:

AI: I've lost count of the number of times I've had to implement A*

Graphics: wrote a ray tracer; matrix transformations

Data structures and algorithms: wrote an approximation algorithm for the travelling salesman problem (christofides); fancier data structures like bloom-filters, lru caches; and just every day coding

Databases: query optimization

OS: Made me aware of systems (context switching, caching performance,...). Scheduling algorithms and how they affect the embedded software I write. Concurrent programming.

Networking: Super helpful for everyday stuff when you understand the underlying principles. I've had to implement an RFC from scratch (DNS).

Linear algebra: Used extensively in a path planner I wrote---with it I was able to reduce the state space by orders of magnitude compared to the standard grid approach.

Statistics: wrote an online algorithm for adaptive windowed linear regression

Even computability theory has been helpful, as it has strengthened my proving and reasoning skills---helping me find holes in requirements, or proving algorithms/invariants. Same with all the theoretical math courses I took (Analysis, Set Theory, First Order Logic ...)

The list goes on...

Above all, my CS degree taught me how to learn CS and beyond.

Sometimes I worry about the potential solutions I am overlooking, because I never fully branched into the continuous domain (control theory, etc).



Sounds like you've had a very interesting career; I'm curious where you've worked. My impression is that most programming jobs are about CRUD-like problems, adapting well-known technology to solve business problems. CS seems like it could only help if there's a well-known algorithm (that would be taught in CS), but no existing implementation available - but in these days of open-source libraries that practically never happens.

FWIW I switched out of CS into Mathematics after one year. I've never implemented A*, I've used raytracers but not implemented my own, used a bloom filter but not implemented it, used an lru cache but not implemented one, used adaptive windowed linear regression but never implemented it myself. When optimizing database queries I've never needed more than EXPLAIN SELECT; when optimizing performance I've never needed more than a language-level profiler. I did actually implement an RFC from scratch (SMTP), but that was easy enough to do by, well, reading it and implementing it.


...and I officially envy you...




Consider applying for YC's Summer 2026 batch! Applications are open till May 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: