Thanks for taking my coding course!

Last week you were part of the first group to take a course using CodeCosmos, I hope you enjoyed it as much as I enjoyed teaching it! I'd love to hear more about what you liked most, and what you think I can improve on for future courses. If you have any feedback, questions, want any advice, etc. just email me at bob@redivi.com and I'll get back to you as soon as I can. I really am interested in helping you all out, and I'll make the time to do it even though I'm a few thousand miles away here in San Francisco.

T-Shirts

To finish up your t-shirt or poster projects, you should be able to login at codecosmos.com. When you have a design that you're ready to print, just email me the code. I'll have to do a little work on my end to translate the code into a form that's suitable for printing (a higher quality output than Processing.js, basically), and then I'll get back to you as soon as I can with a couple options for you to choose from (t-shirt sizes, colors, etc.). If you'd like a poster instead of a shirt, let me know. If you think what you've made is really cool, I'd be happy to help you set up an online shop to sell your designs.

I know I owe a few of you advice on how to tweak what you have so far, and I'll be getting to that real soon. That's next on my list!

What you learned

You spent a week programming in the JavaScript programming language, which is a professional programming language that people get paid to write code in. JavaScript is most commonly used by web developers to make web pages interactive. If you've used Facebook, Twitter, Google, Gmail, Yahoo, or any basically any other popular website you've used code that was written in JavaScript. JavaScript is becoming popular even outside of the web browser, so becoming familiar with it is a very useful computer skill.

The code you wrote was all in JavaScript, but you were using the Processing.js library for all of the projects. If you had a lot of fun with the kind of code that we were writing, I'd suggest taking a closer look at Processing.js, and also Processing, which is the desktop programming language that Processing.js is based on. The Processing language is mostly used by artists and designers, but the concepts you'll learn are very applicable to other fields.

It might not have seemed like it, but the computer science and math you were using in the lab are actually quite advanced!

Here's a short list of what I can think of off the top of my head:

Coordinate Geometry
Drawing lines and shapes on our canvas is an application of coordinate geometry. Basically, all of computer graphics relies heavily on coordinate geometry.
Linear Algebra
While we weren't explicitly treating the x and y components of our coordinates as column vectors, we really were doing a lot of linear algebra. Again, pretty much all of computer graphics sits on top of linear algebra, and you were implementing a lot of this stuff on your own, instead of relying on higher-level vector operations! Any time we were manipulating the transformation matrix, whether with translate, rotate, or scale, we were using linear algebra to do an affine transformation of the coordinate system. Sounds pretty advanced, but not too hard for you all!
Physics & Euler Integration
When you made that ball bounce with simulated gravity, that was a simulation of some basic Newtonian Physics using Euler's Method, which is something you might learn more about in a college-level differential equations course.
Variables, Functions, Conditionals and Recursion
In Computer Science, these are some of the trickiest concepts to get a handle on when you're starting out!

Where to learn more

If you're interested to learn more, there's a TON of free content available for you to learn from online! I'd also be happy to help you along the way, whether you're struggling with a particular concept or just need some help finding what you want.

Here are some of my favorites:

Khan Academy
Great basic programming content. Their environment is very similar to CodeCosmos (but more polished and easier to use!). Their "expert" level is certainly below college level, but it's a great place to start.
Codecademy
More great basic programming content. Their stuff is more practical than Khan Academy. You can learn how to make interactive web pages, and they have some tracks for server-side programming languages too. More vocational than college level computer science, but another great place to start.
Udacity
College-level courses at your own pace. I highly recommend taking a good look here, there are some really fantastic courses. I've taken a few myself, such as Artificial Intelligence for Robotics and Interactive 3D Graphics.
Coursera
The downside is that the courses have a fixed schedule, but there is some great content here from beginner to grad school level. I'd probably save Coursera for last, as their focus seems to be more about theory than practice. I've taken a number of these myself (Five great Computer Science courses on Coursera).

Videos from class

If you missed any of the videos, want to share them, or simply just watch them again, here's a list of what I showed in class.

Thanks again!

Please don't hesitate to get in touch! I really would like to hear from you and am happy to help out any way that I can.

–bob

Twitter: @etrepum
Facebook: etrepum
Blog: bob.ippoli.to