SoftIntegration Solutions

 Middle and High Schools
 Colleges and Universities
 Enterprise
 Embedded Scripting
 Plotting/Numerical Computing

Solutions for Colleges and Universities

Originated as a teaching and learning tool, Ch was designed and implemented for novice and inexperienced computer users to get a quick start in computer programming with applications in engineering and science. Reasons for learning and teaching computer programming in C as well as reasons for using Ch to teach C/C++ can be found here.

Ch is a very high-level language environment (VHLL). It allows students to focus on program structure and algorithm instead of tedious compile/link distraction. SoftIntegration delivers a powerful computing environment for teaching courses as listed below:

"Ch is an excellent environment for research and teaching. I use it for research and teaching on mechatronics and control. To me the main advantage of an interpreter is portability. Ch allows C programs to be executed portably across different platforms. In addition, a major advantage of Ch is its user-friendly mathematical and graphical infrastructure. Getting that in C, C++ or Java requires assembling a large collection of libraries from a variety of sources, each with its own quirks. I am very impressed with the salient graphical plotting capabilities in Ch. They are easy to use and very useful for applications in engineering and science."

-- Professor David Auslander
   University of California at Berkeley

  1. Introduction to computer programming and its applications
  2. C language with C99 features and introduction to C++
  3. Applied numerical analysis with 2D/3D graphical plotting
  4. Mechanisms design and analysis
  5. Image processing and computer vision in OpenCV
  6. Computer network, TCP/IP, and socket/Winsock programming
  7. Feedback control systems
  8. Math Statistics
  9. Mechatronics and robotics
  10. Shell programming and script language
  11. Database and ODBC for database programming
  12. Computer graphical user interface (GUI) in X11/Motif, Windows, GTK+ and graphics in OpenGL
  13. Web design and CGI programming in C/C++
Unlike other proprietary mathematical software packages such as MATLAB® and Mathematica®, Ch conforms to the open ISO C/C++ standards supported by the entire computer industry. For example, Ch supports all new features for numerical computing in the latest C99 standard. As a superset of C with classes in C++, advanced programming in Ch will allow students to learn fundamentals such as structured programming and object-based programming with data abstraction and information hiding. The advanced numerical and visualization features in Ch allow students to solve practical problems in engineering and science rapidly. The latest technology and knowledge gained by students are applicable in industry in decades to come.

An inceasging number of universities have adopted Ch for their teaching and research programs. Instructors at universities are using SoftIntegration software to:


"Ch is very much appreciated by beginners and teachers alike. For the first time in my career, I was able to introduce pointers to complete beginners without it seeming unnatural."

-- Professor Jym Feat
   Paris8 University, France

  • Improve the quality of instruction
    Ch is user-friendly with brevity and simplicity. The Ch command shell is especially suitable for interactive presentations using a laptop in a classroom with a quick system response. With an interactive computing environment, instructors can relieve students from tedious compile/link/execute/debug cycles, and focus on teaching the knowledge and problem solving skills. Ch is especially suitable for developing interactive instructional contents in engineering and science for distance learning as shown in online scientific numerical computing and visualization.

  • Improve research programs
    Ch is an effective tool for many research projects. At universities, teaching and research are integrated. Graduate students with strong programming experience in C/C++/Ch will be beneficial to many research projects. Ch bridges the gap between system programming and script computing in C, there are ample research opportunities for exploration of its applications in many different fields.

  • Saving cost
    Unlike proprietary and expensive mathematical software packages, Ch and many toolkits and packages are free for academic use. Ch contains all capabilities, features, and simplicity of other proprietary mathematical software packages. Ch conforms to open ISO C/C++ standards. Your existing legacy C programs can readily run in Ch across different platforms without investments in different hardware platforms and system administration. Your research results, algorithms and code written in Ch can be easily shared with your colleagues and students who may use different computer platforms.

  • Easy and Convenience

    "I am a professor at the University of Tennessee and teach a freshman-level class in data structures that uses C as the base language. I use the Ch interpreter to interactively demonstrate C statements and C code snippets. Ch is wonderful and exactly what I was looking for."

    -- Brad Vander Zanden, Professor, University of Tennessee

    Ch will make beginners' learning experience more enjoyable. Ch will display with many diagnostic warning and helpful error messages, instead of cryptic arcane error messages such as "segmentation fault" and "bus error" using C/C++ compilers and linkers. As a superset of C with classes in C++, there is a large body of existing user and code base. Sample C code in many textbooks can readily be executed interactively in Ch for teaching and learning.

An example of interactive execution of commands below, valid in both Windows and Unix, demonstrates how Ch can be used as a calculator for scientific numerical computing and visualization.

   
   > 56*85.5-sin(1.5)               // calculate 56*85.5-sin(1.5) 
   4787.002505
   > array double x[36]
   > linspace(x, -3.1416, 3.1416)   // assign array x with values from -3.1416 to 3.1416 linearly
   > x                              // display array x
   -3.1416 -2.9621 -2.7826 -2.6030 -2.4235 -2.2440 -2.0645 -1.8850 -1.7054 -1.5259
   -1.3464 -1.1669 -0.9874 -0.8078 -0.6283 -0.4488 -0.2693 -0.0898 0.0898 0.2693
   0.4488 0.6283 0.8078 0.9874 1.1669 1.3464 1.5259 1.7054 1.8850 2.0645 2.2440
   2.4235 2.6030 2.7826 2.9621 3.1416
   > sin(x)                         // calculate sin(x) for array x   
   0.0000 -0.1786 -0.3514 -0.5129 -0.6579 -0.7818 -0.8806 -0.9511 -0.9909 -0.9990
   -0.9749 -0.9195 -0.8346 -0.7228 -0.5878 -0.4339 -0.2660 -0.0896 0.0896 0.2660
   0.4339 0.5878 0.7228 0.8346 0.9195 0.9749 0.9990 0.9909 0.9511 0.8806 0.7818
   0.6579 0.5129 0.3514 0.1786 -0.0000
   > plotxy(x, sin(x), "Ch plot", "xlabel", "ylabel")
   
plotxy.png
The above plot displayed in Windows can be copied and pasted in Word for documentation and project report.

The example below illustrates a difficult concept about how pointers in C are related to the memory they point to.

   
   > int i, *p, **p2     // i is an integer, p pointer, p2 double pointer
   > i=10                // i is assigned value 10
   10
   > p=&i                // p points to address of i
   00D847C0
   > *p                  // the memory pointed by p has value 10 
   10
   > p2=&p               // p2 points to address of p
   00D84D30
   > **p2                // the memory pointed by the pointer at p2 has value 10
   10
   >
   
Commands below illustrate how struct and computational arrays can be handled interactively.
   
   > struct tag {int i; double d;} s
   > s.i =20
   20
   > s.d=30
   30.0000
   > s
   .i = 20
   .d = 30.0000
   >sizeof(struct tag)
   16       // Note: because of alignment, size of tag is 16, not 12
   > array double A[3][3], C[3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9}
   > A= 2*C
   > A
   2.0000 4.0000 6.0000
   8.0000 10.0000 12.0000
   14.0000 16.0000 18.0000
   > A= 2*C*transpose(C) * inverse(C)
   > A
   64.0000 0.0000 32.0000
   128.0000 0.0000 -64.0000
   256.0000 0.0000 128.0000
   >