The Missing Semester of Your CS Education (2020)

(missing.csail.mit.edu)

69 points | by vismit2000 12 hours ago ago

28 comments

  • olooney 11 hours ago

    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?

    • shrikant 11 hours ago

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

      • NetMageSCW 6 hours ago

        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.

    • aleph_minus_one 10 hours ago

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

      • olooney 10 hours ago

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

    • akoboldfrying 10 hours ago

      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

  • tomhow 11 hours ago

    Previously:

    The Missing Semester of Your CS Education (2020) - https://news.ycombinator.com/item?id=41125733 - Aug 2024 (16 comments)

    The Missing Semester of Your CS Education (2020) - https://news.ycombinator.com/item?id=34934216 - Feb 2023 (336 comments)

    The Missing Semester of Your CS Education (2020) - https://news.ycombinator.com/item?id=27154577 - May 2021 (185 comments)

    The Missing Semester of Your CS Education - https://news.ycombinator.com/item?id=22226380 - Feb 2020 (196 comments)

  • pjmlp 12 hours ago

    As in some other comments, this is usually done in Software Engineering degrees.

  • linhns 12 hours ago

    Loved it when I went through the course. Deserve an update now.

    • vismit2000 12 hours ago

      Agreed. I thoroughly went through this before joining my first job and that massively accelerated my onboarding. I have seen new hires spending lot of time picking up the tools on the job because of lacking fundamentals!

  • tjpnz 12 hours ago

    Needs to be a module on how to play politics in big corporations. If you don't you'll spend your career watching incompetents breeze ahead of you while being consigned to keeping the ship from going under.

    • aleph_minus_one 10 hours ago

      > Needs to be a module on how to play politics in big corporations.

      It's a strange game. The only winning move is not to play.

      • lisbbb 6 hours ago

        If your manager is from India and you are not, you don't have a prayer.

        I liken my career to having a tiger by the tail. Also use the "knife fight" analogy.

  • baconbrand 12 hours ago

    I had this course. I can’t remember what they called it. But a very enthusiastic guy in shorts taught us how to use Linux, the command line, git, etc.

    • noosphr 12 hours ago

      I went through this course in the astronomy department of all places.

      This quote is very relevant for my career progression:

      >Within a month of his arrival, Randy solved some trivial computer problems for one of the other grad students. A week later, the chairman of the astronomy department called him over and said, “So, you’re the UNIX guru.”

      >At the time, Randy was still stupid enough to be flattered by this attention, when he should have recognized them as bone-chilling words. Three years later, he left the Astronomy Department without a degree, and with nothing to show for his labors except six hundred dollars in his bank account and a staggeringly comprehensive knowledge of UNIX.

      • BubbleRings 11 hours ago

        Ha. Reading the book again now. My all time favorite.

        Neal Stephenson’s Cryptonomicon

        A wonderful historical fiction novel with two main timelines, WW2 and the 1990’s, that includes the invention of the first computers, cool as heck battle scenes, adventure love sex music math statistics horror Churchill Turing Goering and wow the wrecked German submarine U553 crashing up and down on an exposed coral reef in the North Atlantic waves.

        How do you benefit from reading someone’s mail without letting them know you are reading their mail?

        • FredPret 6 hours ago

          Agreed. If you love it, also read the Baroque Cycle, REAMDE, and Fall. Cryptonomicon is the best but it all fits together.

      • lisbbb 6 hours ago

        In the 90s, pretty much all the Math, Physics, EE, etc guys and gals all become software developers or generally worked in IT. There were no jobs in those other areas. Well, Intel was hiring CEs for awhile there. Now there are no dev jobs, either.

  • thenthenthen 12 hours ago

    I advocated heavily for the introduction of something like this at my former institute. They didnt bodge sadly.

  • Traubenfuchs 12 hours ago

    It‘s called software engineering.

    • d3m0t3p 12 hours ago

      In my own studies, software engineering was mostly about structurig code, coding pattern such as visitor, singleton etc. I.E how to create a maintainable codebase

      • baconbrand 12 hours ago

        My software engineering course was about the software development life cycle, different business methodologies like agile and waterfall, and working in a group.

        It was very helpful. I would have appreciated “how to create a maintainable codebase” as well though. “Singleton” was not a part of my vocabulary until 3 years into my career :/

        • aleph_minus_one 10 hours ago

          > “Singleton” was not a part of my vocabulary until 3 years into my career :/

          If you are a more old-school style programmer, you simply use the older term "global variable". :-)

        • lisbbb 6 hours ago

          Looking back, I wish it never had been necessary to memorize all those design patterns just to get work done! All OOP has been is a huge distraction and mostly bs. This is me looking back across 30 years of work, so don't just downvote because you love OOP--try thinking about what I'm really saying here. OOP was, to me, an enormous bend in the river that eventually got pinched off and has become a horseshoe lake, destined to dry up and just become a scar on the software engineering landscape. It feels like it was all a big waste of time and someone's money making schemes, tbh.

  • logicallee 12 hours ago

    Thank you to the 4 viewers who viewed in, the livestream is now over. You can see a replay at the YouTube link below.

    --

    This is fantastic. As I'm developing a P2P streaming application (like YouTube Live) to help spread the word about the disinformation campaign against me and my wife, I find that the lack of using version control held me back. I'll livestream my reaction to this course in a few minutes, if you're fast you can check it out. (I'm leaving in about half an hour so it won't take long.)

    check out my livestream here: https://stateofutopia.com/p2p-ring-stream

    I'll start in 5 minutes.

    Now live:

    https://stateofutopia.com/p2p-ring-stream

    And also mirrored here:

    https://youtube.com/live/B13GQqdFwHg

    Enjoy!

    ---

    Problems with this:

    - instead of "missing" shell session should be called "homework" to emphasize additional necessary (or helpful) homework beyond formal graduation requirements.

    - instead of $ the shell cursor should be @ to emphasize where it's at, like this:

        homework:~@
    
    
    - instead of the example missing:~$ date

    it should read:

        homework:~@ time
    
    to emphasize the time spent on homework.

    - instead of the example

        missing:~$ echo hello 
    
    it should read:

         homework:~@ echo $PWD
         /homework
    
    
    Overall, I give this course a 0/10. Never should have been written.

    EDIT: Livestream is now over, thank you. Thank you to the 4 helpers in the stream!

    • jbs789 12 hours ago

      I understand that you're goal is getting home. It might be helpful for other viewers to share 1) a bit more about your story and 2) how them using the service helps.

      Maybe people can help in other ways you don't anticipate.

      • logicallee 11 hours ago

        sure, my story is that everyone will have a really prosperous and happy life once I'm go home.

    • andai 10 hours ago

      Why are you not home?