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.
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...
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.
* 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?