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

I've been building up a similar list of topics that nearly every programmer will at some point be forced to learn against their will and which are not adequately covered in undergrad:

* Text file encodings, in particular Unicode, UTF-8, Mojibake

* Time: Time Zones, leap day / seconds, ISO-8601

* Locales, i18n, and local date/number formats

* IEEE 754 floats: NaN and inf, underflow, overflow, why 0.1 + 0.2 != 0.3, ±0, log1p

* Currencies, comma/dot formats, fixed-point decimal representations, and exchange rates

* Version strings, dependencies, semantic versioning, backwards compatibility

There's another list for web/REST developers, and one for data scientists, but this is the core set.

What'd I miss?



> * Currencies, [...], and exchange rates

Having colleagues for who this topic is "daily business", I really don't know what you intend to teach about this topic to computer science students:

It's either

- basically trivial: you use the provided exchange rate tables which can vary from day to day; you thus just have to thoroughly pay attention concerning the exchange rates of which day you have to use for a given calculation (but this is something the business people will tell you), the rest is like unit conversion, which you learn in school: If the "exchange rate" between yards and inches is 36 in/yd, then 2.5 yd = 2.5 yd * 36 in/yd = 90 in. Similarly, if the f/x rate that is to be used is 1.1612 USD/EUR, then 2.50 EUR = 2.5 EUR * 1.1612 USD/EUR = 2.903 USD (you now just need to ask the business people whether they want to use this raw result, or the result is to be rounded. In the latter case, they will tell you which kind of rounding they want).

- or it is something that you rather need to become an auditor (or a similar qualification) for.


I just don't want them to design a data model with a single `numeric(10,2)` columns for "sale_price", or hard-code their PowerBI report to show the last five years of data using whatever the exchange rate was on the day they wrote the report. You're right - it could be covered in five minutes, but since we don't currently bother, every junior has to learn it the hard way...


CSV/Delimited file format management, for sure. (Reading, writing, choice of field/record delimiters, escaping, working with Excel's CSV quirks, etc.)


In a wider scope, I’ve always thought there is an entire area on data processing and manipulation that is missing in CS (and CI) curricula. Not just CSV files, but XML, JSON, maybe some HL7, Pivot Tables, today Excel dynamic array formula, SQL and some functional style processing like data structure LINQ. Plus tools for doing processing like RE, grep, sed, maybe even AWK.


> IEEE 754 floats: NaN and inf, underflow, overflow, why 0.1 + 0.2 != 0.3, ±0, log1p

High school AP computer science had this in the 90s.


This was covered in my computer architecture class, which was mandatory for my CS degree.


Good list. Versioning is hugely important in practice. I'd add:

* Similar to encodings and locales: Variation in line endings, path separators, command line quoting, case sensitivity

* OS and language-specific package management

* CI/CD

* VMs, containers

* Licenses




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

Search: