There are two design goals in sm1. One goal is to provide a backend engine for the ring of differential operators in a heterotic distributed computing system. Another interesting design goal is to help to teach basics of intermediate level computer science quickly and invite students to mathematical programmers' world. It is a fun to learn computer science with sm1! Here are some topics that I tried in class rooms. These are intermediate level topics that should be learned after students have learned elementary programming by languages like Pascal, C, C++, Java, Basic, Mathematica, Maple, Macaulay 2, etc.