hackermailman
Regular school you would solve problems in combinatorics, algebra and geometry together in class by offering small ideas or strategies then trying each one to point out what works and doesn't work. You do enough of these everyday in class then reasoning about abstract sets in analysis isn't a huge leap. Same reason we used to read Euclid in class and make students demonstrate countless proofs.
CMU Discrete Math course has kind of the same techniques where he solves problems with the whole class https://m.youtube.com/watch?v=0K540qqyJJU
The best students then joined the school math circle with professional mathematicians and became TAs like in university helping their regular class.
They tried and failed the soviet curriculum with New Math https://simple.wikipedia.org/wiki/New_Math
Singapore high school students learn the equivalent of AP Calculus in Grade 10 then either spend years 11/12 at a trade school or stay to earn an associates degree to prep for university covering engineering electives like linear algebra and differential equations.
Otherwise interviews are the same more or less with emphasis on reading code and being asked is there a more optimized approach and then seeing if the candidate invalidates the cache. You'll probably still get hired if you do it once but after being told something and you do it again in the next interview then nope. They still fly everyone out and do a superday with back to back interviews (and pay for the time).
Seems we will be writing programs using some kind of logical formal methods[1] and generating the code without ever looking at it and testing the system properties. I imagine AI will make its own intermediate programming language that benefits it the most instead of human readability
Then you can check other LC solutions for bugs not caught by the test inputs because FM software like forge can find very tricky logic errors
Could also find some algorithm engineering course floating around and try and optimize a LeetCode solution you made for your specific hardware or their judging server learning what benchmarks to use. MIT has one but probably others: https://jshun.csail.mit.edu/6506-f26/schedule.html or if LC doesn't allow to download test inputs try competition programming archives they give you the test data https://usaco.org/index.php?page=training
With AI writing an entire algorithm test bench is pretty easy but what do you test, what stats are meaningful, vectorized registers, all those real world things.
Yubikey benefits is it stores the keys in the hardware if your laptop is compromised somehow or stolen they at least don't get all the ssh keys too
It's sort of an analytical way to design a user interface and is pretty helpful I find
For example your personal website has a concept with no purpose the upper right oval things which are PgUp/Dn on my phone display. If you learn basic conceptual design you can easily architect small sites like the things in your portfolio while sitting in front of someone, then have AI of choice immediately build the entire user interface and they can test it out themselves.
Translating concepts into typescript code is trivial and exampled here https://61040-fa23.github.io/pages/concept-implementations.h... and AI can do this for you. The idea is concepts are reusable and modular and self contained. Whatever the user sees or has functional access to is what you design for and AI generates the hidden backend. If you design this way you discover many things are identical and can reuse an existing concept for it. You also discover many things have no real purpose and should be removed such as the 'don't hire me' section.
Some of the problems with your personal biz advertising site others have mentioned would've been caught by conceptual design such as what is the purpose of this site? To display a portfolio of work and harvest leads. What is the operational principal or how would someone use this site? Then you'd immediately catch there's no about me description above the logos/names etc., no obvious contact page therefore no harvesting of leads. You'd see that the descriptions of each portfolio entry should be included when you click on them instead of having these at the bottom of the page under 'Notable'. What is the purpose of enlarging an entry? To get more information. That is 2 concepts with the same purpose and break the design. Why not just include the notable designs and leave out the rest?
Anyway that book changed the way I write software and it fits nicely with vibecoding up a prototype.
The Dutch police imaged the drive, gave it to the Americans and gave the server back to XS4ALL which itself appears to have shutdown too I think
For example the old and new Berkeley model to study rent control effect on market prices
If it's a math for finance course then some kind of model building for the midterm and being marked on the quality of the model or something. If AI becomes so good that it always chooses the best fitting model and requires no numerical optimization then they will have to change the courses to be more like UChicago where it's primarily undergrad directed research but AI assisted.
With LLMs can we even legally license software because some projects like OpenBSD claim there is no international law yet for code not written by humans.
Neitzsche had an interesting set of lectures he gave about the future of schools if you can get through the annoying style of a fictitious argument between philosopher and student. https://www.gutenberg.org/files/28146/28146-h/28146-h.htm
Another skill is conceptual design or figuring out how the user interface should work using a design method to identify logical problems because we will all still have to use software. This book and the tutorials are quite good at explaining why some software succeeds and others fail https://essenceofsoftware.com/tutorials/
Accurate cost models for running code are still going to be needed because all the architecture is going to change. Many schools teach algorithm engineering like MIT but the best examples I've found is this course https://15799.courses.cs.cmu.edu/spring2025/schedule.html
You now can design an interface to a system that someone like a paying client will enjoy using, design the hidden 'back end' of the system to be correct using formal methods, then derive an accurate cost model to see how it will run on whatever hardware we are using 5 years from now.
If I were going into school today I would take robotics as that's the next big field and will have research grants and money coming in. It will require the same skills of formal methods for 'cyber-physical safety' and new cost models.
It can definitely be a good research assistant though
Beside it is a row of various hyper trendy restaurants that I never see similar patrons inside because they have terrible service and seating. The worst of them requires you to stand in a huge line and prepay then they bring the food out to you. This means watching idiot after idiot fumbling around with their phone or taking forever to find their card to pay while you stand in this line and burn up your lunch time. The clientele here is much different it's mostly tourists so is dead in the off season as no locals go.
I'm always interested in seeing how service industry runs things and it's usually just doing the basics better than everyone else that makes all the difference
The user facing part of your program can be planned out using conceptual design https://essenceofsoftware.com/tutorials/ the author of that book teaches it in MITs old software studio course https://61040-fa25.github.io/schedule the point is to plan out modularity and the prof does enjoy using overly complex language to describe this method but once you read through the slides and tutorials you will understand why he describes it that way because he's trying to differentiate between features and concepts. For example HN has an upvoting concept who's purpose is to establish rank then a seperate concept karma which allows you to downvote but placing both functions inside the upvoting concept breaks modularity and conceptual design makes this obvious once you practice with it. Once everything is planned out this way then generating code is trivial again in my limited experience as I'm no expert on agentic coding but I've had success doing this.
All the code the user won't see can be modeled using one of the 'lightweight' formal methods out there like forge or alloy https://forge-fm.github.io/book/2026/ where a complex protocol you write or entire system can be tested first to find illicit states. Imagine you are designing some company app where there needs to be multiple logins of different security abilities this is how you would model your security plan first and make sure a combination of states doesn't produce an unexpected breach or that you missed a state. A custom network protocol that does kernel bypass is another example. The rules of a game you build is another you don't want the system to reach a state like winner unless they actually won. I now use Forge to plan css too because I don't want to show broken css states since I have limited design experience.
Now generate the whole system as modules and never look at the code. The same property tests I used for the Forge model I make into an Oracle and then blast the agent code with random inputs.
I built several gigantic prototypes this way mostly of papers I read in database designs and screwing around with graphical interfaces for them.
I'm going in a different direction breaking all the imperative code slop being generated. It's like the early 2000s all over again if you're interested in security. The peak will be when some corps start selling SECURITY.md skill files that we will be able to load up in Alloy or Forge and easily break the logic https://forge-fm.github.io/book/2026/
Beyond that is dependent types