Today we introduced the course and its goals. We talked about the philosophy of functional programming as an improvement on the linguistic process of programming.
We introduced the three theses of 15-150, including Recursive Problems, Recursive Solutions, Programmatic Thinking is Mathematical Thinking, and Types Guide Structure. We looked at the distinction between imperative and functional code, and introduced the idea of state and side effecrs, as well as how code is made more understandable when both are eschewed.
We looked at simple examples of SML syntax including expressions and declarations. We saw that SML includes a system of types, which are governed by simple typing rules which determine how expressions are type-checked.
We introduced the idea of computation as evaluation, where programs are executed in a way that is akin to simplifying mathematical expressions. We saw well-typed and ill-typed expressions, and stressed that in Standard ML, ill-typed expressions do not run.