As mentioned, we start with numerics and programming when the 19-year old new students arrive at the University. About 300 students enter courses on classical calculus, numerical calculus, and programming of the latter. The programming course covers basic MATLAB-style procedural programming in the first half of the fall semester, while the second half is spent on statistical simulations, ordinary differential equations, and class programming (recall that classes and object-oriented programming were invented in Oslo so we have no other choice!). The final project is to create a flexible, object-oriented toolbox for studying nonlinear vibration problems described by the standard model

\[m \ddot x + f(\dot x) + s(x) = F(t)\]

The development environment for programming consists of the well-proven
terminal window and a text editor (`gedit`, `emacs`, or `vi`).

Many reviews of the course book claim that the book is quite advanced and may fit the graduate level. However, most of the book is in fact covered the very first semester in Oslo. This works well and the course has received excellent student critiques. Scientists usually think of Monte Carlo simulation and nonlinear differential equations as advanced topics, not belonging to first semester courses, but the methods and their applications can be exposed in very intuitive ways suitable for newbies. At least the students can train their programming skills on such problems and be able to produce solutions to what many traditionally think of as advanced problems. A deeper understanding of what they actually do needs to wait until they master a broader set of courses. My main message is that what is basic and what is advanced should be continuously up for discussion.