Gauging Interest in a Class on High-Performance Computing

Hello, I have been using the Dallas Makerspace for some time now and wish to give back to the community. My background is in scientific computing. I have some ideas for a class to teach people how to improve the performance of their code.

In general, this class would be useful to those with some prior programming experience and who write code which requires at least 15 minutes to run or which runs for more time than it took to write. Developers of embedded systems may also find this useful to solve a complex problem with a small computer.

Please indicate any topics in the poll which interest you, and any comments or suggestions are welcome. :slight_smile:

  • Computational Complexity and Time Requirements
  • Comparison of parallel processing paradigms and hardware
  • A practical guide to finding the bottleneck in your code
  • Shared Memory Parallel Processing (aka SMP/Multithreading)
  • Building a job queue server (SLURM)
  • Building a virtual machine environment (ESXi)

0 voters

In what operating environment does your program run?

  • Windows
  • Mac
  • Linux
  • Cross-Platform
  • Mobile
  • Web
  • Embedded Systems

0 voters

What is your preferred development language?

  • C/C++
  • Python
  • Java
  • Ruby
  • Perl
  • Javascript
  • Other

0 voters

Finally, if you have any specific questions on code. I will look at anything less than 100 lines.

4 Likes

I’m thinking of teaching a class on OpenCV or Machine Learning, not sure if there is interest, Im worried newbies wont be able to setup their computer, maybe I could use Jupyter Notebooks or something.

HTML? Do you mean JavaScript?

1 Like

Ya, it is difficult to determine what level a class should be at considering we have members from all sorts of backgrounds. I may be interested in the class on machine learning myself.

And yes, I think Javascript makes more sense. I intended for that to mean anything which is the front-end or back-end of a webpage. I edited the poll. The edit removed your vote for question 3. I will try to avoid having to edit the polls again.

have you met Kirk? He is my roommate, he is a dev at bank of america and is teaching a 6 month class on ruby on rails and javascript, he has an orientation monday, you should check it out on the calendar.

5 Likes

I saw the class in the events page. Was making a long class well-received? Most of the classes I have seen were single-session, and it appeared to me that was the easiest way to get traction.

For my own development, I am learning GPU computing and machine learning next. Although I would like to learn some web development later on.

definitely don’t teach us O(n). You can cover the basics of it within 5 minutes in the “practical guide” way too many college professors spends hours teaching us inscrutable O(n) algebra trick questions. (I might have flunked that class twice because of inductive reason formatting)

1 Like

My experience with big-O notation was similar. I remember long lists of names of algorithms with their complexities listed, O(n), O(n^2) O(n log n). It was not relevant at the time I learned it since anything I programmed at the time ran instantly. Later on I found that big-O notation is useful to explain why something is important or is not important.

Here is an example written in C (Sorry I cannot format the code more in a blockquote.):

int numItems = 100;
int i, j;

//Loop 1
for(i=0; i < numItems; i++)
{
//Do Something
}

//Loop 2
for(i=0; i < numItems; i++)
for(j=0; j < numItems; j++)
{
//Do Something
}

Loop 1 counts through 0 to n and does something each time. Therefore Loop 1 has complexity O(n). Loop 2 is a loop inside a loop. It has complexity O(n^2).
We can conclude that Loop 2 takes far more time than Loop 1, and the time for Loop 1 is insignificant. However, Loop 2 may take an insignificant amount of time as well. We used n=100, so that means n^2= 10,000. But our computer performs a billion operations per second. In this example, even Loop 2 does not take a noticeable amount of time.

This is the kind of logic we would go through in what I called “Computational Complexity and Time Requirements”. Simple math with maybe a little algebra to determine if something matters or not. Or you can just do it the practical way and have the computer time/profile for you.

If you are using python, all you need to do is show them how to create virtual environments and then spend maybe 5 minutes on how importing works. In my personal experience, the vast majority of issues that beginners face with python has to do with python’s weird programming environment and its importing.

1 Like