link to page content
Iode logo
direction fields phase planes 2nd order linear Fourier series PDEs
Iode
Main page
Download
Documentation
FAQ
Course materials
Credits
U of Illinois
Setting up Iode
Syllabus
Administration guide
Development
Policies
Links
GNU GPL FAQ
Octave
Matlab
Compatibility FAQ
IPROM

Policies and Conventions of Iode

  • Iode is free software, covered by the GNU General Public License. Mathematical modules should work with both Matlab and Octave (see Compatibility FAQ), while the user interfaces can be specific to Matlab or Octave. Ideally, though, the functionality should be roughly the same under both Matlab and Octave.
  • The supporting materials of Iode are free as well, covered by the GNU Free Documentation License. In particular, LaTeX sources and such will be available; documents in closed, proprietary formats are not acceptable. Plain ASCII, LaTeX or HTML is recommended.
  • The user interface is merely the icing on the cake. The main point of Iode is to have clean, lean, and legible mathematical modules that encourage students to understand and extend them.
  • The user interface is fairly robust, but it is not designed to catch every possible mistake the user might make. There are three main reasons for this: (a) Fool-proofing takes too much time and is usually futile, (b) you may have thought of some creative way of (ab)using our code that we didn't envisage but fully approve of, and (c) if you wish to shoot yourself in the foot, that's your prerogative. 1
  • When an exception occurs in a mathematical module (e.g., due to bad input), the menu modules display the error message as generated by Octave or Matlab. This doesn't look pretty, but it's crucial feedback when developing new modules, which everybody is encouraged to do.
  • Iode avoids global variables as much as possible. Currently, there are no global variables, only three global constants. The global constants are isoctave, ismatlab, and numtol. The startup scripts of Iode initialize isoctave to 1 (true) if Iode is being run under Octave, and to 0 (false) otherwise, and they initialize ismatlab analogously. They are meant to facilitate (but not encourage!) the implementation of routines specific to Octave or Matlab. The constant numtol is the numerical tolerance (10^-12 by default). Numerical values whose absolute value is less than numtol will be treated as zero.
  • All functions, file names, etc., are all lower case, e.g., iode, matlab, export2eps, etc. Moreover, when typesetting documents with LaTeX, please stick to the following convention:
    • Use $...$ for mathematical concepts.
    • Use {\tt ...} for anything involving file names, keyboard input, etc.
    • Use \lstinline!...! for any Octave code. The command \lstinline is defined in the LaTeX package listings.sty.
    Example: In the file {\tt rk.m}, the expression \lstinline!t0:hh:tmax! creates a vector of $t$-values.
  • When referring to software by name, capitalize the first letter, e.g., Iode, Octave, Matlab, etc.
  • We manage the Iode web site with Genpage - Version: 1.0.7. Genpage allows us to separate formatting information from content, and it creates HTML code from content files of the following form:
    %title%
    Put title here
    %keywords%
    <meta name="Keywords" content="Put keywords here.">
    <meta name="Description" content="Page template for Iode.">
    %body%
    <h2>Page template for Iode</h2>

    <p>Put text here.</p>
    The page template.html was generated from this data.
  • When there are subtle differences between the behavior of Octave and that of Matlab, Iode should cover it up by introducing functions that provide uniform behavior regardless of the platform. For example, the module fixaxes covers up the differences between the behavior of the axis command.

1This is the Unix way: If you wish to shoot yourself in the foot, then it is the duty of the operating system to provide the gun as well as the bullet.



The Triode Page generated with Genpage - Version: 1.0.7.
UIUC logo