Select Git revision
Neil Gershenfeld authored
index.html 15.23 KiB
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
</head>
<body link="black" vlink="black" alink="black">
<font face="bitstream vera sans,arial,helvetica,sans-serif">
<center>
<div style="font-size: 125%;">
<b><i>Interface and Application Programming</i></b>
</div>
</center>
<div style="font-size: 120%; margin-left: 2.5%;">
<pre><font face="bitstream vera sans,arial,helvetica,sans-serif">
<font face="bitstream vera sans,arial,helvetica,sans-serif"> <b>languages</b>
<a href=http://helloworldcollection.de/>hello world</a>
<a href=http://publications.gbdirect.co.uk/c_book/>C</a>, <a href=http://gcc.gnu.org/>GCC</a>, <a href=https://gcc.gnu.org/projects/cxx-status.html>C++</a>, <a href=http://www.gnu.org/software/gdb/>GDB</a>, <a href=http://www.gnu.org/software/ddd/>DDD</a>
<a href=http://www.dotnetfoundation.org/>.NET</a>, <a href=http://www.ecma-international.org/publications/standards/Ecma-334.htm>C#</a>, <a href=http://www.mono-project.com>Mono</a>
<a href=https://golang.org>Go</a>, <a href=https://www.rust-lang.org/>Rust</a>
<a href=http://www.java.com/>Java</a>, <a href=http://openjdk.java.net/>OpenJDK</a>, <a href=http://icedtea.classpath.org/wiki/Main_Page>IcedTea</a>, <a href=http://developer.android.com/index.html>Android</a>
<a href=http://tryapl.org>APL</a>
<a href=https://www.haskell.org/>Haskell</a>, <a href=http://www.scala-lang.org/>Scala</a>, <a href=https://julialang.org>Julia</a>
<a href=http://processing.org/>Processing</a>, <a href=http://www.wiring.org.co/>Wiring</a>, <a href=http://www.arduino.cc/>Arduino</a>, <a href=http://p5js.org>p5.js</a>
<a href=http://www.ni.com/labview/>LabVIEW</a>, <a href=http://www.mathworks.com/products/simulink/>Simulink</a>, <a href=http://cycling74.com/>Max</a>, <a href=http://puredata.info/>Pd</a>, <a href=http://scratch.mit.edu/>Scratch</a>, <a href=http://appinventor.mit.edu>App Inventor</a>, <a href=http://www.grasshopper3d.com/>Grasshopper</a>, <a href=http://www.fireflyexperiments.com>Firefly</a>
<a href=http://www.gnu.org/s/bash/>Bash</a>, <a href=http://www.tcl.tk/>Tcl</a>
<a href=http://www.python.org/>Python</a> <a href=http://docs.python.org/tutorial/>tutorial</a>, <a href=http://www.perl.org/>Perl</a>, <a href=http://www.ruby-lang.org/en/>Ruby</a>
<a href=https://developer.mozilla.org/en-US/docs/Web/JavaScript>JavaScript</a> <a href=https://developer.mozilla.org/en-US/Learn/Getting_started_with_the_web/JavaScript_basics>tutorial</a>, <a href=http://nodejs.org/>Node.js</a>, <a href=https://developers.google.com/v8/>V8</a>, <a href=https://www.npmjs.org/>npm</a>, <a href=http://asmjs.org/>asm.js</a>, <a href=https://webassembly.github.io>WebAssembly</a>, <a href=https://coffeescript.org>CoffeeScript</a>
<a href=https://nodered.org>Node-RED</a>, <a href=http://mods.cba.mit.edu>mods</a>, <a href=https://gitlab.cba.mit.edu/squidworks>squidworks</a>
<b>device interfaces</b>
<a href=http://www.camiresearch.com/Data_Com_Basics/RS232_standard.html>RS/EIA/TIA 232/422/485</a>, <a href=https://github.com/pyserial/pyserial>pySerial</a>, <a href=https://www.npmjs.org/package/serialport>serialport</a>, <a href=https://developer.chrome.com/apps/app_serial>serial</a>
<a href=http://www.ftdichip.com/>FTDI</a>, <a href=http://www.intra2net.com/en/developer/libftdi/>libFTDI</a>, <a href=http://packages.ubuntu.com/python-ftdi>python-ftdi</a>, <a href=https://www.npmjs.com/package/ftdi>ftdi</a>
<a href=https://www.arduino.cc/en/Reference/Firmata>Firmata</a>
<a href=http://www.usb.org/>USB</a>, <a href=https://github.com/walac/pyusb/>PyUSB</a>, <a href=https://www.npmjs.com/package/usb>usb</a>
<a href=http://www.irda.org/>IrDA</a>, <a href=https://pypi.python.org/pypi/irda>python-irda</a>
<a href=http://www.ni.com/gpib/>GPIB</a>, <a href=http://www.ni.com/visa/>VISA</a>, <a href=http://pyvisa.sourceforge.net/>PyVISA</a>
<a href=http://mqtt.org/>MQTT</a>, <a href=http://xmpp.org/about-xmpp/>XMPP</a>, <a href=https://ifttt.com>IFTTT</a>, <a href=https://openconnectivity.org/developer/specifications/upnp-resources/upnp>UPnP</a>, <a href=https://github.com/topics/wemo>Wemo</a>
<a href=http://docs.python.org/2/library/socket.html>socket</a>, <a href=https://nodejs.org/api/dgram.html>dgram</a> <a href=https://nodejs.org/api/net.html>net</a>, <a href=https://www.npmjs.org/package/ws>ws</a>
<a href=../input_devices/mag/hello.mag.45.html>hello.mag.45.html</A> <A href=../input_devices/mag/hello.mag.45.js>hello.mag.45.js</a> <A href=../input_devices/mag/hello.mag.45.js.mp4>video</A> <a href=http://academy.cba.mit.edu/classes/input_devices/mag/hello.mag.45.mods.mp4>mods</a>
<b>data interfaces</b>
flat files
<a href=https://www.libreoffice.org/discover/calc/>Calc</a>, <a href=https://www.google.com/sheets/about/>Sheets</a>
<a href=http://manns.github.io/pyspread/>Pyspread</a>, <a href=http://pandas.pydata.org/>Pandas</a>
<a href=https://www.mysql.com/>MySQL</a>, <a href=https://www.mongodb.org/>MongoDB</a>
<b>user interfaces</b>
<a href=https://www.gnu.org/software/ncurses>ncurses</a>
<a href=http://www.tcl.tk/>Tk</a>, <a href=https://wiki.python.org/moin/TkInter>Tkinter</a>
<a href=../input_devices/step/hello.load.45.py>hello.load.45.py</a>
<a href=http://wxwidgets.org/>wxWidgets</a>, <a href=http://www.wxpython.org/>wxPython</a>
<a href=http://kokompe.cba.mit.edu/index.html>panel_png_path.py</a>
<a href=https://www.qt.io/>Qt</a>, <a href=http://wiki.python.org/moin/PyQt>PyQt</a>
<a href=http://www.gtk.org/>GTK</a>, <a href=http://www.pygtk.org/>PyGTK</a>
<a href=http://blogs.gnome.org/clutter/>Clutter</a>, <a href=http://www.modrana.org/pyclutter_tutorial/tutorial/html/sec-pyclutter.html>PyClutter</a>
<a href=http://kivy.org>Kivy</a>
<a href=http://www.w3.org/TR/html5/forms.html>forms</a>
<a href=http://jqueryui.com/widget/>jQuery</a>, <a href=https://workshop.chromeexperiments.com/examples/gui/#1--Basic-Usage>dat.GUI</a>, <a href=http://getbootstrap.com/>Bootstrap</a>, <a href=http://designmodo.github.io/Flat-UI>Flat UI</a>, <a href=https://material.io>Material</a>
<a href=http://backbonejs.org/>Backbone</a>, <a href=http://requirejs.org/>Require</a>, <a href=https://angularjs.org/>Angular</a>, <a href=http://handlebarsjs.com/>Handlebars</a>, <a href=http://emberjs.com/>Ember</a>
<a href=https://www.meteor.com/>Meteor</a>, <a href=https://babeljs.io/>Babel</a>, <a href=https://reactjs.org>React</a>, <a href=https://facebook.github.io/react-native>React Native</a>, <a href=https://cordova.apache.org>Cordova</a>, <a href=http://ionicframework.com>Ionic</a>, <a href=https://electronjs.org>Electron</a>, <a href=https://www.blynk.cc>Blynk</a>, <a href=https://firebase.google.com>Firebase</a>
<b>graphics</b>
<a href=http://www.x.org>X Windows</a>
<a href=xline.c>xline.c</a>, <a href=xline.mp4>video</a>, <a href=ximage.c>ximage.c</a>, <a href=ximage.mp4>video</a>
$ gcc xline.c -o xline -lm -lX11
<a href=http://www.oracle.com/technetwork/java/index.html>AWT, JFC, Swing</a>
<a href=JavaLine.java>JavaLine.java</a>, <a href=JavaLine.html>JavaLine.html</a>, <a href=JavaLine.mp4>video</a>
<a href=JavaImage.java>JavaImage.java</a>, <a href=JavaImage.html>JavaImage.html</a>, <a href=JavaImage.mp4>video</a>
<a href=http://www.w3.org/TR/2dcontext/>Canvas</a>
<a href=programs/canvasline.html>canvasline.html</a>, <a href=programs/canvasimage.html>canvasimage.html</a>
<a href=http://www.w3.org/TR/SVG/>SVG</a>
<a href=programs/svgline.html>svgline.html</a>
<a href=http://www.khronos.org/webgl/>WebGL</a>
<a href=programs/webglline.html>webglline.html</a>
<a href=http://threejs.org/>Three.js</a>
<a href=programs/threejsline.html>threejsline.html</a>, <a href=programs/threejsimage.html>threejsimage.html</a>, <a href=programs/threejssurf.html>threejssurf.html</a>
<a href=http://www.opengl.org/>OpenGL</a>, <a href=http://www.opengl.org/resources/libraries/glut/>GLUT</a>, <a href=http://pyopengl.sourceforge.net/>PyOpenGL</a>
<a href=glimage.c>glimage.c</a>, <a href=glimage.mp4>video</a>, <a href=glsurf.c>glsurf.c<a/>, <a href=glsurf.mp4>video</a>
$ gcc glsurf.c -o glsurf -lm -lGL -lGLU -lglut
<a href=glimage.py>glimage.py</a>, <a href=glsurf.py>glsurf.py<a/>
<a href=http://renderman.pixar.com/view/non-commercial-renderman>RenderMan</a>, <a href=http://cgkit.sourceforge.net/>cgkit</a>
<a href=http://www.vtk.org/>VTK</a>, <a href=http://www.vtk.org/Wiki/VTK/Writing_VTK_files_using_python>pyvtk</a>, <a href=http://docs.enthought.com/mayavi/mayavi/>Mayavi</a>
<a href=http://www.openvdb.org/>OpenVDB</a>
<a href=https://unity3d.com>Unity</a>, <a href=https://www.unrealengine.com>Unreal</a>, <a href=https://docs.blender.org/manual/en/latest/physics/index.html>Blender Physics</a> <a href=physics.mp4>video</a>
<b>audio, video</b>
<a href=http://www.libsdl.org/>SDL</a>, <a href=http://www.pygame.org/>Pygame</a>
<a href=http://www.openframeworks.cc/>openFrameworks</a>, <a href=http://code.google.com/p/openframeworks-python-bindings/downloads/list>ofpython</a>
<a href=http://www.html5rocks.com/en/features/multimedia>HTML5</a>
<a href=https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API>Web Audio</a>
<a href=programs/audioline.html>audioline.html</a>
<a href=http://www.webrtc.org/>WebRTC</a>
<a href=../input_devices/video.html>video.html</a> <a href=../input_devices/video.mp4>video</a>
<a href=https://bitbucket.org/xoseperez/fauxmoesp/src/master>FauxmoESP</a>
<b>VR/AR/MR/XR</b>
<a href=https://www.w3.org/TR/webxr>WebXR</a> <a href=https://github.com/stewdio/THREE.VRController>THREE.VRController</a>
<a href=https://developers.google.com/ar>ARCore</a>
<a href=https://forge.autodesk.com/categories/arvr>Forge</a>
<a href=https://github.com/google-ar/three.ar.js>three.ar.js</a> <a href=https://github.com/mozilla/three.xr.js>three.xr.js</a>
<a href=https://github.com/jeromeetienne/AR.js>AR.js</a>
<a href=https://github.com/aframevr/aframe>A-Frame</a>
<b>math</b>
<a href=http://www.netlib.org/>Netlib</a>, <a href=http://www.netlib.org/blas/>BLAS</a>, <a href=http://www.netlib.org/linpack/>LINPACK</a>, <a href=http://www.netlib.org/lapack/>LAPACK</a>
<a href=http://www.mathworks.com/>MATLAB</a>, <a href=http://www.gnu.org/software/octave/>Octave</a>
<a href=http://www.numpy.org/>NumPy</a>, <a href=http://www.scipy.org/>SciPy</a>
<a href=http://matplotlib.org/>matplotlib</a>, <a href=http://stanford.edu/~mwaskom/software/seaborn/>Seaborn</a>
<a href=programs/line.py>line.py</a> (<a href=matline.mp4>video</a>), <a href=programs/lines.py>lines.py</a> (<a href=matlines.mp4>video</a>), <a href=programs/image.py>image.py</a>, <a href=programs/images.py>images.py</a> (<a href=matimage.mp4>video</a>), <a href=programs/surface.py>surface.py</a> (<a href=surface.mp4>video</a>)
<a href=https://www.continuum.io>Anaconda</a>, <a href=http://ipython.org/>IPython</a>, <a href=http://jupyter.org>Jupyter</a>
<a href=programs/plot.ipynb>plot.ipynb</a> <a href=programs/plot.html>plot.html</a>
<a href=http://www.r-project.org/>R</a>, <a href=http://rpy.sourceforge.net/>RPy</a>, <a href=http://ggplot2.org/>ggplot2</a>
<a href=http://www.wolfram.com/>Mathematica</a>, <a href=http://docs.sympy.org/>SymPy</a>, <a href=http://www.sagemath.org/>Sage</a>, <a href=https://www.scilab.org>Scilab</a>
<a href=http://mathjs.org/>Math.js</a>, <a href=https://www.npmjs.org/package/science>Science.js</a>, <a href=https://www.npmjs.org/package/numbers>numbers.js</a>
<a href=https://plot.ly>Plotly</a> <a href=https://plot.ly/python/>Python</a> <a href=https://plot.ly/javascript>JavaScript</a>
<a href=programs/plotline.html>plotline.html</a>
<a href=http://d3js.org/>D3</a>, <a href=http://www.jqplot.com/>jqPlot</a>, <a href=http://www.highcharts.com/>Highcharts</a>, <a href=http://www.chartjs.org>Chart.js</a>, <a href=http://mpld3.github.io>mpld3</a>
<a href=http://deeplearning.net/software/theano>Theano</a>, <a href=https://pytorch.org>PyTorch</a>, <a href=https://keras.io>Keras</a>, <a href=https://www.tensorflow.org>TensorFlow</a>, <a href=https://js.tensorflow.org>TensorFlow.js<a>
<a href=http://www.rle.mit.edu/dspg/pub_books.html>signal processing</a>, <a href=http://fab.cba.mit.edu/classes/MAS.864>mathematical modeling</a>
<a href=https://gitlab.cba.mit.edu/pub/pi/blob/master/README.md><b>performance</b></a>
<a href=https://gitlab.cba.mit.edu/pub/pi/-/blob/master/Python/pi.py>pi.py</a>, <a href=https://gitlab.cba.mit.edu/pub/pi/-/blob/master/Python/numpi.py>numpi.py</a>
<a href=http://cython.org>Cython</a>
<a href=http://numba.pydata.org>Numba</a>
<a href=https://gitlab.cba.mit.edu/pub/pi/-/blob/master/Python/numbapi.py>numbapi.py</a>
<a href=https://pub.pages.cba.mit.edu/pi/JavaScript/pi.html>pi.html</a>
<a href=https://v8.dev>JIT</a>, <a href=https://developer.mozilla.org/en-US/docs/Web/JavaScript/Typed_arrays>typed arrays</a>, <a href=https://developer.mozilla.org/en-US/docs/Web/Guide/Performance/Using_web_workers>web workers</a>, <a href=https://developer.mozilla.org/en-US/docs/Web/API/FileReader>file readers</a>
<a href=https://gitlab.cba.mit.edu/pub/pi/-/blob/master/C/pi.c>pi.c</a>
<a href=https://www.openmp.org>OpenMP</a>
<a href=https://gitlab.cba.mit.edu/pub/pi/-/blob/master/OpenMP/mppi.c>mppi.c</a>
<a href=https://www.mpich.org>MPICH</a> <a href=https://www.open-mpi.org>Open MPI</a> <a href=http://mvapich.cse.ohio-state.edu>MVAPICH</a>
<a href=https://gitlab.cba.mit.edu/pub/pi/-/blob/master/MPI/mpipi2.c>mpipi2.c</a>
<a href=https://mpi4py.readthedocs.io/en/stable/>mpi4py</a> <a href=https://gitlab.cba.mit.edu/pub/pi/-/blob/master/Python/mpipi2.py>mpipi2.py</a>
<a href=https://gitlab.cba.mit.edu/pub/pi/-/blob/master/CUDA/cudapi.cu>cudapi.cu</a>
<a href=https://developer.nvidia.com/cuda-zone>CUDA</a>, <a href=https://mathema.tician.de/software/pycuda>PyCUDA</a>
<a href=https://www.khronos.org/opencl>OpenCL</a>, <a href=https://mathema.tician.de/software/pyopencl>PyOpenCL</a>
<a href=https://www.khronos.org/registry/webgl/specs/latest/2.0-compute>compute shaders</a> <a href=http://fab.cba.mit.edu/classes/864.17/people/amandaghassaei/CAs>GPUMath.js</a>
<b>deploy</b>
<a href=https://aws.amazon.com>Amazon AWS</a> <a href=https://aws.amazon.com/ec2>EC2</a> <a href=https://aws.amazon.com/lambda>Lambda</a> <a href=https://github.com/aws/aws-parallelcluster>ParallelCluster</a> <a href=remote.html>remote desktop</a>
<a href=https://cloud.google.com>Google Cloud</a>
<a href=https://azure.microsoft.com>Microsoft Azure</a>
<a href=https://www.digitalocean.com>DigitalOcean</a>
<a href=https://www.linode.com>Linode</a>
<a href=https://www.heroku.com>Heroku</a>
<a href=https://www.docker.com>Docker</a> <a href=https://kubernetes.io>Kubernetes</a> <a href=https://docs.gitlab.com/ee/topics/autodevops/>Auto DevOps</a>
<b>security</b>
attack surfaces
transparency vs obscurity
penetration testing
patching
end-to-end encryption
<b>assignment</b>
<i>individual assignment:</i>
write an application that interfaces a user with an
<a href=../input_devices/index.html>input</a> &/or <a href=../output_devices/index.html>output</a> device that you made
<i>group assignment:</i>
compare as many tool options as possible